相关主题?
俯视图垂直但不是最近的
- ;point to line
- (defun hp:ptol (p 2p 3d / ad d pp) ; hanhphuc - 29.10.2015
- (setq ad (mapcar '(lambda (f) (apply f (mapcar ''((x) (list (car x) (cadr x))) 2p)))
- '(angle distance)
- ) ;_ end of mapcar
- d (vxv (mapcar '- p (car 2p)) (mapcar ''((f) (f (car ad))) (list cos sin)))
- pp (polar (car 2p) (car ad) d)
- ) ;_ end of setq
- (if (<= 0. d (cadr ad))
- (list (distance p pp)
- (list (car pp)
- (cadr pp)
- (if 3d
- (+ (* (/ (apply '- (mapcar 'last (reverse 2p))) (cadr ad)) d) (caddr (car 2p)))
- (caddr p)
- ) ;_ end of if
- ) ;_ end of list
- ) ;_ end of list
- ) ;_ end of if
- ) ;_ end of defun
- ;function call
- ;(hp:ptol pt lst 3d)
- ;pt= point
- ;lst= list of 2 end points
- ;example: (list p1 p2 )
- ;3d= t / nil
- ;Returns list
- ;( d ( x y z ))
- ;Where d=2d distance p to line from p1->p2
- ;(x y z) is coordinates apparently "perpendicular" from pt on line
- ;;;;example:
- ;;;(setq p1 (-131.868 17.4786 8.12106)
- ;;; p2 (-142.847 5.87031 -2.51656)
- ;;; p3 (-128.05 26.4743 2.99644)
- ;;; ) ;_ end of setq
- ;(hp:ptol p1 (list p2 p3) t)
- ;return (2.14588 (-133.611 18.7304 0.9244))
- ;(hp:ptol p1 (list p2 p3) nil)
- ;returns (2.14588 (-133.611 18.7304 8.12106))
- ;; Vector Dot Product - Lee Mac
- ;; Args: u,v - vectors in R^n
- (defun vxv ( u v )
- (apply '+ (mapcar '* u v))
- )
使用函数迭代三维多段线点集,然后关联最小距离坐标,完成 |