明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1366|回复: 7

[函数] 如何求多段线前进方向的左角??

[复制链接]
发表于 2011-6-23 02:46 | 显示全部楼层 |阅读模式
我正在写一个自动生成断面的图程序,突然到这里遇到困难了~
比如一个已知三个点 A B C 组成的角∠ABC 这个角度如何求
因为工程上需要显示的是前进方向的左角 也就是说∠ABC=360°-∠CBA
1.我想到过余弦定理可是只能算出来COS∠ABC 的数据 如何反算出∠ABC ?
2.如果利用angle函数,我尝试过了 每个象限的公式都不一样,难道还要做4个判断 判断出象限?
3.小弟跪求有没有什么函数可以根据A B C三点坐标直接求出∠ABC,同时如果顺序颠倒C B A的角度∠CBA应该正好为360°减去∠ABC
发表于 2011-6-23 09:38 | 显示全部楼层
已知3点 根据余弦定理可以求得其中一个角


cosC = (a^2 + b^2 - c^2) / (2·a·b)
cosB = (a^2 + c^2 - b^2) / (2·a·c)
cosA = (c^2 + b^2 - a^2) / (2·b·c)
发表于 2011-6-23 09:53 | 显示全部楼层
回复 4041186888 的帖子

;;;计算3三点逆时针角度
(defun 3PAngle (p1 p2 p3 / ans a b an)
   (setq ans (list(angle p1 p2)(angle p3 p2))
  a (apply 'min ans)
  b (apply 'max ans)
  an (- b a))
   (if (= a (car ans))
     an
     (- (* 2 PI) an)
   )
)
 楼主| 发表于 2011-6-23 22:03 | 显示全部楼层
回复 不死猫 的帖子

你还是没有回答我的问题,我也能算出来COSB的值,可是怎么算出来B的角度?
发表于 2011-6-23 22:19 | 显示全部楼层

建议调用cad的cal命令后,直接做赋值操作.

cal命令可以减少自己定义函数,我们只需要它的返回值.
 楼主| 发表于 2011-6-23 23:09 | 显示全部楼层
是我自己太他妈的二了
复习了一晚上三角函数 结果才发现 我一直用(angle a b)和(angle b c)在计算 换成(angle b a)一减就完事了
另外感谢3楼 你的方法很大启发
czc520hx 该用户已被删除
发表于 2012-4-18 11:06 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2013-3-20 10:26 | 显示全部楼层
三楼的办法帮我解决了大问题,谢谢了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-5 14:19 , Processed in 0.254760 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表