- 积分
- 30316
- 明经币
- 个
- 注册时间
- 2016-9-16
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
本帖最后由 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
- ;;返回:角度差[0,2PI]
- (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
- ;;返回:夹角[0,PI]
- (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)
- )
角度差可能与夹角相等,具体看起始点(起始方位角)或结束点(终止方位角)相对方位
如下图所示:
注意:文件内代码与上面给出代码相同
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
x
评分
-
查看全部评分
|