乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 136|回复: 9

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

[复制链接]

33

主题

253

帖子

9

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
385
发表于 2004-2-27 20:33:00 | 显示全部楼层 |阅读模式
如何判断一点与一直线的位置关系-上方,下方,线上?
有这样的函数么?
望高手指点.
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 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 &quotick a point:"))
(setq pt2 (vlax-curve-getClosestPointTo ent pt))
(if (equal pt pt2)
         (princ "点在线上!")
         (princ (angle pt2 pt))
)
(princ)
)
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2004-2-28 08:08:00 | 显示全部楼层
呵呵,点到为止
回复

使用道具 举报

33

主题

253

帖子

9

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
385
发表于 2004-2-28 16:09:00 | 显示全部楼层
谢谢meflying
还有别的办法么?
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2004-2-28 16:49:00 | 显示全部楼层
你想做什么?搜集所有方法?
回复

使用道具 举报

33

主题

253

帖子

9

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
385
发表于 2004-2-29 17:48:00 | 显示全部楼层
想知道更简单的办法,难道不能再有别的办法么?
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2004-2-29 20:06:00 | 显示全部楼层
如实是为找到跟简单的方法(不是写出程序),那就是讨论了,你自己也应该发表一些看法。。。
如果只是让别人给你写这样的程序,我想至少你应该先说明一下先写的这个程序有什么问题再让人写另外的方法的吧,方法的复杂简单,对你来说都是一样的,反正是别人写的,只要实现功能不就可以了?
回复

使用道具 举报

29

主题

1152

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1268
发表于 2004-3-1 08:09:00 | 显示全部楼层
;; Tony Tanzillo.
;; (vector-side    )
;; Returns an integer code indicating position of
;; in relation to the directed vector whose endpoints are
;;  and .
;;                 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)))
         )
)
回复

使用道具 举报

33

主题

253

帖子

9

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
385
发表于 2004-3-1 20:40:00 | 显示全部楼层
meflying        你说"讨论"是对的,只有讨论大家才能有更好的兴趣,更快的提高,大家是来学习,其实并不是只是为了来看高手们的表演....我发起话题并不是要谁为我写程序,.就是为了讨论...为了学习...谁有兴趣,或者谁有看法谁就自愿发表....我发表与不发表看法,是我自己的事情,                我并没有邀请谁来支配我.
         其实,作为超级斑竹应该做的是提高大家的学习或者讨论的积极性,并不是针对某个成员的只言片语来浪费版面.
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2004-3-3 06:18:00 | 显示全部楼层
  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. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-8-14 08:28 , Processed in 1.933219 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表