vvoid
MoebiusStrip::Transform(const MoebiusStrip::Pos &p)
v{
v // di quanto si gira per ogni turn (e.g.
v float TurnStepDeg = (360.0f/SideNum);
v // di quanto si avvolge per ogni degree
v float TwistPerDeg = (TurnStepDeg * Turns )/360.0f;
v float
HalfFilletAngleDeg=(TurnStepDeg*FilletRatio)/2;
v float BaseAngleDeg =
StartTwistDeg-TurnStepDeg/2.0f;
v
v // Rotazione Intorno all'asse principale
v glRotatef(p.ThetaDeg, 0,0,1);
v glTranslatef(Radius,0,0);
v
v // Avvolgimento della striscia.
v glRotatef(TurnStepDeg*p.CurSide+p.ThetaDeg*TwistPerDeg,
0,1,0);
v
// Spostamento verso la superficie del’nastro
v glTranslatef(Cos(ToRad(BaseAngleDeg+HalfFilletAngleDeg))*InnerRadius,0,0);
v}
v