下面是我的思路,尽量用Matlab语言叙述的,方便你作图.
假设:(x1,y1,z1),(x2,y2,z2),(x3,y3,z3),(x0,y0,z0),R,(A,B,C,D)均已知.
法向量(A,B,C)归一化后,设单位向量K=[A B C]'/sqrt(A^2+B^2+C^2).设单位向量I=[x1-x0 y1-y0 z1-z0]'/sqrt((x1-x0)^2+(y1-y0)^2+(z1-z0)^2),设J=K × I(Matlab里的向量叉乘表示为J=cross(K,I)),则亦为单位向量.且I,J和K满足右手定则,可立为新坐标系.
则T=[I J K] 为正交矩阵,而且是坐标旋转的矩阵,把[1 0 0]'变为I,[0 1 0]'变为J,[0 0 1]'变为K.
给定一个角度Theta,如下计算式
[x0 y0 z0]'+T*[R*cos(Theta) R*sin(Theta) 0]'
即为该圆的参数方程,把Theta取个0到2*pi的循环即可画出此圆.