77 {0.135299, -0.461940, -0.135299},
78 {0.000000, -0.461940, -0.191342},
79 {-0.135299, -0.461940, -0.135299},
80 {-0.191342, -0.461940, 0.000000},
81 {-0.135299, -0.461940, 0.135299},
82 {0.000000, -0.461940, 0.191342},
83 {0.135299, -0.461940, 0.135299},
84 {0.191342, -0.461940, 0.000000},
85 {0.250000, -0.353553, -0.250000},
86 {0.000000, -0.353553, -0.353553},
87 {-0.250000, -0.353553, -0.250000},
88 {-0.353553, -0.353553, 0.000000},
89 {-0.250000, -0.353553, 0.250000},
90 {0.000000, -0.353553, 0.353553},
91 {0.250000, -0.353553, 0.250000},
92 {0.353553, -0.353553, 0.000000},
93 {0.326641, -0.191342, -0.326641},
94 {0.000000, -0.191342, -0.461940},
95 {-0.326641, -0.191342, -0.326641},
96 {-0.461940, -0.191342, 0.000000},
97 {-0.326641, -0.191342, 0.326641},
98 {0.000000, -0.191342, 0.461940},
99 {0.326641, -0.191342, 0.326641},
100 {0.461940, -0.191342, 0.000000},
101 {0.353553, 0.000000, -0.353553},
102 {0.000000, 0.000000, -0.500000},
103 {-0.353553, 0.000000, -0.353553},
104 {-0.500000, 0.000000, 0.000000},
105 {-0.353553, 0.000000, 0.353553},
106 {0.000000, 0.000000, 0.500000},
107 {0.353553, 0.000000, 0.353553},
108 {0.500000, 0.000000, 0.000000},
109 {0.326641, 0.191342, -0.326641},
110 {0.000000, 0.191342, -0.461940},
111 {-0.326641, 0.191342, -0.326641},
112 {-0.461940, 0.191342, 0.000000},
113 {-0.326641, 0.191342, 0.326641},
114 {0.000000, 0.191342, 0.461940},
115 {0.326641, 0.191342, 0.326641},
116 {0.461940, 0.191342, 0.000000},
117 {0.250000, 0.353553, -0.250000},
118 {0.000000, 0.353553, -0.353553},
119 {-0.250000, 0.353553, -0.250000},
120 {-0.353553, 0.353553, 0.000000},
121 {-0.250000, 0.353553, 0.250000},
122 {0.000000, 0.353553, 0.353553},
123 {0.250000, 0.353553, 0.250000},
124 {0.353553, 0.353553, 0.000000},
125 {0.135299, 0.461940, -0.135299},
126 {0.000000, 0.461940, -0.191342},
127 {-0.135299, 0.461940, -0.135299},
128 {-0.191342, 0.461940, 0.000000},
129 {-0.135299, 0.461940, 0.135299},
130 {0.000000, 0.461940, 0.191342},
131 {0.135299, 0.461940, 0.135299},
132 {0.191342, 0.461940, 0.000000},
133 {0.000000, -0.500000, 0.000000},
134 {0.000000, 0.500000, 0.000000}
255 for (
int i = 0; i < 112; i++) {
257 v[f[i][0]][1] * _sizeY,
258 v[f[i][0]][2] * _sizeZ);
260 v[f[i][1]][1] * _sizeY,
261 v[f[i][1]][2] * _sizeZ);
263 v[f[i][2]][1] * _sizeY,
264 v[f[i][2]][2] * _sizeZ);
268 model->addTriangle(p1, p2, p3);
329 double _height,
int _slices,
int _stacks,
331 const int CACHE_SIZE = 240;
334 float sinCache[CACHE_SIZE];
335 float cosCache[CACHE_SIZE];
339 float sintemp, costemp;
341 float radiusLow, radiusHigh;
343 if (_slices >= CACHE_SIZE) _slices = CACHE_SIZE-1;
345 if (_slices < 2 || _stacks < 1 || _baseRadius < 0.0 || _topRadius < 0.0 ||
354 deltaRadius = _baseRadius - _topRadius;
357 for (i = 0; i < _slices; i++) {
358 angle = 2 * M_PI * i / _slices;
359 sinCache[i] = sin(angle);
360 cosCache[i] = cos(angle);
363 sinCache[_slices] = sinCache[0];
364 cosCache[_slices] = cosCache[0];
372 sintemp = sinCache[0];
373 costemp = cosCache[0];
374 radiusLow = _baseRadius;
378 for (i = 1; i < _slices; i++) {
383 model->addTriangle(p1, p2, p3);
385 Eigen::Vector3d v(radiusLow * sinCache[i], radiusLow * cosCache[i], zLow);
389 for (i = 0; i < _slices; i++) {
390 for (j = 0; j < _stacks; j++) {
391 zLow = j * _height / _stacks + zBase;
392 zHigh = (j + 1) * _height / _stacks + zBase;
393 radiusLow = _baseRadius
394 - deltaRadius * (
static_cast<float>(j) / _stacks);
395 radiusHigh = _baseRadius
396 - deltaRadius * (
static_cast<float>(j + 1) / _stacks);
411 model->addTriangle(p1, p2, p3);
412 model->addTriangle(p2, p3, p4);
417 sintemp = sinCache[0];
418 costemp = cosCache[0];
419 radiusLow = _topRadius;
420 zLow = zBase + _height;
423 for (i = 1; i < _slices; i++) {
428 model->addTriangle(p1, p2, p3);