找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2901|回复: 17

[求助] 判断逆顺时针的方法

[复制链接]

已领礼包: 19个

财富等级: 恭喜发财

发表于 2014-11-25 11:57:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
已知三点,有什么好的方法判断时针方向吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-11-25 12:14:25 | 显示全部楼层
剖砖引玉下,用向量的叉积判断

p2-p1 的向量 叉积 p3-p2的向量,结果>0,逆时针,否则顺时针。

点评

虽然不懂...但用着挺爽....  详情 回复 发表于 2014-11-25 17:56
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2476个

财富等级: 金玉满堂

发表于 2014-11-25 17:56:24 | 显示全部楼层
newer 发表于 2014-11-25 12:14
剖砖引玉下,用向量的叉积判断

p2-p1 的向量 叉积 p3-p2的向量,结果>0,逆时针,否则顺时针。

虽然不懂...但用着挺爽....{:soso_e128:}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-11-25 18:05:53 来自手机 | 显示全部楼层
用trans 转换也是一个道理
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 7223个

财富等级: 富甲天下

发表于 2014-11-25 18:17:14 | 显示全部楼层
http://4d-technologies.com/techcenter/
--->Geometry--->
GE_WhatPoly   Find the direction of the polygon (if Cw or CCw)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2014-11-25 19:51:05 | 显示全部楼层
贴一个纯数学的方法,求N边形面积的(不只是三角形),正值逆时针,负值顺指针

  1. (defun XD::Pnts:Area ( pts / pts1 iSum p0 p1 p2 x0 x1 x2 y0 y1 y2) )
  2.   (setq pts1 pts)
  3.   (setq iSum 0)
  4.   (setq p0 (car pts)
  5.         x0 (car p0)
  6.         y0 (cadr p0)
  7.   )
  8.   (while (cdr pts1)
  9.     (setq p1 (car pts1)
  10.           x1 (car p1)
  11.           y1 (cadr p1)
  12.           p2 (cadr pts1)
  13.           y2 (cadr p2)
  14.           x2 (car p2)
  15.           iSum (+ iSum (- (* x1 y2) (* x2 y1)))
  16.           pts1 (cdr pts1)
  17.     )
  18.   )
  19.   (/ (+ iSum (- (* (caar pts1) y0) (* x0 (cadar pts1)))) 2.0)
  20. )


命令: (XD::Pnts:Area (list p1 p2 p3))
196154.0

命令:
命令: (XD::Pnts:Area (list p1 p3 p2))
-196154.0
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-11-25 19:56:30 来自手机 | 显示全部楼层
Lispboy 发表于 2014-11-25 19:51
贴一个纯数学的方法,求N边形面积的(不只是三角形),正值逆时针,负值顺指针



如果一个闭合pline圆会是什么情况呢:)

点评

正常,它主要看你给的这些点的顺序。  详情 回复 发表于 2014-11-25 20:06
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2014-11-25 20:06:52 | 显示全部楼层
st788796 发表于 2014-11-25 19:56
如果一个闭合pline圆会是什么情况呢

正常,它主要看你给的这些点的顺序。

点评

有点问题,绘制单段ARC的 Pline,然后用 pedit -> close 闭合,这是查看顶点数为 2 !这个 pline 是顺时针还是逆时针呢?  详情 回复 发表于 2014-11-25 20:48
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2014-11-25 20:07:56 | 显示全部楼层
再提供个方法:

XDRX_API,现成的

命令: (xdrx_points_area p1 p2 p3)
196154.0
命令: (xdrx_points_area p1 p3 p2)
-196154.0

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2014-11-25 20:16:06 | 显示全部楼层
方法还有,使用ARX GE库,直接构造AcGeCircArc2d,用它下面的isClockWise()方法。代码如下:

  1. (defun XD::Pnts:IsClockWise (p1 p2 p3 / ge tf)
  2.   (if (setq ge (xdge::constructor "kCircArc2d" p1 p2 p3))
  3.     (progn
  4.       (setq tf (xdge::getpropertyvalue ge "IsClockWise"))
  5.       (xdge::free ge)
  6.     )
  7.   )
  8.   tf
  9. )

命令: (XD::PNTS:ISCLOCKWISE p1 p2 p3)
nil

命令: (XD::PNTS:ISCLOCKWISE p1 p3 p2)
T
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2014-11-25 20:22:13 | 显示全部楼层
我发现好多方法啊,如泉涌啊,晓东通用LISP函数库已经有现成的了:

命令: (XD::Pnts:IsClockWise (list p1 p3 p2))
T
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2014-11-25 20:36:43 | 显示全部楼层
还没完,用3点求凸度的方法,判断,+逆时针

  1. ;|
  2. 3点求凸度方法判断逆顺时针,+ 逆时针
  3. |;
  4. (defun XD::Pnts:IsClockWise (p1 p2 p3)
  5.   (setq an (/ (- (angle p2 p3) (angle p1 p2)) 2.0))
  6.   (< (/ (sin an)(cos an)) 0)
  7. )


命令: (XD::PNTS:ISCLOCKWISE p1 p3 p2)
T
命令: (XD::PNTS:ISCLOCKWISE p1 p2 p3)
nil
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2014-11-25 20:41:54 | 显示全部楼层
本帖最后由 Lispboy 于 2014-11-25 20:42 编辑

还有啊,3点求平面法线,Z值+ 逆时针

  1. ;|
  2. 3点求平面法线方法判断,Z值+ 逆时针
  3. |;
  4. (defun XD::Pnts:IsClockWise (p1 p2 p3)
  5.   (setq nrm (xdrx_points_normal p1 p2 p3))
  6.   (< (last nrm) 0)
  7. )


命令: (XD::PNTS:ISCLOCKWISE p1 p2 p3)
nil
命令: (XD::PNTS:ISCLOCKWISE p1 p3 p2)
T
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2014-11-25 20:47:34 | 显示全部楼层
上面用法线法的用ARX 几何库的实现方法

  1. (defun XD::Pnts:IsClockWise (p1 p2 p3)
  2.   (if (setq ge (xdge::constructor "kPlane" p2 p1 p3))   ;;构造AcGePlane几何实体
  3.      (progn
  4.        (setq nrm (xdge::getpropertyvalue ge "normal")) ;;Normal方法
  5.        (xdge::free ge)
  6.        (< (last nrm) 0.0)
  7.      )
  8.   )
  9. )


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 859个

财富等级: 财运亨通

发表于 2014-11-25 20:48:50 | 显示全部楼层
Lispboy 发表于 2014-11-25 20:06
正常,它主要看你给的这些点的顺序。

有点问题,绘制单段ARC的 Pline,然后用 pedit -> close 闭合,这是查看顶点数为 2 !这个 pline 是顺时针还是逆时针呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-15 04:18 , Processed in 0.465698 second(s), 59 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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