3点(两个角度方位)获取角度差(夹角)
本帖最后由 fangmin723 于 2024-6-24 11:35 编辑3点(两个角度方位)获取角度差(夹角)
顾名思义,通过拾取的3个点或者两个角度,来获取角度差【0,2π】或夹角【0,π】
;;;3点(两角度方位)获取角度差(夹角) by 702099480@qq.com 2024.6.21
(defun C:TT()
(progn
;;说明:两个角度方位的角度差
;;参数:ang1:角度方位1
;;参数:ang2:角度方位2
;;返回:角度差
(defun GetAng(ang1 ang2)
(if (< ang2 ang1)
(setq ang (+ ang2 (- (* pi 2) ang1)))
(setq ang (- ang2 ang1))
)
)
;;说明:获取点1、点2位于角点的角度差
;;参数:pt1:点1
;;参数:angpt:角点
;;参数:pt2:点2
;;返回:角度差
(defun Get3PtAng(pt1 angpt pt2)
(setq ang1 (angle angpt pt1) ang2 (angle angpt pt2))
(GetAng ang1 ang2)
)
;;说明:两个角度方位的夹角
;;参数:ang1:角度方位1
;;参数:ang2:角度方位2
;;返回:夹角
(defun GetSpaceAng(ang1 ang2)
(setq ang (GetAng ang1 ang2))
(if (> ang pi) (- (* pi 2) ang) ang)
)
;;说明:获取点1、点2位于角点的夹角
;;参数:pt1:点1
;;参数:angpt:角点
;;参数:pt2:点2
;;返回:夹角
(defun Get3PtSpaceAng(pt1 angpt pt2)
(setq ang1 (angle angpt pt1) ang2 (angle angpt pt2))
(getspaceang ang1 ang2)
)
;;说明:弧度转角度
;;参数:ang:弧度值
;;返回:角度值
(defun ToDeg(ang) (* 180.0 (/ ang pi)))
;;说明:角度转弧度
;;参数:ang:角度值
;;返回:弧度值
(defun ToRad(ang) (* pi (/ ang 180.0)))
)
(and
(setq startpoint (getpoint "\n拾取起始点"))
(setq angpoint (getpoint startpoint"\n拾取角点"))
(setq endpoint (getpoint angpoint"\n拾取终止点"))
(princ
(strcat
"\n角度差:"
(rtos (ToDeg (Get3PtAng startpoint angpoint endpoint)) 2 2)
"°\n夹 角:"
(rtos (ToDeg (Get3PtSpaceAng startpoint angpoint endpoint)) 2 2)
"°"
)
)
)
(prin1)
)
角度差可能与夹角相等,具体看起始点(起始方位角)或结束点(终止方位角)相对方位
如下图所示:
注意:文件内代码与上面给出代码相同
本帖最后由 fangmin723 于 2024-6-24 08:14 编辑
大佬们用爱发电,有人却去收电费 大佬们用爱发电,有人却去收电费。
我就点赞 暂时用不到,大佬的作品点赞支持下 暂时用不到,大佬的作品丰富,助我良多,特来支持! 暂时用不到,大佬的作品丰富,助我良多,特来支持支持! 感谢大佬的分享!
暂时用不到,大佬的作品丰富,助我良多,特来支持! 不错的资料,存一下
页:
[1]