1gleSpiral(3GLE) GLE gleSpiral(3GLE)
2
3
4
6 gleSpiral - Sweep an arbitrary contour along a helical path.
7
9 void gleSpiral (int ncp,
10 gleDouble contour[][2],
11 gleDouble cont_normal[][2],
12 gleDouble up[3],
13 gleDouble startRadius, /* spiral starts in x-y plane */
14 gleDouble drdTheta, /* change in radius per revolution */
15 gleDouble startZ, /* starting z value */
16 gleDouble dzdTheta, /* change in Z per revolution */
17 gleDouble startXform[2][3], /* starting contour affine xform */
18 gleDouble dXformdTheta[2][3], /* tangent change xform per revoln */
19 gleDouble startTheta, /* start angle in x-y plane */
20 gleDouble sweepTheta); /* degrees to spiral around */
21
23 ncp number of contour points
24
25 contour 2D contour
26
27 cont_normal
28 2D contour normals
29
30 up up vector for contour
31
32 startRadius
33 spiral starts in x-y plane
34
35 drdTheta change in radius per revolution
36
37 startZ starting z value
38
39 dzdTheta change in Z per revolution
40
41 startXform
42 starting contour affine transformation
43
44 dXformdTheta
45 tangent change xform per revolution
46
47 startTheta
48 start angle in x-y plane
49
50 sweepTheta
51 degrees to spiral around
52
54 Sweep an arbitrary contour along a helical path.
55
56 The axis of the helix lies along the modeling coordinate z-axis.
57
58 An affine transform can be applied as the contour is swept. For most
59 ordinary usage, the affines should be given as NULL.
60
61 The "startXform[][]" is an affine matrix applied to the contour to
62 deform the contour. Thus, "startXform" of the form
63
64 | cos sin 0 |
65 | -sin cos 0 |
66
67 will rotate the contour (in the plane of the contour), while
68
69 | 1 0 tx |
70 | 0 1 ty |
71
72 will translate the contour, and
73
74 | sx 0 0 |
75 | 0 sy 0 |
76
77 scales along the two axes of the contour. In particular, note that
78
79 | 1 0 0 |
80 | 0 1 0 |
81
82 is the identity matrix.
83
84 The "dXformdTheta[][]" is a differential affine matrix that is inte‐
85 grated while the contour is extruded. Note that this affine matrix
86 lives in the tangent space, and so it should have the form of a genera‐
87 tor. Thus, dx/dt's of the form
88
89 | 0 r 0 |
90 | -r 0 0 |
91
92 rotate the the contour as it is extruded (r == 0 implies no rotation, r
93 == 2*PI implies that the contour is rotated once, etc.), while
94
95 | 0 0 tx |
96 | 0 0 ty |
97
98 translates the contour, and
99
100 | sx 0 0 |
101 | 0 sy 0 |
102
103 scales it. In particular, note that
104
105 | 0 0 0 |
106 | 0 0 0 |
107
108 is the identity matrix -- i.e. the derivatives are zero, and therefore
109 the integral is a constant.
110
111
113 gleLathe
114
116 Linas Vepstas (linas@linas.org)
117
118
119
120GLE 3.0 gleSpiral(3GLE)