Lguangc200007
幼苗
共回答了19个问题采纳率:84.2% 举报
下面是我的思路,尽量用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的循环即可画出此圆.
1年前
追问
10
gugong001
举报
谢谢,计算式不太懂,这个计算式和参数方程是什么关系?参数方程不是应该是x=f(t),y=f(t),z=f(t),t=?
举报
Lguangc200007
设空间旋转矩阵 T=[T11 T12 T13 T21 T22 T23 T31 T32 T33]为已知。圆心坐标(x0,y0,z0)为已知,圆半径R为已知,则 x(t)=x0+(T11*R*cos(t)+T12*R*sin(t)) y(t)=y0+(T21*R*cos(t)+T22*R*sin(t)) z(t)=z0+(T31*R*cos(t)+T32*R*sin(t)) 即为参数方程。