三维空间中一条直线绕另一条直线旋转得到的曲面方程怎么写?
取x/2=y=z/-2处的某点A(2,1,-2),求以A为圆心,AB为半径的球面方程β。
然后求变点后垂直于x/2=y=z/-2的平面α。
然后联立平面α方程和球面β方程的消去参数T就是最终答案。
Ps:一般来说就是得到一个单叶的双曲面(既不垂直也不相交),也可能是一个圆锥(相交但不垂直),也可能是一个平面挖出一个圆盘区域(垂直但不相交)或者一个平面(垂直且相交)。
对应于扩展数据的功能代码
void RotateArbitraryAxis(d3dx matrix * pOut,D3DXVECTOR3* axis,float theta)
{
D3DXVec3Normalize(轴,轴);浮动u =轴->;x;浮动v =轴->;y;浮动w =轴-& gt;z;
噘嘴-& gt;m[0][0]= cosf(θ)+(u * u)*(1-cosf(θ));
噘嘴-& gt;m[0][1]= u * v *(1-cosf(theta))+w * sinf(theta);
噘嘴-& gt;m[0][2]= u * w *(1-cosf(theta))-v * sinf(theta);
噘嘴-& gt;m[0][3]= 0;
噘嘴-& gt;m[1][0]= u * v *(1-cosf(theta))-w * sinf(theta);
噘嘴-& gt;m[1][1]= cosf(θ)+v * v *(1-cosf(θ));
噘嘴-& gt;m[1][2]= w * v *(1-cosf(theta))+u * sinf(theta);
噘嘴-& gt;m[1][3]= 0;
噘嘴-& gt;m[2][0]= u * w *(1-cosf(theta))+v * sinf(theta);
噘嘴-& gt;m[2][1]= v * w *(1-cosf(theta))-u * sinf(theta);
噘嘴-& gt;m[2][2]= cosf(θ)+w * w *(1-cosf(θ));
噘嘴-& gt;m[2][3]= 0;
噘嘴-& gt;m[3][0]= 0;
噘嘴-& gt;m[3][1]= 0;
噘嘴-& gt;m[3][2]= 0;
噘嘴-& gt;m[3][3]= 1;