以任意角度在3D中绘制圆

时间:2015-04-20 09:18:53

标签: c++ math 3d geometry computational-geometry

我试图将3D曲线变成管子,沿着它绘制圆圈并将它们连接起来。我在用正确的旋转绘制圆圈时遇到困难。我目前正在for循环中绘制圆圈,方法是在xy平面上获取2D圆点并对它们应用旋转:

for ( int j = 0; j <= NumSides; ++j )
{
    // ensure polygon meets up 
    if( j == NumSides )
        angle = StartAngle;

    CVector3D point( sin(angle)*radius, cos(angle)*radius, 0 );

    CMatrix4 rotation;
    rotation = Matrix4RotationYAngle( vangle );
    rotation *= Matrix4RotationXAngle( hangle );
    rotation.Translate( points_[i] );
    rotation.Transform(point);
    surface_.AddPoint( point );

    angle -= AngleInc;  // Ensure polygon goes clockwise 
}

angle = StartAngle;

其中,hangle和vangle分别是在x和y轴上旋转的弧度数。我得到这些是平均圆心(points_[i])之前和之后的线段方向矢量的角度。

我还希望稍后通过将圆圈变成椭圆形来压扁管子,并且我希望能够通过改变圆圈被压扁的角度来扭曲压扁的管子。

非常感谢任何帮助。

0 个答案:

没有答案