如何判断一个点在区域中
VBA程序有没有类似于C语言中的PtInRegion的函数,我是用一个闭合多段线围成一个区域,然后我想判断一个点是否在这个区域中,应该如何才能做到这一点呢? <p>判断点是否在多边形内有两种数学方法(可以在网上查一下).</p><p>这里有个lisp的函数,可以改为VBA的:</p><p>(defun PT_InOrOut ( pt_list pt / rt n i j va va_count)<br/> (setq i 0<br/> va_count 0<br/> rt nil<br/> )<br/> (setq n (length pt_list))<br/> (repeat (- n 1)<br/> (setq va (- (angle pt (nth i pt_list)) (angle pt (nth (+ 1 i) pt_list))))<br/> (cond<br/> ((> va pi)(setq va (- va pi)))<br/> ((< va (* -1 pi))(setq va (+ va pi)))<br/> );cond<br/> (setq va_count (+ va_count va))<br/> (setq i (1+ i))<br/> )<br/> (setq va (- (angle pt (nth i pt_list)) (angle pt (nth 0 pt_list))))<br/> (cond<br/> ((> va pi) (setq va (- va pi)))<br/> ((< va (* -1 pi)) (setq va (+ va pi)))<br/> );cond<br/> (setq va_count (+ va_count va))<br/> ;<br/> (setq rt "ON")<br/> (if (< (abs (- (abs va_count) pi)) 0.000001)<br/> (setq rt "IN") ;'t<br/> (setq rt "OUT") ;'nil<br/> );if</p><p> rt<br/>)</p><p>3种返回值:</p><p>"IN"</p><p>"ON"</p><p>"OUT"</p><p></p>
页:
[1]