马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
本帖最后由 newer 于 2025-1-23 18:08 编辑
XDRX API 有个函数 xdrx-geom-3p2arc ,根据三点,获取圆弧信息
如果3点组成逆时针弧
(xdrx-geom-3p2arc p2 pin p1)
(T (3637.41 842.633 0.0) 836.058 0.334996 2.67516)
如果3点组成顺时针弧
(xdrx-geom-3p2arc p1 pin p2)
(nil (3637.41 842.633 0.0) 836.058 0.334996 2.67516)
获取的圆弧信息数据是按逆时针弧返回的,第一个T或者NIL反映时针方向
下面用XDGE几何库,来模拟实现上面函数xdrx-geom-3p2arc
 - (defun xd::geom:3p2arc (pstart pmid pend / garc sang eang #center #radius #isclockwise)
- (if (setq garc (xdge::constructor "kCircArc2d" pstart pmid pend))
- (progn
- (xdrx-getpropertyvalue
- garc "center" "radius" "isclockwise")
- (setq sang (xdrx-vector-angleonplane
- (xdrx-vector-normalize
- (mapcar '-
- pstart
- (list (car #center) (cadr #center) 0.0)
- )
- )
- '(0 0 1.0)
- )
- eang (xdrx-vector-angleonplane
- (xdrx-vector-normalize
- (mapcar '-
- pend
- (list (car #center) (cadr #center) 0.0)
- )
- )
- '(0 0 1.0)
- )
- )
- (if #isclockwise
- (list nil #center #radius eang sang)
- (list t #center #radius sang eang)
- )
- )
- )
- )
 - Command: (XD::GEOM:3P2ARC p1 pin p2)
- (nil (3637.41 842.633) 836.058 0.334996 2.67516)
- Command: (XD::GEOM:3P2ARC p2 pin p1)
- (T (3637.41 842.633) 836.058 0.334996 2.67516)
|