Use backtick code blocks for syntax highlighting
This commit is contained in:
parent
8ed9dea394
commit
f658bfbb40
203 changed files with 26546 additions and 25801 deletions
116
51-05.md
116
51-05.md
|
|
@ -46,64 +46,66 @@ eventually.
|
|||
|
||||
**LISTING 51.4 L51-4.C**
|
||||
|
||||
/* Routines to perform incremental rotations around the three axes */
|
||||
#include <math.h>
|
||||
#include "polygon.h"
|
||||
```c
|
||||
/* Routines to perform incremental rotations around the three axes */
|
||||
#include <math.h>
|
||||
#include "polygon.h"
|
||||
|
||||
/* Concatenate a rotation by Angle around the X axis to the transformation in
|
||||
XformToChange, placing result back in XformToChange. */
|
||||
void AppendRotationX(double XformToChange[4][4], double Angle)
|
||||
{
|
||||
double Temp10, Temp11, Temp12, Temp20, Temp21, Temp22;
|
||||
double CosTemp = cos(Angle), SinTemp = sin(Angle);
|
||||
/* Calculate the new values of the four affected matrix entries */
|
||||
Temp10 = CosTemp*XformToChange[1][0]+ -SinTemp*XformToChange[2][0];
|
||||
Temp11 = CosTemp*XformToChange[1][1]+ -SinTemp*XformToChange[2][1];
|
||||
Temp12 = CosTemp*XformToChange[1][2]+ -SinTemp*XformToChange[2][2];
|
||||
Temp20 = SinTemp*XformToChange[1][0]+ CosTemp*XformToChange[2][0];
|
||||
Temp21 = SinTemp*XformToChange[1][1]+ CosTemp*XformToChange[2][1];
|
||||
Temp22 = SinTemp*XformToChange[1][2]+ CosTemp*XformToChange[2][2];
|
||||
/* Put the results back into XformToChange */
|
||||
XformToChange[1][0] = Temp10; XformToChange[1][1] = Temp11;
|
||||
XformToChange[1][2] = Temp12; XformToChange[2][0] = Temp20;
|
||||
XformToChange[2][1] = Temp21; XformToChange[2][2] = Temp22;
|
||||
}
|
||||
/* Concatenate a rotation by Angle around the X axis to the transformation in
|
||||
XformToChange, placing result back in XformToChange. */
|
||||
void AppendRotationX(double XformToChange[4][4], double Angle)
|
||||
{
|
||||
double Temp10, Temp11, Temp12, Temp20, Temp21, Temp22;
|
||||
double CosTemp = cos(Angle), SinTemp = sin(Angle);
|
||||
/* Calculate the new values of the four affected matrix entries */
|
||||
Temp10 = CosTemp*XformToChange[1][0]+ -SinTemp*XformToChange[2][0];
|
||||
Temp11 = CosTemp*XformToChange[1][1]+ -SinTemp*XformToChange[2][1];
|
||||
Temp12 = CosTemp*XformToChange[1][2]+ -SinTemp*XformToChange[2][2];
|
||||
Temp20 = SinTemp*XformToChange[1][0]+ CosTemp*XformToChange[2][0];
|
||||
Temp21 = SinTemp*XformToChange[1][1]+ CosTemp*XformToChange[2][1];
|
||||
Temp22 = SinTemp*XformToChange[1][2]+ CosTemp*XformToChange[2][2];
|
||||
/* Put the results back into XformToChange */
|
||||
XformToChange[1][0] = Temp10; XformToChange[1][1] = Temp11;
|
||||
XformToChange[1][2] = Temp12; XformToChange[2][0] = Temp20;
|
||||
XformToChange[2][1] = Temp21; XformToChange[2][2] = Temp22;
|
||||
}
|
||||
|
||||
/* Concatenate a rotation by Angle around the Y axis to the transformation in
|
||||
XformToChange, placing result back in XformToChange. */
|
||||
void AppendRotationY(double XformToChange[4][4], double Angle)
|
||||
{
|
||||
double Temp00, Temp01, Temp02, Temp20, Temp21, Temp22;
|
||||
double CosTemp = cos(Angle), SinTemp = sin(Angle);
|
||||
/* Concatenate a rotation by Angle around the Y axis to the transformation in
|
||||
XformToChange, placing result back in XformToChange. */
|
||||
void AppendRotationY(double XformToChange[4][4], double Angle)
|
||||
{
|
||||
double Temp00, Temp01, Temp02, Temp20, Temp21, Temp22;
|
||||
double CosTemp = cos(Angle), SinTemp = sin(Angle);
|
||||
|
||||
/* Calculate the new values of the four affected matrix entries */
|
||||
Temp00 = CosTemp*XformToChange[0][0]+ SinTemp*XformToChange[2][0];
|
||||
Temp01 = CosTemp*XformToChange[0][1]+ SinTemp*XformToChange[2][1];
|
||||
Temp02 = CosTemp*XformToChange[0][2]+ SinTemp*XformToChange[2][2];
|
||||
Temp20 = -SinTemp*XformToChange[0][0]+ CosTemp*XformToChange[2][0];
|
||||
Temp21 = -SinTemp*XformToChange[0][1]+ CosTemp*XformToChange[2][1];
|
||||
Temp22 = -SinTemp*XformToChange[0][2]+ CosTemp*XformToChange[2][2];
|
||||
/* Put the results back into XformToChange */
|
||||
XformToChange[0][0] = Temp00; XformToChange[0][1] = Temp01;
|
||||
XformToChange[0][2] = Temp02; XformToChange[2][0] = Temp20;
|
||||
XformToChange[2][1] = Temp21; XformToChange[2][2] = Temp22;
|
||||
}
|
||||
/* Calculate the new values of the four affected matrix entries */
|
||||
Temp00 = CosTemp*XformToChange[0][0]+ SinTemp*XformToChange[2][0];
|
||||
Temp01 = CosTemp*XformToChange[0][1]+ SinTemp*XformToChange[2][1];
|
||||
Temp02 = CosTemp*XformToChange[0][2]+ SinTemp*XformToChange[2][2];
|
||||
Temp20 = -SinTemp*XformToChange[0][0]+ CosTemp*XformToChange[2][0];
|
||||
Temp21 = -SinTemp*XformToChange[0][1]+ CosTemp*XformToChange[2][1];
|
||||
Temp22 = -SinTemp*XformToChange[0][2]+ CosTemp*XformToChange[2][2];
|
||||
/* Put the results back into XformToChange */
|
||||
XformToChange[0][0] = Temp00; XformToChange[0][1] = Temp01;
|
||||
XformToChange[0][2] = Temp02; XformToChange[2][0] = Temp20;
|
||||
XformToChange[2][1] = Temp21; XformToChange[2][2] = Temp22;
|
||||
}
|
||||
|
||||
/* Concatenate a rotation by Angle around the Z axis to the transformation in
|
||||
XformToChange, placing result back in XformToChange. */
|
||||
void AppendRotationZ(double XformToChange[4][4], double Angle)
|
||||
{
|
||||
double Temp00, Temp01, Temp02, Temp10, Temp11, Temp12;
|
||||
double CosTemp = cos(Angle), SinTemp = sin(Angle);
|
||||
/* Calculate the new values of the four affected matrix entries */
|
||||
Temp00 = CosTemp*XformToChange[0][0]+ -SinTemp*XformToChange[1][0];
|
||||
Temp01 = CosTemp*XformToChange[0][1]+ -SinTemp*XformToChange[1][1];
|
||||
Temp02 = CosTemp*XformToChange[0][2]+ -SinTemp*XformToChange[1][2];
|
||||
Temp10 = SinTemp*XformToChange[0][0]+ CosTemp*XformToChange[1][0];
|
||||
Temp11 = SinTemp*XformToChange[0][1]+ CosTemp*XformToChange[1][1];
|
||||
Temp12 = SinTemp*XformToChange[0][2]+ CosTemp*XformToChange[1][2];
|
||||
/* Put the results back into XformToChange */
|
||||
XformToChange[0][0] = Temp00; XformToChange[0][1] = Temp01;
|
||||
XformToChange[0][2] = Temp02; XformToChange[1][0] = Temp10;
|
||||
XformToChange[1][1] = Temp11; XformToChange[1][2] = Temp12;
|
||||
}
|
||||
/* Concatenate a rotation by Angle around the Z axis to the transformation in
|
||||
XformToChange, placing result back in XformToChange. */
|
||||
void AppendRotationZ(double XformToChange[4][4], double Angle)
|
||||
{
|
||||
double Temp00, Temp01, Temp02, Temp10, Temp11, Temp12;
|
||||
double CosTemp = cos(Angle), SinTemp = sin(Angle);
|
||||
/* Calculate the new values of the four affected matrix entries */
|
||||
Temp00 = CosTemp*XformToChange[0][0]+ -SinTemp*XformToChange[1][0];
|
||||
Temp01 = CosTemp*XformToChange[0][1]+ -SinTemp*XformToChange[1][1];
|
||||
Temp02 = CosTemp*XformToChange[0][2]+ -SinTemp*XformToChange[1][2];
|
||||
Temp10 = SinTemp*XformToChange[0][0]+ CosTemp*XformToChange[1][0];
|
||||
Temp11 = SinTemp*XformToChange[0][1]+ CosTemp*XformToChange[1][1];
|
||||
Temp12 = SinTemp*XformToChange[0][2]+ CosTemp*XformToChange[1][2];
|
||||
/* Put the results back into XformToChange */
|
||||
XformToChange[0][0] = Temp00; XformToChange[0][1] = Temp01;
|
||||
XformToChange[0][2] = Temp02; XformToChange[1][0] = Temp10;
|
||||
XformToChange[1][1] = Temp11; XformToChange[1][2] = Temp12;
|
||||
}
|
||||
```
|
||||
|
|
|
|||
Loading…
Reference in a new issue