作者firejox (Tangent)
看板Prob_Solve
标题Re: [问题] 请问三点共线
时间Sun Apr 17 19:30:11 2011
※ 引述《chchwy (mat)》之铭言:
: Point a,b,c;
: int pos = a.x*b.y + b.x*c.y + c.x*a.y;
: int neg = a.x*c.y + b.x*a.y + c.x*b.y;
: if(pos==neg) {
: // They're on the same line
: }
: 请问在网路上我看到这种做法,可以判断三点共线。
: 但是我不太明白为什麽可以这样做?
: 我个人猜测应该是跟外积有关系
: 但是又式子又推不出来 冏
取两段即可
( a.y - b.y ) ( b.y - c.y )
--------------- = ---------------
( a.x - b.x ) ( b.x - c.x )
相乘
( a.y - b.y ) * ( b.x - c.x ) = ( b.y - c.y ) * ( a.x -b.x )
展开
a.y*b.x - a.y*c.x - b.y*b.x + b.y*c.x
= b.y*a.x - b.y*b.x - c.y*a.x + c.y*b.x
移向就可以得到
a.x*b.y + b.x*c.y + c.x*a.y = a.y*b.x + b.y*c.x + c.y*a.x
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.240.128.241