找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: hothua

[求助]:如何判断闭合曲线是顺时针还是逆时针方向

[复制链接]
发表于 2003-2-23 10:27:37 | 显示全部楼层
我试了,都求不出面积!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 192个

财富等级: 日进斗金

发表于 2003-2-23 11:29:41 | 显示全部楼层
对于这种自相交的图形怎么样才算顺时针呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2003-2-23 14:32:34 | 显示全部楼层
最初由 binbin 发布
[B]我试了,都求不出面积!! [/B]


不知道你怎么算的,下面是用XDRX_API的函数XDRX_GETAREA求的面积和周长,然后用ACAD的AREA命令验证的结果。


                               
登录/注册后可看大图


XDRX_API函数:

  1. <normalfont>
  2. 新增xdrx_getarea求HATCH实体面积功能。
  3.       
  4. 82. xdrx_getarea

  5. 功能:求AutoCAD AcDbCurve(曲线)类的面积和周长(长度)。

  6. 调用格式:(xdrx_getarea <实体图元名>)

  7. 说明:1.<实体图元名>可是AcDbCurve类的:AcDbPolyline(lwpolyline),AcDbArc,AcDbCircle,AcDbEllipse,
  8.                 AcDbSpline
  9.      2.若曲线不封闭,则把开始点和终止点连线求面积,并且返回的是曲线的长度。
  10.      
  11. 返回值:成功返回LISP表(面积 周长),失败返回NIL.            

  12. 示例:求SPLINE的面积和周长
  13.      
  14.      (if (setq en (xdrx_entsel "\n请点取一个Spline实体<退出>:" '((0 . "SPLINE"))))
  15.         (progn
  16.            (setq en (car en))
  17.            (setq info (xdrx_getarea (car en)))
  18.            (prompt (strcat "Spline的面积:" (rtos (car info) 2 2) "周长:" (rtos (cadr info) 2 2)))
  19.         )
  20.      )
  21. </normalfont>
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2003-2-26 19:50:15 | 显示全部楼层
最初由 binbin 发布
[B]看看吧 [/B]


代码肯定是没有错的

用PLINE画你的PL线,在命令行用 XDRX_GETAREA 给PL实体名参数,算算面积,看看是否能算出来?再用ACAD的AREA命令验证下试试。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-4-19 09:50:25 | 显示全部楼层
有没有在VBA 中可以没测出的该问题的方法啊?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-5-21 11:28:17 | 显示全部楼层
binbin的代码有错吧?p1到哪里去了?p1和p2应该交互轮替。不知xd的代码里iat(i)是什么函数?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

发表于 2009-10-16 23:15:26 | 显示全部楼层

有两种方法

求方向的算法有两种:
1)海螺公式
就是求多边形的面积,该算法的思想是向量的叉积是对应平行四边形的面积Cross=|A|*|B|*Sin(a),而这个Sin(a)是代表向量的转向的。只要看多边形的面积正负就知道转向了
2)凸点处向量转向
其实还是用Sin(a)来确定转向,但是这个a必须是凸点的前后两条边的向量夹角。凸点的求法比较简单,只要求得所有交点的最左边的那个就好了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

发表于 2017-6-13 18:28:41 | 显示全部楼层
(defun c:tt();绘图方向;
  (defun XL_ChaJi (XL1 XL2 / a1 b1 a2 b2 X Y Z);;;两向量叉积;
    (setq  a1(car XL1) a2(cadr XL1) a3(caddr XL1)
           b1(car XL2) b2(cadr XL2) b3(caddr XL2)
           X (sqrt (+ (* a1 a1) (* a2 a2)));向量模;
           y (sqrt (+ (* b1 b1) (* b2 b2)));向量模;
           z (- (* a1 b2) (* a2 b1));方正;
           ;|
                | a1 a2 |                                | 1   1   1 |
                |       |=a1*b2-a2*b1,完整的形式是        | a1  a2  a3|第一行是单位向量
                | b1 b2 |                                | b1  b2  b3|
          |;
           z (/ z x y))
    )
  (defun XLof2P (#p1 #p2);;;两点形成向量;
    (mapcar '(lambda(x y) (- y x)) #p1 #p2) )
  (setq p1(getpoint) p2(getpoint p1) p3(getpoint p2)
        XL1 (XLof2P P1 P2) XL2 (XLof2P P2 P3)
        Z (XL_ChaJi XL1 XL2))
  (if (> z 0)
    (princ "逆时针!")
    (princ "顺时针!"))
  (princ)
  )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-24 20:31 , Processed in 0.436523 second(s), 50 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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