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
60
61-04.md
60
61-04.md
|
|
@ -50,35 +50,37 @@ point, as shown in Listing 61.1.
|
|||
|
||||
**LISTING 61.1 L61\_1.C**
|
||||
|
||||
// Given two line endpoints, a point on a plane, and a unit normal
|
||||
// for the plane, returns the point of intersection of the line
|
||||
// and the plane in intersectpoint.
|
||||
#define DOT_PRODUCT(x,y) (x[0]*y[0]+x[1]*y[1]+x[2]*y[2])
|
||||
void LineIntersectPlane (float *linestart, float *lineend,
|
||||
float *planeorigin, float *planenormal, float *intersectpoint)
|
||||
{
|
||||
float vec1[3], projectedlinelength, startdistfromplane, scale;
|
||||
vec1[0] = linestart[0] - planeorigin[0];
|
||||
vec1[1] = linestart[1] - planeorigin[1];
|
||||
vec1[2] = linestart[2] - planeorigin[2];
|
||||
startdistfromplane = DOT_PRODUCT(vec1, planenormal);
|
||||
if (startdistfromplane == 0)
|
||||
{
|
||||
// point is in plane
|
||||
intersectpoint[0] = linestart[0];
|
||||
intersectpoint[1] = linestart[1];
|
||||
intersectpoint[2] = linestart[1];
|
||||
return;
|
||||
}
|
||||
vec1[0] = linestart[0] - lineend[0];
|
||||
vec1[1] = linestart[1] - lineend[1];
|
||||
vec1[2] = linestart[2] - lineend[2];
|
||||
projectedlinelength = DOT_PRODUCT(vec1, planenormal);
|
||||
scale = startdistfromplane / projectedlinelength;
|
||||
intersectpoint[0] = linestart[0] - vec1[0] * scale;
|
||||
intersectpoint[1] = linestart[1] - vec1[1] * scale;
|
||||
intersectpoint[2] = linestart[1] - vec1[2] * scale;
|
||||
}
|
||||
```c
|
||||
// Given two line endpoints, a point on a plane, and a unit normal
|
||||
// for the plane, returns the point of intersection of the line
|
||||
// and the plane in intersectpoint.
|
||||
#define DOT_PRODUCT(x,y) (x[0]*y[0]+x[1]*y[1]+x[2]*y[2])
|
||||
void LineIntersectPlane (float *linestart, float *lineend,
|
||||
float *planeorigin, float *planenormal, float *intersectpoint)
|
||||
{
|
||||
float vec1[3], projectedlinelength, startdistfromplane, scale;
|
||||
vec1[0] = linestart[0] - planeorigin[0];
|
||||
vec1[1] = linestart[1] - planeorigin[1];
|
||||
vec1[2] = linestart[2] - planeorigin[2];
|
||||
startdistfromplane = DOT_PRODUCT(vec1, planenormal);
|
||||
if (startdistfromplane == 0)
|
||||
{
|
||||
// point is in plane
|
||||
intersectpoint[0] = linestart[0];
|
||||
intersectpoint[1] = linestart[1];
|
||||
intersectpoint[2] = linestart[1];
|
||||
return;
|
||||
}
|
||||
vec1[0] = linestart[0] - lineend[0];
|
||||
vec1[1] = linestart[1] - lineend[1];
|
||||
vec1[2] = linestart[2] - lineend[2];
|
||||
projectedlinelength = DOT_PRODUCT(vec1, planenormal);
|
||||
scale = startdistfromplane / projectedlinelength;
|
||||
intersectpoint[0] = linestart[0] - vec1[0] * scale;
|
||||
intersectpoint[1] = linestart[1] - vec1[1] * scale;
|
||||
intersectpoint[2] = linestart[1] - vec1[2] * scale;
|
||||
}
|
||||
```
|
||||
|
||||
### Rotation by Projection {#Heading10}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue