明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2663|回复: 4

求助: 如何判断一个环的顺时针与逆时针??

[复制链接]
发表于 2005-7-15 16:46:00 | 显示全部楼层 |阅读模式
求助: 如何判断一个环的顺时针与逆时针??
发表于 2005-7-15 16:57:00 | 显示全部楼层
(setq ast (cdr (assoc 50 (entget aab))))
  (setq sst (cdr (assoc 51 (entget aab))))
  (setq r (cdr (assoc 40 (entget aab))))
  (setq zhongxing (cdr (assoc 10 (entget aab))))
  (setq t0 (- sst ast))
       (cond ((< t0 0)
             (setq s1 (* (/ (+ 6.28 t0) 2) (* r r)))
      (setq s2 (/ (* (sin (+ 6.28 t0)) (* r r)) 2))
       ))
       (cond ((> t0 0)
             (setq s1 (* (/ t0 2) (* r r)))
      (setq s2 (/ (* (sin t0) (* r r)) 2))
              ))
 楼主| 发表于 2005-7-16 08:44:00 | 显示全部楼层
请楼上的大侠能否详细的解释???
发表于 2005-7-17 22:00:00 | 显示全部楼层

;; ! ***************************************************************************
;; ! GE_WhatPoly
;; ! ***************************************************************************
;; ! Function : Find the direction of the polygon (if Cw or CCw)
;; ! Argument : ptlist - list of points forming the polygon
;; ! Returns  :
;; !            1 - clockwise
;; !           -1 - counterclockwise
;; !            0 - Cannot be determined
;; ! Updated  : September 19, 1998
;; ! (C) 1999-2004, Four Dimension Technologies, Bangalore
;; ! e-mail   : rakesh.rao@4d-technologies.com
;; ! Web      : www.4d-technologies.com
;; ! ****************************************************************************

(defun GE_WhatPoly (ptlist / nverts cnt area tmp pt1 pt2)
  (setq cnt    0
 nverts (length ptlist)
 area   0.0
  ) ;_ Endsetq
  (while (< cnt (1- nverts))
    (setq pt1  (nth cnt ptlist)
   pt2  (nth (1+ cnt) ptlist)
   area (+ area (* (cadr pt1) (car pt2)))
   cnt  (1+ cnt)
    ) ;_ Endsetq
  ) ;_ Endwhile
  (setq pt1  (nth (1- nverts) ptlist)
 pt2  (nth 0 ptlist)
 area (+ area (* (cadr pt1) (car pt2)))
 cnt  0
 tmp  0.0
  ) ;_ Endsetq
  (while (< cnt (1- nverts))
    (setq pt1 (nth cnt ptlist)
   pt2 (nth (1+ cnt) ptlist)
   tmp (+ tmp (* (cadr pt2) (car pt1)))
   cnt (1+ cnt)
    ) ;_ Endsetq
  ) ;_ Endwhile
  (setq pt1  (nth 0 ptlist)
 pt2  (nth (1- nverts) ptlist)
 tmp  (+ tmp (* (cadr pt1) (car pt2)))
 area (* 0.5 (- area tmp))
  ) ;_ Endsetq
  (cond ((< area 0.0) (setq area -1))
 ((> area 0.0) (setq area 1))
 (t (setq area 0))
  ) ;_ Endcond
  area
) ;_ Enddefun

发表于 2005-7-19 22:11:00 | 显示全部楼层
或者你去根据内角去判断
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-17 18:29 , Processed in 0.163290 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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