已经A点,B点的坐座标,能计算现在给出C点的座标,能求出C点是否跟AB在同一直线上呢?

茂一茂 2008-10-28 04:36:04
已经A点,B点的坐座标,能计算现在给出C点的座标,能求出C点是否跟AB在同一直线上呢?

...全文
172 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
alphameng 2008-10-31
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dlyme 的回复:]
假设A坐标(x1,y1)、B坐标(x2,y2)、C坐标(x3,y3)
只要判断 (y2-y1)*(x3-x1)==(y3-y1)*(x2-x1)是否成立就可以
[/Quote]

good~~~
jxufeng 2008-10-31
  • 打赏
  • 举报
回复
这个太容易了,还有判断点在线段上,以及离线段的距离等等
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 jolly_ye 的回复:]
比如(1,1)(2,1)(1,2)
等式成立,但就不共线啊.
[/Quote]
(y2-y1)*(x3-x1)==(1-1)*(1-1)==0
(y3-y1)*(x2-x1)==(2-1)*(2-1)==1
等式不成立所以三点不共线,哪里不对了???
jolly_ye 2008-10-29
  • 打赏
  • 举报
回复
比如(1,1)(2,1)(1,2)
等式成立,但就不共线啊.

  • 打赏
  • 举报
回复
[Quote=引用 8 楼 jolly_ye 的回复:]
应考虑(y2-y1)==0 ||(y3-y1)==0 ||(x3-x1)==0||(x2-x1)==0
的情况
[/Quote]
没什么需要特殊考虑的,(y2-y1)*(x3-x1)==(y3-y1)*(x2-x1)这个等式包含这几种情况
jolly_ye 2008-10-29
  • 打赏
  • 举报
回复
if ((y2-y1)!=0 &&(y3-y1)!=0 &&(x3-x1)!=0&&(x2-x1)!=0 )
{ if ((y2-y1)*(x3-x1)==(y3-y1)*(x2-x1)) return YES;
else return NO;}
else
{if((y2-y1)==0&&(y3-y1)==0) return YES;
if((x3-x1)==0&&(x2-x1)==0) return YES;
return NO;
}
jolly_ye 2008-10-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dlyme 的回复:]
假设A坐标(x1,y1)、B坐标(x2,y2)、C坐标(x3,y3)
只要判断 (y2-y1)*(x3-x1)==(y3-y1)*(x2-x1)是否成立就可以
[/Quote]

应考虑(y2-y1)==0 ||(y3-y1)==0 ||(x3-x1)==0||(x2-x1)==0
的情况
cool_hnu 2008-10-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dlyme 的回复:]
假设A坐标(x1,y1)、B坐标(x2,y2)、C坐标(x3,y3)
只要判断 (y2-y1)*(x3-x1)==(y3-y1)*(x2-x1)是否成立就可以
[/Quote]
good
alexhilton 2008-10-29
  • 打赏
  • 举报
回复
A(x1, y1), B(x2, y2), C(x0, y0)
CA = (x0-x1, y0-y1), CB = (x0-x2, y0-y2)
if crossProduct( CA, CB ) == 0 then
A, B, C are colinear.
else
they are not.

int crossProduct( a, b ) {
return a.x*b.y - a.y*b.x;
}
Good Luck!
iyori 2008-10-29
  • 打赏
  • 举报
回复
我靠最简单的判断两个K值哦
jolly_ye 2008-10-29
  • 打赏
  • 举报
回复
呵呵,不要意思,各位,是我弄错了。

chattelg 2008-10-29
  • 打赏
  • 举报
回复
如果只是判断在直线上,而不是线段上的话,4楼的答案没错,就是判断这个行列式

x1 y1 1
x2 y2 1
x3 y3 1

是不是=0,也就是2楼的那个公式。
sweetyhappy 2008-10-29
  • 打赏
  • 举报
回复
判断(y2-y1)*(x3-x1)==(y3-y1)*(x2-x1)是否成立就够了!
lanseshenhua 2008-10-28
  • 打赏
  • 举报
回复
还有一种麻烦点的方法,就是可以判断ABC三点构成的三角形的面积是否为零!
Super.Jiju 2008-10-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 anybbs 的回复:]
数学上怎么判断,程序上就怎么判断
[/Quote]
注意一下边界情况
  • 打赏
  • 举报
回复
假设A坐标(x1,y1)、B坐标(x2,y2)、C坐标(x3,y3)
只要判断 (y2-y1)*(x3-x1)==(y3-y1)*(x2-x1)是否成立就可以
anybbs 2008-10-28
  • 打赏
  • 举报
回复
数学上怎么判断,程序上就怎么判断

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧