过程如下:
假设两个直线的方程为如下表示。
T=K*S+B--------------------(1)
T=MS+D---------------------(2)
点G(S1,T1),H(S2,T2) 表示的直线为:T=K*S+B
点P(S3,T3),Q(S4,T4)表示的直线为: T=M*S+D
B=T-KS --- T1-K*S1=T2-K*S2
(T1-T2)=K*S1-K*S2=K*(S1-S2)
所以:K=(T1-T2)/(S1-S2)
同理:M=(T3-T4)/(S3-S4)
知道了K,M 之后就可以确定,B,和D。
B=T1-K*S1=T1-(T1-T2)/(S1-S2)*S1=[T1*(S1-S2)-S1*(T1-T2)]/(S1-S2)
=[T1*S1-T1*S2-S1*T1+S1*T2]/(S1-S2)
=(T1*S2-S1*T2)/(S1-S2)
D=T3-M*S3 =(T3*S4-S3*T4)/(S3-S4)
这样知道了直线的方程后,就可以确定交叉点了。
假设交叉点为O(S0,T0),两条直线方程都成立
T0=K*S0+B, T0=M*S0+D
K*S0+B=M*S0+D
(K-M)*S0=(D-B)
S0=(D-B)/(K-M) =[(T3*S4-S3*T4)/(S3-S4)-(T1*S2-S1*T2)/(S1-S2)]/
[(T1-T2)/(S1-S2)-(T3-T4)/(S3-S4)]
=[(T3*S4-S3*T4)*(S1-S2)-(T1*S2-S1*T2)*(S3-S4)]/
[(T1-T2)*(S3-S4)-(T3-T4)*(S1-S2)]
=[(S1-S2)*(T3*S4-S3*T4)-(S3-S4)*(T1*S1-S1*T2)]/
[(T1-T2)*(S3-S4)-(T3-T4)*(S1-S2)]
T0=K*(D-B)/(K-M)+B=[(K*D-K*B)+B*(K-M)]/(K-M)
=[K*D-K*B+B*K-B*M]/(K-M)
=[K*D-M*B]/(K-M)
=[(T1-T2)/(S1-S2)*D-(T3-T4)/(S3-S4)*B]/
[ (T1-T2)/(S1-S2)-(T3-T4)/(S3-S4)]
=[(T1-T2)*D*(S3-S4)-(T3-T4)*B*(S1-S2)]/
[ (T1-T2)*(S3-S4)-(T3-T4)*(S1-S2)]
=[(T1-T2)* (T3*S4-S3*T4)-(T3-T4)* (T1*S2-S1*T2)]/
[(T1-T2)*(S3-S4)-(T3-T4)*(S1-S2)]
从S0,T0 的表达式来看,他们是一个对称的结果。