明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1638|回复: 1

如何判断一个点在区域中

[复制链接]
发表于 2008-2-13 00:58:00 | 显示全部楼层 |阅读模式
VBA程序有没有类似于C语言中的PtInRegion的函数,我是用一个闭合多段线围成一个区域,然后我想判断一个点是否在这个区域中,应该如何才能做到这一点呢?
发表于 2008-2-13 19:57:00 | 显示全部楼层

判断点是否在多边形内有两种数学方法(可以在网上查一下).

这里有个lisp的函数,可以改为VBA的:

(defun PT_InOrOut ( pt_list pt / rt n i j va va_count)
  (setq i 0
 va_count 0
 rt nil
  )
  (setq n (length pt_list))
  (repeat (- n 1)
    (setq va (- (angle pt (nth i pt_list)) (angle pt (nth (+ 1 i) pt_list))))
    (cond
      ((> va pi)(setq va (- va pi)))
      ((< va (* -1 pi))(setq va (+ va pi)))
    );cond
    (setq va_count (+ va_count va))
    (setq i (1+ i))
  )
  (setq va (- (angle pt (nth i pt_list)) (angle pt (nth 0 pt_list))))
  (cond
    ((> va pi) (setq va (- va pi)))
    ((< va (* -1 pi)) (setq va (+ va pi)))
  );cond
  (setq va_count (+ va_count va))
  ;
  (setq rt "ON")
  (if (< (abs (- (abs va_count) pi)) 0.000001)
    (setq rt "IN") ;'t
    (setq rt "OUT") ;'nil
  );if

  rt
)

3种返回值:

"IN"

"ON"

"OUT"

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

本版积分规则

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

GMT+8, 2024-11-26 11:59 , Processed in 0.155802 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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