- type
- TPlane3D = record
- a,b,c,d: Single;
- end;
- TVector3D = record
- x,y,z: Single;
- end;
- ...
- function CommonPoint(P1, P2, P3: TPlane3D; var Pt: TVector3D): Boolean;
- var x: Single;
- begin
- Result:=False;
- //-=> Berechnung der Z-Koordinate
- x:=p1.a*(p2.b*p3.c-p2.c*p3.b)+
- p1.b*(p2.c*p3.a-p2.a*p3.c)+
- p1.c*(p2.a*p3.b-p2.b*p3.a);
- if(x=0)then Exit;
- Pt.Z:=-(p1.a*(p2.b*p3.d-p2.d*p3.b)+
- p1.b*(p2.d*p3.a-p2.a*p3.d)+
- p1.d*(p2.a*p3.b - p2.b*p3.a)
- )/x;
- //-=> Berechnung der Y-Koordinate
- x:=p1.b*p2.a-p1.a*p2.b;
- if(x=0)then Exit;
- Pt.Y:=((-p1.c*p2.a + p1.a*p2.c)*Pt.Z + p1.a*p2.d - p1.d*p2.a)/x;
- //-=> Berechnung der X-Koordinate
- if(p1.a=0)then Exit;
- Pt.X:=(- p1.b*Pt.Y - p1.c*Pt.Z - p1.d)/p1.a;
- Result:=True;
- end;