11 Dicembre 2002
Costruzione di Interfacce - Paolo Cignoni
29
MoebiusStrip::Transform
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