Rotatie
Veel CAD-toepassingen bieden functies die objecten draaien die zijn getekend in het clientgebied. Toepassingen met rotatiemogelijkheden maken gebruik van de functie SetWorldTransform om de juiste wereldruimte in te stellen op paginaruimtetransformatie. Deze functie ontvangt een aanwijzer naar een XFORM- structuur met de juiste waarden. De eM11-, eM12-, eM21- en eM22-leden van XFORM geven respectievelijk de cosinus, sinus, negatieve sinus en cosinus van de draaihoek op.
Wanneer rotatie plaatsvindt, worden de punten die een object vormen geroteerd met betrekking tot de coördinaatruimte-oorsprong. In de volgende afbeelding ziet u een rechthoek van 20 bij 20 eenheden die 30 graden is gedraaid bij het kopiëren van de wereldcoördinaatruimte naar de paginacoördinaatruimte.
In de voorgaande afbeelding werd elk punt in de rechthoek 30 graden gedraaid met betrekking tot de oorsprong van de coördinaatruimte.
Het volgende algoritme berekent de nieuwe x-coördinaat (x ') voor een punt (x,y) dat wordt gedraaid op hoek A met betrekking tot de oorsprong van de coördinaatruimte.
x' = (x * cos A) - (y * sin A)
Met het volgende algoritme wordt de y-coördinaat (y) berekend voor een punt (x,y) dat wordt gedraaid door de hoek A met betrekking tot de oorsprong.
y' = (x * sin A) + (y * cos A)
De twee rotatietransformaties kunnen als volgt worden gecombineerd in een matrix van 2 bij 2.
|x' y'| == |x y| * | cos A sin A|
|-sin A cos A|
De matrix van 2 bij 2 die de rotatie heeft geproduceerd, bevat de volgende waarden.
| .8660 .5000|
|-.5000 .8660|
Rotatie algoritme derivation
Rotatiealgoritmen zijn gebaseerd op trigonometrische stellingstelling waarin staat dat de trigonometrische functie van een som van twee hoeken (A1 en A2) kan worden uitgedrukt in termen van de trigonometrische functies van de twee hoeken.
sin(A1 + A2) = (sin A1 * cos A2) + (cos A1 * sin A2)
cos(A1 + A2) = (cos A1 * cos A2) - (sin A1 * sin A2)
In de volgende afbeelding ziet u een punt p gedraaid linksom naar een nieuwe positie p'. Daarnaast worden er twee driehoeken weergegeven die zijn gevormd door een lijn die is getekend van de oorsprong van de coördinaatruimte naar elk punt en een lijn die vanaf elk punt door de x-as wordt getekend.
Met behulp van trigonometrie kan de x-coördinaat van punt p worden verkregen door de lengte van de hypotenuse h te vermenigvuldigen met de cosinus van A1.
x = h * cos A1
De y-coördinaat van punt p kan worden verkregen door de lengte van de hypotenuse h te vermenigvuldigen met de sinus van A1.
y = h * sin A1
Op dezelfde manier kan de x-coördinaat van punt p worden verkregen door de lengte van de hypotenuse h te vermenigvuldigen met de cosinus van (A1 +A2).
x' = h * cos (A1 + A2)
Ten slotte kan de y-coördinaat van punt p worden verkregen door de lengte van de hypotenuse h te vermenigvuldigen met de sinus van (A1 +A2).
y' = h * sin (A1 + A2)
Met behulp van de toevoegingsstelling worden de voorgaande algoritmen het volgende:
x' = (h * cos A1 * cos A2) - (h * sin A1 * sin A2)
y' = (h * cos A1 * sin A2) + (h * sin A1 * cos A2)
De draaialgoritmen voor een bepaald punt die door hoek A2 worden gedraaid, kunnen worden verkregen door x te vervangen voor elk exemplaar van (h * cos A1) en door y te vervangen voor elk exemplaar van (h * sin A1).
x' = (x * cos A2) - (y * sin A2)
y' = (x * sin A2) + (y * cos A2)