明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3770|回复: 11

如何判断一点与一直线的位置关系-上方,下方,线上?

  [复制链接]
发表于 2004-2-27 20:33:00 | 显示全部楼层 |阅读模式
如何判断一点与一直线的位置关系-上方,下方,线上?


有这样的函数么?


望高手指点.
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2004-2-27 20:42:00 | 显示全部楼层
(defun c:test( / ent pt pt2)


(vl-load-com)


(setq ent (car (entsel "Select a line...")))


(setq pt (getpoint "ick a point:"))


(setq pt2 (vlax-curve-getClosestPointTo ent pt))


(if (equal pt pt2)


         (princ "点在线上!")


         (princ (angle pt2 pt))


)


(princ)


)
发表于 2004-2-28 08:08:00 | 显示全部楼层
呵呵,点到为止
 楼主| 发表于 2004-2-28 16:09:00 | 显示全部楼层
谢谢meflying 还有别的办法么?
发表于 2004-2-28 16:49:00 | 显示全部楼层
你想做什么?搜集所有方法?
 楼主| 发表于 2004-2-29 17:48:00 | 显示全部楼层
想知道更简单的办法,难道不能再有别的办法么?
发表于 2004-2-29 20:06:00 | 显示全部楼层
如实是为找到跟简单的方法(不是写出程序),那就是讨论了,你自己也应该发表一些看法。。。


如果只是让别人给你写这样的程序,我想至少你应该先说明一下先写的这个程序有什么问题再让人写另外的方法的吧,方法的复杂简单,对你来说都是一样的,反正是别人写的,只要实现功能不就可以了?
发表于 2004-3-1 08:09:00 | 显示全部楼层
;; Tony Tanzillo.
;; (vector-side <origin> <direction> <point> )
;; Returns an integer code indicating position of <point>
;; in relation to the directed vector whose endpoints are
;; <origin> and <direction>.
;; Result Meaning
;; -1 Point is to the right of vector.
;; 0 Point is on (colinear with) vector
;; 1 Point is to the left of vector.
;; usage : (vector-side (getpoint) (getpoint) (getpoint)) (defun VECTOR-SIDE (V1 V2 P / R)
(setq R (- (* (- (car V2) (car V1)) (- (cadr P) (cadr V1)))
(* (- (cadr V2) (cadr V1)) (- (car P) (car V1)))
)
)
(cond ((equal R 0.0 1e-8) 0)
(t (fix (/ (abs R) R)))
)
)
 楼主| 发表于 2004-3-1 20:40:00 | 显示全部楼层
meflying 你说"讨论"是对的,只有讨论大家才能有更好的兴趣,更快的提高,大家是来学习,其实并不是只是为了来看高手们的表演....我发起话题并不是要谁为我写程序,.就是为了讨论...为了学习...谁有兴趣,或者谁有看法谁就自愿发表....我发表与不发表看法,是我自己的事情, 我并没有邀请谁来支配我. 其实,作为超级斑竹应该做的是提高大家的学习或者讨论的积极性,并不是针对某个成员的只言片语来浪费版面.
发表于 2004-3-3 06:18:00 | 显示全部楼层
ljcgq发表于2004-3-1 20:40:00meflying  你说\"讨论\"是对的,只有讨论大家才能有更好的兴趣,更快的提高,大家是来学习,其实并不是只是为...
  1. ;;; 返回点到直线距离
  2. ;;;返回值:点到直线的距离,点在线段的左(上)侧为负值, 在右(下)侧为正值。;
  3. ;;;方向根据给定的起始点和终止点定。
  4. ;;; Request distance from a point(p0) to a line(p1 p2).
  5. (defun ptoln (p0 p1 p2 / x1 y1 x2 y2 c1 c2 c3)
  6.    (setq  x1 (car p1)
  7.   y1 (cadr p1)
  8.   x2 (car p2)
  9.   y2 (cadr p2)
  10.   c1 (- y2 y1)
  11.   c2 (- x1 x2)
  12.   c3 (- (* x2 y1) (* x1 y2))
  13.    )
  14.    (/ (+ (* c1 (car p0)) (* c2 (cadr p0)) c3)
  15.          (sqrt (+ (* c1 c1) (* c2 c2)))
  16.    )
  17. )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-10-1 21:35 , Processed in 0.199725 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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