slw7310 发表于 2014-5-21 13:06:41

已知 圆弧的半径 起始角 终止角 圆心坐标 求凸度(正负)

如题:求凸度值 及圆弧的绘制方向是“顺时针”— ,还是“逆时针“+。请各位大侠帮忙啊!!

yjtdkj 发表于 2021-6-28 11:20:27

本帖最后由 yjtdkj 于 2021-6-28 11:40 编辑

;取圆弧凸度-------------yjtdkj by 2021.06
(defun c:tt ()
(progn
(defun yj-dxf (key ename) (cdr (assoc key (entget ename))))
(defun mid (p1 p2)
      (mapcar (function (lambda (e1 e2) (* (+ e1 e2) 0.5))) p1 p2)
    )
    )
(setq en (car (entsel)))
(setq
r   (dxf 40 en)
pt1   (vlax-curve-getstartPoint en)
pt2   (vlax-curve-getEndPoint en)
ptm   (mid pt1 pt2)
len   (vlax-curve-getDistAtPoint en (vlax-curve-getEndPoint en))
cpm   (vlax-curve-getpointAtdist en (/ len 2))
dis   (distance pt1 pt2)   
h   (distance ptm cpm)
)
(setq tu (/ h (* dis 0.5)))
(setq
    a (-(cadr pt2) (cadr pt1))
    b (-(car pt1)(car pt2))
    c (-(* -1 a (car pt1))(* b (cadr pt1)))
    d1 (-(* -1 a (car cpm))(* b (cadr cpm)))
)
(cond
    ((= d1 c)
      (* tu 0)
)
((> d1 c)
      (* tu -1)
)
((< d1 c)
      (* tu 1)
)
)
)

sieben 发表于 2014-5-21 14:22:05

凸度值等于弦高除与弦长的一半,逆时针为正值,顺时针为负值

slw7310 发表于 2014-5-21 14:24:45

谢谢回复!关键是 我 如何判断已有的弧是“逆时针”还是“顺时针”?

sieben 发表于 2014-5-21 14:34:20

/// <summary>
    /// 判断1,2,3三个点的依次走向为顺时针还是逆时针走向
    /// 顺时针返回-1,逆时针返回1,点重合或在一条直线上返回0
    /// </summary>
    /// <param name="P1">第一个点</param>
    /// <param name="P2">第二个点</param>
    /// <param name="P3">第三个点</param>
    /// <returns>顺时针返回-1,逆时针返回1,点重合或在一条直线上返回0</returns>
    static public int Clockwise(Point3d P1, Point3d P2, Point3d P3)
    {
      double A = P3.Y - P1.Y;
      double B = P1.X - P3.X;
      double C = -1.0 * A * P1.X - B * P1.Y;
      double d1 = -A * P2.X - B * P2.Y;
      if (d1 == C)
      return 0;
      else if (d1 > C)
      return -1;
      else
      return 1;
    }

slw7310 发表于 2014-5-21 14:59:48

谢谢!非常感谢!

slw7310 发表于 2014-5-21 15:08:34

哎呀! 起点 终点   没有第三点啊?!!

sieben 发表于 2014-5-21 15:39:19

还有圆心呀,两点你怎么能判断时钟走向?

slw7310 发表于 2014-5-21 15:45:27

新手,请谅解!! 再请教,圆心点是P1 P2 还是P3?

sieben 发表于 2014-5-21 16:18:14

P1是起点的话,那么P3是圆心,P2是起点的话,P1是圆心

sieben 发表于 2014-5-21 16:19:03

自己测试看看更清楚
页: [1] 2
查看完整版本: 已知 圆弧的半径 起始角 终止角 圆心坐标 求凸度(正负)