三维空间中一条直线绕另一条直线旋转得到的曲面方程怎么写?

取总线X-1,-3t,3t上任意一点B (t+1 = y/-3 = z/3 = t)。

取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;