三个球面交点的严格表达式

来源:互联网 发布:python list 拆分 编辑:程序博客网 时间:2024/05/17 21:46
(x-x1)^2+(y-y1)^2+(z-z1)^2=r1^2  (1)
(x-x2)^2+(y-y2)^2+(z-z2)^2=r2^2  (2)
(x-x3)^2+(y-y3)^2+(z-z3)^2=r3^2  (3)


(2)-(1):
(x2-x1)*x+(y2-y1)*y+(z2-z1)*z=-(A2-A1)/2 ; Ai=ri^2-xi^2-yi^2-zi^2
(3)-(1):
(x3-x1)*x+(y3-y1)*y+(z3-z1)*z=-(A3-A1)/2 ; Ai=ri^2-xi^2-yi^2-zi^2


Xij=xi-xj;
Yij=yi-yj;
Zij=zi-zj;  [i=1,2,3]


Ai1=-(Ai-A1)/2; [i=2,3]


X21*x+Y21*y+Z21*z=A21
X31*x+Y31*y+Z31*z=A31


x=[(A21*Y31-A31*Y21)+(Y21*Z31-Y31*Z21)*z]/D;
y=[(A31*X21-A21*X31)+(X31*Z21-X21*Z31)*z]/D;
D=X21*Y31-Y21*X31;


x=B0+B1*z;                       (4)
y=C0+C1*z;                       (5)


B0=(A21*Y31-A31*Y21)/D;
B1=(Y21*Z31-Y31*Z21)/D;
C0=(A31*X21-A21*X31)/D;
C1=(X31*Z21-X21*Z31)/D;


(4)&(5)---->(1):
E*z^2+2*F*z+G=0;


E=B1^2+C1^2+1;
F=B1*(B0-x1)+C1*(C0-y1)-z1;
G=(B0-x1)^2+(C0-y1)^2+z1^2-r1^2;


z=[-F+(F^2-E*G)^(1/2)]/E or z=[-F-(F^2-E*G)^(1/2)]/E


x=B0+B1*z;
y=C0+C1*z;
z=[-F+(F^2-E*G)^(1/2)]/E or  z=[-F-(F^2-E*G)^(1/2)]/E
0 0
原创粉丝点击