注册 登录
明经CAD社区 返回首页

skg123的个人空间 http://www.mjtd.com/?334888 [收藏] [复制] [分享] [RSS]

日志

<转>数学公式及函数

热度 4已有 1144 次阅读2015-9-11 17:32 |系统分类:应用| 数学

;;;*********************
;; No.2  数值符号 函数  
;;;*********************
(defun aySign (fNumber / retResult)
(cond
((> fNumber 0.0) retResult 1)
((= fNumber 0.0) retResult 0)
((< fNumber 0.0) retResult -1)
);end_cond
);end_defun

;;;********************************
;;; No.3-1 角度转换函数 (度->弧度) 
;;;********************************
(defun ayDtoR (deg / r)
(setq r (* deg (/ PI 180.0)))
);end_defun

;;;********************************
;;; No.3-2 角度转换函数 (弧度->度) 
;;;********************************
(defun ayRtoD (rad / d)
(setq d (* rad (/ 180.0 PI)))
);end_defun

;;;********************************
;;; No.3-3 角度格式化函数 (°' ")  
;;;********************************
(defun ayDMS (Rad / Str1)
  (setq Str1 (angtos Rad 1 4))
  (setq Str1 (vl-string-subst "%%d" "d" Str1));28°5'20"
);end_defun

;;;********************************
;;; No.3-4 角度格式化函数 (度分秒) 
;;;********************************
(defun ayDMSN (Rad / Str1 Deg dd mm ss Sgn)
(setq Deg (* (/ 180.0 PI) Rad))
(if (< Deg 0.0) (setq Sgn -1) (setq Sgn 1))
(setq Deg (abs Deg))
(setq dd (fix Deg))
(setq Deg (* (- Deg dd) 60.0))
(setq mm (fix Deg))
(setq ss (* (- Deg mm) 60.0))
(setq Str1 (strcat (if (= Sgn 1) "" "-") (itoa dd) "."
  (if (< mm 10.0) "0" "") (itoa mm)
(if (< ss 10.0) "0" "") (itoa (fix (* 100 ss))))
);end_setq
);end_defun

;;;**************************************
;;; No.3-5 角度转换函数 (度分秒->弧度)   
;;;**************************************
(defun ayDMSNtoR (numDMS / fDMS Sgn dd mm SS1 deg rad)
(setq fDMS numDMS)
(if (< fDMS 0.0) (setq Sgn -1) (setq Sgn 1))
(setq fDMS (abs fDMS))
(setq dd (fix fDms))
(setq mm (fix (- (* fDms 100.0) (* dd 100.0))))
(setq SS1 (fix (- (* fDms 10000.0) (+ (* dd 10000.0) (* mm 100.0)))))
(setq deg (+ dd (/ mm 60.0) (/ SS1 3600.0)))
(setq rad (* deg (/ PI 180.0) Sgn))
);end_defun



;;;----------------------------------------------------;
;;;功能: 定义三点的行列式,即三点之倍面积               ;
;;;输入: 三点P1,P2,P3                                  ;
;;;输出: 这三点形成的三角形的面积的2倍,符号指示方向。 ;
;;;----------------------------------------------------;
(defun C:tt ()
(setq p1 (getPoint "\n请选择左侧O2圆心点:"))
(setq p2 (getPoint "\n请选择左侧O2圆心点:"))
(setq p3 (getPoint "\n请选择左侧O2圆心点:"))
 (setq p ( - (* (- (car p2) (car p1)) (- (cadr p3) (cadr p1)))
     (* (- (car p3) (car p1)) (- (cadr p2) (cadr p1)))
  ))
)

;;;----------------------------------------------------;
;;;功能: 用海伦公式(Heron's formula)求三角形面积       ;
;;;输入: 三角形的三个边长a,b,c                         ;
;;;输出: 三角形面积                                    ;
;;;----------------------------------------------------;
(defun TRI:Area (a b c / p)
  (setq p (* 0.5 (+ a b c)))
  (sqrt (* p (- p a) (- p b) (- p c)))
)

;;;----------------------------------------------------;
;;;功能: 计算已知空间三点的三角形面积                  ;
;;;输入: 空间三点 P1,P2,P3                             ;
;;;输出: 三角形面积                                    ;
;;;----------------------------------------------------;
(defun TRI:Area3D (p1 p2 p3 / v1 v2 d1 d2 d3)
  (setq v1 (mapcar '- p2 p1))
  (setq v2 (mapcar '- p3 p1))
  (setq d1 (MAT:Det2 (car   v1) (cadr  v1) (car   v2) (cadr  v2)))
  (setq d2 (MAT:Det2 (cadr  v1) (caddr v1) (cadr  v2) (caddr v2)))
  (setq d3 (MAT:Det2 (caddr v1) (car   v1) (caddr v2) (car   v2)))
  (* 0.5 (sqrt (+ (* d1 d1) (* d2 d2) (* d3 d3))))
)

路过

雷人
4

握手

鲜花

鸡蛋

刚表态过的朋友 (4 人)

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-3-29 22:54 , Processed in 0.105792 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部