我试图将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]
)之前和之后的线段方向矢量的角度。
我还希望稍后通过将圆圈变成椭圆形来压扁管子,并且我希望能够通过改变圆圈被压扁的角度来扭曲压扁的管子。
非常感谢任何帮助。