声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1735|回复: 13

[编程技巧] 如何判断某些点是否在一个线段上

[复制链接]
发表于 2014-3-6 16:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
比如说,已知两点A(2,2)、B(8,8),AB连线构成直线,给定其他点c(1,2) d(3,4) e(5,7)  f(5,5) g(1,1)。如何判断c、d、e、f、g是否在AB线段上。(注意:g点在AB线段的延长线上,不能算在AB线上)如何做才能判断点在AB线段上??  求高手帮忙解决!谢谢! 急!!!!
回复
分享到:

使用道具 举报

发表于 2014-3-6 17:16 | 显示全部楼层
楼主可以尝试一下diff这个函数,以前的时候,记得貌似可以,具体的忘了。楼主可以写个小程序试一下。help diff?

点评

赞成: 5.0
赞成: 5
  发表于 2014-3-16 23:07

评分

1

查看全部评分

 楼主| 发表于 2014-3-6 17:41 | 显示全部楼层
牛小贱 发表于 2014-3-6 17:16
楼主可以尝试一下diff这个函数,以前的时候,记得貌似可以,具体的忘了。楼主可以写个小程序试一下。help d ...

diff不是求导吗....直线方程求导不是斜率吗?这该怎么用??
发表于 2014-3-6 18:25 | 显示全部楼层
本帖最后由 牛小贱 于 2014-3-6 18:30 编辑
evangelioncy 发表于 2014-3-6 17:41
diff不是求导吗....直线方程求导不是斜率吗?这该怎么用??

是的。我当时做的时候,就是根据斜率做的,不过,具体怎么做的,很久以前的事了忘了。也可以这样:将两点A(2,2)、B(8,8)与C点,进行求矩阵的行列式,如果行列式等于零,即det==0,则该点在AB直线上,同理,再判断A(2,2)、B(8,8)和d点,以此类推!
具体操作:
  1. aa=[x1,y1,z1;x2,y2,z2;x3,y3,z3]; det(aa)
复制代码

点评

赞成: 5.0
如果还有其他方法,还请大家补充!!  发表于 2014-3-19 09:18
赞成: 5
解答很到位!!!!  发表于 2014-3-18 18:29
赞成: 5
很到位!!32个赞!!  发表于 2014-3-16 23:07

评分

1

查看全部评分

回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2014-3-15 15:18 | 显示全部楼层
牛小贱 发表于 2014-3-6 18:25
是的。我当时做的时候,就是根据斜率做的,不过,具体怎么做的,很久以前的事了忘了。也可以这样:将两点 ...

谢谢,我想到办法了
发表于 2014-3-15 18:40 | 显示全部楼层
evangelioncy 发表于 2014-3-15 15:18
谢谢,我想到办法了

不是我所提到的?如果不是,请楼主共享一下自己的经验!

点评

赞成: 5.0
赞成: 5
  发表于 2014-3-15 22:31
 楼主| 发表于 2014-3-17 09:26 | 显示全部楼层
牛小贱 发表于 2014-3-15 18:40
不是我所提到的?如果不是,请楼主共享一下自己的经验!

ab线段,c、d为需要判断的点,首先判断c、d点x的取值范围是否在ab之间,再通过判断ac与ab的斜率是否相等,这样就可以判断了

评分

2

查看全部评分

发表于 2014-3-17 09:30 | 显示全部楼层
evangelioncy 发表于 2014-3-17 09:26
ab线段,c、d为需要判断的点,首先判断c、d点x的取值范围是否在ab之间,再通过判断ac与ab的斜率是否相等 ...

奥,就是我之前说的根据斜率计算的嘛,只是我忘记怎么做的了,呵呵。谢谢分享!!
发表于 2014-3-21 00:11 | 显示全部楼层
也可以试试求点到直线的距离,这样算的话,程序兼容性估计能再好些。

评分

2

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-25 00:35 , Processed in 0.063889 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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