evangelioncy 发表于 2014-3-6 16:59

如何判断某些点是否在一个线段上

比如说,已知两点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?

evangelioncy 发表于 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点,以此类推!
具体操作:aa=; det(aa)

evangelioncy 发表于 2014-3-15 15:18

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

谢谢,我想到办法了

牛小贱 发表于 2014-3-15 18:40

evangelioncy 发表于 2014-3-15 15:18
谢谢,我想到办法了

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

evangelioncy 发表于 2014-3-17 09:26

牛小贱 发表于 2014-3-15 18:40
不是我所提到的?如果不是,请楼主共享一下自己的经验!

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

牛小贱 发表于 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

也可以试试求点到直线的距离,这样算的话,程序兼容性估计能再好些。
页: [1]
查看完整版本: 如何判断某些点是否在一个线段上