Re: [運算] 怎算出兩條線有沒有交叉? 交點已回收
借用部分程式
: % 先求兩條線方程式的係數
: % m*x -y=m*b(1)-b(2)
: % Line1Coeff(1)*x+Line1Coeff(2)*y=Line1Coeff(3)
: % 第1條線
: Line1Coeff(1)=(a(2)-b(2))/(a(1)-b(1)) ;
: Line1Coeff(2)=-1 ;
: Line1Coeff(3)=Line1Coeff(1)*b(1)-b(2) ;
: % 第2條線
: Line2Coeff(1)=(c(2)-d(2))/(c(1)-d(1)) ;
: Line2Coeff(2)=-1 ;
: Line2Coeff(3)=Line2Coeff(1)*d(1)-d(2) ;
如果有直線方程式
把座標點代進去,在直線同側會得到相同正負的結果
就可以簡單判斷是否有交點
C1 = (Line2Coeff(1)*a(1)+Line2Coeff(2)*a(2)-Line2Coeff(3)) *
(Line2Coeff(1)*b(1)+Line2Coeff(2)*b(2)-Line2Coeff(3));
C2 = (Line1Coeff(1)*c(1)+Line1Coeff(2)*c(2)-Line1Coeff(3)) *
(Line1Coeff(1)*d(1)+Line1Coeff(2)*d(2)-Line1Coeff(3));
若 C1 , C2 均為負 則無交點
--
下面這樣的判斷方式如果要大量運算
光是求 min max 就爆炸了
: % 判斷交點是否在範圍內
: if IntersectX>=min(x1) && IntersectX<=max(x1) &&...
: IntersectY>=min(y1) && IntersectY<=max(y1) &&...
: IntersectX>=min(x2) && IntersectX<=max(x2) &&...
: IntersectY>=min(y2) && IntersectY<=max(y2)
: 'intersect'
: else
: 'no intersection'
: end
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.208.41
推
02/11 18:52, , 1F
02/11 18:52, 1F
→
02/11 18:53, , 2F
02/11 18:53, 2F
→
02/11 18:55, , 3F
02/11 18:55, 3F
推
02/11 20:01, , 4F
02/11 20:01, 4F
推
02/11 21:26, , 5F
02/11 21:26, 5F
推
02/11 22:17, , 6F
02/11 22:17, 6F
→
02/11 22:18, , 7F
02/11 22:18, 7F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 3 篇):