3点を通る面
(0,0,0), (dx1,dy1,dz1), (dx2,dy2,dz2) を通る面を求めます。
原点を通る面ですから
x+B*y+C*z=0
となります。
dx1+B*dy1+C*dz1=0 ...(1) dx2+B*dy2+C*dz2=0 ... (2)
(1)より C=-(dx1+B*dy1)/dz1 で、(2)に代入すると
dx2+B*dy2-(dx1+B*dy1)*dz2/dz1=0
Bについて解くと
B=(dx1*dz2-dx2*dz1)/(dy2*dz1-dy1*dz2)
同じようにして、B=-(dx1+C*dz1)/dy1 を(2)に代入してCについて解くと
C=(dy1*dx2-dx1*dy2)/(dy2*dz1-dy1*dz2)
x+(dx1*dz2-dx2*dz1)/(dy2*dz1-dy1*dz2)*y+(dx2*dy1-dx1*dy2)/(dy2*dz1-dy1*dz2)*z=0
全体に dy2*dz1-dy1*dz2 をかけると
(dy2*dz1-dy1*dz2)*x+(dx1*dz2-dx2*dz1)*y+(dx2*dy1-dx1*dy2)*z=0
(x0,y0,z0), (x1,y1,z1), (x2,y2,z2) の三点を通るものは、
(dx1,dy1,dz1)=(x1-x0,y1-y0,z1-z0), (dx2,dy2,dz2)=(x2-x0,y2-y0,z2-z0) とすると、
(dy2*dz1-dy1*dz2)*x+(dx1*dz2-dx2*dz1)*y+(dx2*dy1-dx1*dy2)*z=(dy2*dz1-dy1*dz2)*x0+(dx1*dz2-dx2*dz1)*y0+(dx2*dy1-dx1*dy2)*z0
となります。