A本身無限長,假設B也無限長,直接求得AB的交點座標,然後再判斷該座標是否在定長線段B的內部就可以了啊
AB本身就是兩條直線,知道兩端點就可以知道其直線方程,B也是一樣,兩個方程聯立,
得到一個座標,再看該座標是否在B的定義域內就可以啊
A的兩點為(x1,y1),(x2,y2)
則A的直線方程為l1:y-y1=(y2-y1)(x-x1)/(x2-x1)
B的兩點為(x3,y3),(x4,y4)
則B的直線方程為l2:y-y3=(y4-y3)(x-x3)/(x4-x3)
聯立解出交點座標為的橫座標為:
x=(k2x3-y3-k1x1+y1)/(k2-k1)
其中k1=(y2-y1)/(x2-x1)
k2=(y4-y3)/(x4-x3)
可以推匯出來
x = ((x2 - x1) * (x3 - x4) * (y3 - y1) -
x3 * (x2 - x1) * (y3 - y4) + x1 * (y2 - y1) * (x3 - x4)) /
((y2 - y1) * (x3 - x4) - (x2 - x1) * (y3 - y4));
同理也可以推匯出y的值:
y = ((y2 - y1) * (y3 - y4) * (x3 - x1) -
y3 * (y2 - y1) * (x3 - x4) + y1 * (x2 - x1) * (y3 - y4)) /
((y2 - y1) * (y3 - y4) - (y2 - y1) * (x3 - x4));
總結:
A本身無限長,假設B也無限長,直接求得AB的交點座標,然後再判斷該座標是否在定長線段B的內部就可以了啊
AB本身就是兩條直線,知道兩端點就可以知道其直線方程,B也是一樣,兩個方程聯立,
得到一個座標,再看該座標是否在B的定義域內就可以啊
A的兩點為(x1,y1),(x2,y2)
則A的直線方程為l1:y-y1=(y2-y1)(x-x1)/(x2-x1)
B的兩點為(x3,y3),(x4,y4)
則B的直線方程為l2:y-y3=(y4-y3)(x-x3)/(x4-x3)
聯立解出交點座標為的橫座標為:
x=(k2x3-y3-k1x1+y1)/(k2-k1)
其中k1=(y2-y1)/(x2-x1)
k2=(y4-y3)/(x4-x3)
可以推匯出來
x = ((x2 - x1) * (x3 - x4) * (y3 - y1) -
x3 * (x2 - x1) * (y3 - y4) + x1 * (y2 - y1) * (x3 - x4)) /
((y2 - y1) * (x3 - x4) - (x2 - x1) * (y3 - y4));
同理也可以推匯出y的值:
y = ((y2 - y1) * (y3 - y4) * (x3 - x1) -
y3 * (y2 - y1) * (x3 - x4) + y1 * (x2 - x1) * (y3 - y4)) /
((y2 - y1) * (y3 - y4) - (y2 - y1) * (x3 - x4));
總結: