newer 发表于 2025-1-22 16:44:48

(XDGE几何库应用)三点获取圆弧信息

本帖最后由 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)








页: [1]
查看完整版本: (XDGE几何库应用)三点获取圆弧信息