马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
 - ;向量差积
- (defun v^v (u v)
- (list
- (- (* (cadr u) (caddr v)) (* (cadr v) (caddr u)))
- (- (* (car v) (caddr u)) (* (car u) (caddr v)))
- (- (* (car u) (cadr v)) (* (car v) (cadr u)))
- )
- )
- ;单位向量
- (defun unit (v)
- (mapcar '(lambda (x) (/ x (distance '(0.0 0.0 0.0) v))) v)
- )
- ;四点是否共面
- (defun Coplanar-p (p1 p2 p3 p4)
- (
- (lambda (n1 n2)
- (equal (v^v n1 n2) '(0.0 0.0 0.0) 1e-8)
- )
- (v^v (mapcar '- p1 p2) (mapcar '- p1 p3))
- (v^v (mapcar '- p1 p2) (mapcar '- p1 p4))
- )
- )
- ;点是否在三角形内部
- (defun ptinsidetriangle-p (pt p1 p2 p3)
- (if
- (and
- (Coplanar-p pt p1 p2 p3)
- (not
- (or
- (inters pt p1 p2 p3)
- (inters pt p2 p1 p3)
- (inters pt p3 p1 p2)
- )
- )
- (not
- (or
- (> (+ (distance pt p1) (distance pt p2))
- (+ (distance p3 p1) (distance p3 p2))
- )
- (> (+ (distance pt p2) (distance pt p3))
- (+ (distance p1 p2) (distance p1 p3))
- )
- (> (+ (distance pt p3) (distance pt p1))
- (+ (distance p2 p3) (distance p2 p1))
- )
- )
- )
- )
- T
- nil
- )
- )
- ;点是否在线上
- (defun ptonline-p (pt p1 p2)
- (equal (distance p1 p2)
- (+ (distance pt p1) (distance pt p2))
- 1e-7
- )
- )
点是否在三角形边上
 - ;点是否在三角形边上
- (defun ptontriangle-p (pt p1 p2 p3)
- (if
- (or
- (equal (distance p1 p2)
- (+ (distance pt p1) (distance pt p2))
- 1e-7
- )
- (equal (distance p2 p3)
- (+ (distance pt p2) (distance pt p3))
- 1e-7
- )
- (equal (distance p1 p3)
- (+ (distance pt p1) (distance pt p3))
- 1e-7
- )
- )
- T
- nil
- )
- )
|