4 #ifndef tools_sg_markers
5 #define tools_sg_markers
15 #include "../lina/vec2f"
16 #include "../lina/geom2"
30 static const desc_fields s_v(parent::node_desc_fields(),3,
54 const std::vector<float>& _xyzs =
xyzs.
values();
56 std::vector<float> pts;
65 float hsx2 = hsx*0.5f;
66 float hsy2 = hsy*0.5f;
72 unsigned int segs = 16;
73 float _cos[16];
float _sin[16];
74 float dtheta =
ftwo_pi()/float(segs);
76 {
for(
unsigned int i=0;i<segs;i++,theta+=dtheta) {_cos[i] = rad*
fcos(theta);_sin[i] = rad*
fsin(theta);}}
77 float xprev,yprev,xnext,ynext;
78 std::vector<float>::const_iterator it;
79 for(it=_xyzs.begin();it!=_xyzs.end();){
86 for(
unsigned int i=0;i<segs;i++) {
89 _add(pts,xprev,yprev,z);
90 _add(pts,xnext,ynext,z);
99 unsigned int segs = 16;
100 float _cos[16];
float _sin[16];
101 float dtheta =
ftwo_pi()/float(segs);
102 float theta = dtheta;
103 {
for(
unsigned int i=0;i<segs;i++,theta+=dtheta) {_cos[i] = rad*
fcos(theta);_sin[i] = rad*
fsin(theta);}}
104 float xprev,yprev,xnext,ynext;
105 std::vector<float>::const_iterator it;
106 for(it=_xyzs.begin();it!=_xyzs.end();){
113 for(
unsigned int i=0;i<segs;i++) {
117 _add(pts,xprev,yprev,z);
118 _add(pts,xnext,ynext,z);
125 std::vector<float>::const_iterator it;
126 for(it=_xyzs.begin();it!=_xyzs.end();){
131 _add(pts, x-hsx,y-hsy,z);
132 _add(pts, x+hsx,y-hsy,z);
134 _add(pts, x+hsx,y-hsy,z);
135 _add(pts, x+hsx,y+hsy,z);
137 _add(pts, x+hsx,y+hsy,z);
138 _add(pts, x-hsx,y+hsy,z);
140 _add(pts, x-hsx,y+hsy,z);
141 _add(pts, x-hsx,y-hsy,z);
146 std::vector<float>::const_iterator it;
147 for(it=_xyzs.begin();it!=_xyzs.end();){
152 _add(pts, x-hsx,y-hsy,z);
153 _add(pts, x+hsx,y-hsy,z);
154 _add(pts, x+hsx,y+hsy,z);
156 _add(pts, x-hsx,y-hsy,z);
157 _add(pts, x+hsx,y+hsy,z);
158 _add(pts, x-hsx,y+hsy,z);
162 std::vector<float>::const_iterator it;
163 for(it=_xyzs.begin();it!=_xyzs.end();){
168 _add(pts, x-hsx,y-hsy,z);
169 _add(pts, x+hsx,y-hsy,z);
171 _add(pts, x+hsx,y-hsy,z);
172 _add(pts, x ,y+hsy,z);
174 _add(pts, x ,y+hsy,z);
175 _add(pts, x-hsx,y-hsy,z);
179 std::vector<float>::const_iterator it;
180 for(it=_xyzs.begin();it!=_xyzs.end();){
185 _add(pts, x-hsx,y-hsy,z);
186 _add(pts, x+hsx,y-hsy,z);
187 _add(pts, x ,y+hsy,z);
191 std::vector<float>::const_iterator it;
192 for(it=_xyzs.begin();it!=_xyzs.end();){
197 _add(pts, x-hsx,y+hsy,z);
198 _add(pts, x ,y-hsy,z);
200 _add(pts, x ,y-hsy,z);
201 _add(pts, x+hsx,y+hsy,z);
203 _add(pts, x+hsx,y+hsy,z);
204 _add(pts, x-hsx,y+hsy,z);
208 std::vector<float>::const_iterator it;
209 for(it=_xyzs.begin();it!=_xyzs.end();){
214 _add(pts, x-hsx,y+hsy,z);
215 _add(pts, x ,y-hsy,z);
216 _add(pts, x+hsx,y+hsy,z);
220 std::vector<float>::const_iterator it;
221 for(it=_xyzs.begin();it!=_xyzs.end();){
226 _add(pts, x ,y-hsy,z);
227 _add(pts, x+hsx, y,z);
229 _add(pts, x+hsx, y,z);
230 _add(pts, x ,y+hsy,z);
232 _add(pts, x ,y+hsy,z);
233 _add(pts, x-hsx,y ,z);
235 _add(pts, x-hsx,y ,z);
236 _add(pts, x ,y-hsy,z);
240 std::vector<float>::const_iterator it;
241 for(it=_xyzs.begin();it!=_xyzs.end();){
246 _add(pts, x ,y-hsy,z);
247 _add(pts, x+hsx, y,z);
248 _add(pts, x ,y+hsy,z);
250 _add(pts, x ,y+hsy,z);
251 _add(pts, x-hsx,y ,z);
252 _add(pts, x ,y-hsy,z);
256 std::vector<float>::const_iterator it;
257 for(it=_xyzs.begin();it!=_xyzs.end();){
262 _add(pts, x-hsx2,y-hsy,z);
263 _add(pts, x+hsx2,y-hsy,z);
265 _add(pts, x+hsx2,y-hsy ,z);
266 _add(pts, x+hsx2,y-hsy2,z);
268 _add(pts, x+hsx2,y-hsy2,z);
269 _add(pts, x+hsx ,y-hsy2,z);
271 _add(pts, x+hsx ,y-hsy2,z);
272 _add(pts, x+hsx ,y+hsy2,z);
274 _add(pts, x+hsx ,y+hsy2,z);
275 _add(pts, x+hsx2,y+hsy2,z);
277 _add(pts, x+hsx2,y+hsy2,z);
278 _add(pts, x+hsx2,y+hsy ,z);
280 _add(pts, x+hsx2,y+hsy ,z);
281 _add(pts, x-hsx2,y+hsy ,z);
283 _add(pts, x-hsx2,y+hsy ,z);
284 _add(pts, x-hsx2,y+hsy2,z);
286 _add(pts, x-hsx2,y+hsy2,z);
287 _add(pts, x-hsx ,y+hsy2,z);
289 _add(pts, x-hsx ,y+hsy2,z);
290 _add(pts, x-hsx ,y-hsy2,z);
292 _add(pts, x-hsx ,y-hsy2,z);
293 _add(pts, x-hsx2,y-hsy2,z);
295 _add(pts, x-hsx2,y-hsy2,z);
296 _add(pts, x-hsx2,y-hsy, z);
300 std::vector<float>::const_iterator it;
301 for(it=_xyzs.begin();it!=_xyzs.end();){
306 _add(pts, x-hsx2,y-hsy,z);
307 _add(pts, x+hsx2,y-hsy,z);
308 _add(pts, x+hsx2,y+hsy,z);
310 _add(pts, x+hsx2,y+hsy,z);
311 _add(pts, x-hsx2,y+hsy,z);
312 _add(pts, x-hsx2,y-hsy,z);
314 _add(pts, x-hsx ,y-hsy2,z);
315 _add(pts, x+hsx ,y-hsy2,z);
316 _add(pts, x+hsx ,y+hsy2,z);
318 _add(pts, x+hsx ,y+hsy2,z);
319 _add(pts, x-hsx ,y+hsy2,z);
320 _add(pts, x-hsx ,y-hsy2,z);
324 std::vector<float>::const_iterator it;
325 for(it=_xyzs.begin();it!=_xyzs.end();){
330 _add(pts, x-hsx,y-hsy2,z);
331 _add(pts, x+hsx,y-hsy2,z);
333 _add(pts, x+hsx,y-hsy2,z);
334 _add(pts, x ,y+hsy ,z);
336 _add(pts, x ,y+hsy ,z);
337 _add(pts, x-hsx,y-hsy2,z);
339 _add(pts, x+hsx,y+hsy2,z);
340 _add(pts, x-hsx,y+hsy2,z);
342 _add(pts, x-hsx,y+hsy2,z);
343 _add(pts, x ,y-hsy ,z);
345 _add(pts, x ,y-hsy ,z);
346 _add(pts, x+hsx,y+hsy2,z);
350 std::vector<float>::const_iterator it;
351 for(it=_xyzs.begin();it!=_xyzs.end();){
356 _add(pts, x-hsx,y-hsy2,z);
357 _add(pts, x+hsx,y-hsy2,z);
358 _add(pts, x ,y+hsy ,z);
360 _add(pts, x+hsx,y+hsy2,z);
361 _add(pts, x-hsx,y+hsy2,z);
362 _add(pts, x ,y-hsy ,z);
366 float _cos[5];
float _sin[5];
369 {
for(
unsigned int i=0;i<5;i++,theta+=dtheta) {_cos[i] = rad*
fcos(theta);_sin[i] = rad*
fsin(theta);}}
370 std::vector<float>::const_iterator it;
371 for(it=_xyzs.begin();it!=_xyzs.end();){
376 _add(pts, x+_cos[0],y+_sin[0] ,z);
377 _add(pts, x+_cos[2],y+_sin[2] ,z);
379 _add(pts, x+_cos[2],y+_sin[2] ,z);
380 _add(pts, x+_cos[4],y+_sin[4] ,z);
382 _add(pts, x+_cos[4],y+_sin[4] ,z);
383 _add(pts, x+_cos[1],y+_sin[1] ,z);
385 _add(pts, x+_cos[1],y+_sin[1] ,z);
386 _add(pts, x+_cos[3],y+_sin[3] ,z);
388 _add(pts, x+_cos[3],y+_sin[3] ,z);
389 _add(pts, x+_cos[0],y+_sin[0] ,z);
393 float _cos[5];
float _sin[5];
396 {
for(
unsigned int i=0;i<5;i++,theta+=dtheta) {_cos[i] = rad*
fcos(theta);_sin[i] = rad*
fsin(theta);}}
398 {
vec2f p1(_cos[2],_sin[2]);
399 vec2f q1(_cos[4],_sin[4]);
400 vec2f p2(_cos[3],_sin[3]);
401 vec2f q2(_cos[0],_sin[0]);
404 {
vec2f p1(_cos[1],_sin[1]);
405 vec2f q1(_cos[4],_sin[4]);
406 vec2f p2(_cos[3],_sin[3]);
407 vec2f q2(_cos[0],_sin[0]);
410 {
vec2f p1(_cos[1],_sin[1]);
411 vec2f q1(_cos[4],_sin[4]);
412 vec2f p2(_cos[0],_sin[0]);
413 vec2f q2(_cos[2],_sin[2]);
415 std::vector<float>::const_iterator it;
416 for(it=_xyzs.begin();it!=_xyzs.end();){
421 _add(pts, x+_cos[0],y+_sin[0] ,z);
422 _add(pts, x+_cos[2],y+_sin[2] ,z);
423 _add(pts, x+ i3.
x(),y+ i3.
y() ,z);
425 _add(pts, x+_cos[1],y+_sin[1] ,z);
426 _add(pts, x+_cos[3],y+_sin[3] ,z);
427 _add(pts, x+ i4.
x(),y+ i4.
y() ,z);
429 _add(pts, x+ i0.
x(),y+ i0.
y() ,z);
430 _add(pts, x+_cos[2],y+_sin[2] ,z);
431 _add(pts, x+_cos[4],y+_sin[4] ,z);
435 std::vector<float>::const_iterator it;
436 for(it=_xyzs.begin();it!=_xyzs.end();){
441 _add(pts, x-hsx,y,z);
442 _add(pts, x+hsx,y,z);
443 _add(pts, x ,y-hsy,z);
444 _add(pts, x ,y+hsy,z);
447 std::vector<float>::const_iterator it;
448 for(it=_xyzs.begin();it!=_xyzs.end();){
453 _add(pts, x ,y-hsy ,z);
454 _add(pts, x ,y+hsy ,z);
455 _add(pts, x-hsx,y-hsy2,z);
456 _add(pts, x+hsx,y+hsy2,z);
457 _add(pts, x-hsx,y+hsy2,z);
458 _add(pts, x+hsx,y-hsy2,z);
461 std::vector<float>::const_iterator it;
462 for(it=_xyzs.begin();it!=_xyzs.end();){
467 _add(pts, x ,y-hsy ,z);
468 _add(pts, x ,y+hsy ,z);
469 _add(pts, x-hsx,y-hsy2,z);
470 _add(pts, x+hsx,y+hsy2,z);
471 _add(pts, x-hsx,y+hsy2,z);
472 _add(pts, x+hsx,y-hsy2,z);
473 _add(pts, x-hsx,y ,z);
474 _add(pts, x+hsx,y ,z);
477 std::vector<float>::const_iterator it;
478 for(it=_xyzs.begin();it!=_xyzs.end();){
483 _add(pts, x-hsx,y,z);
484 _add(pts, x+hsx,y,z);
487 std::vector<float>::const_iterator it;
488 for(it=_xyzs.begin();it!=_xyzs.end();){
493 _add(pts, x-hsx,y-hsy,z);
494 _add(pts, x+hsx,y+hsy,z);
495 _add(pts, x+hsx,y-hsy,z);
496 _add(pts, x-hsx,y+hsy,z);
515 const std::vector<float>& _xyzs =
xyzs.
values();
517 std::vector<float> pts;
527 std::vector<float>::const_iterator it;
528 for(it=_xyzs.begin();it!=_xyzs.end();){
535 _add(pts, x-hsx,y-hsy,z);
536 _add(pts, x+hsx,y+hsy,z);
537 _add(pts, x+hsx,y-hsy,z);
538 _add(pts, x-hsx,y+hsy,z);
547 const std::vector<float>& _xyzs =
xyzs.
values();
549 std::vector<float>::const_iterator it;
550 for(it=_xyzs.begin();it!=_xyzs.end();){
564 mem::increment(s_class().c_str());
570 mem::decrement(s_class().c_str());
581 mem::increment(s_class().c_str());
586 parent::operator=(a_from);
594 void add(
const VEC& a_v) {
599 void add(
float a_x,
float a_y,
float a_z) {
604 bool add(
const std::vector<float>& a_v) {
605 std::vector<float>::size_type _number = a_v.size()/3;
606 if(3*_number!=a_v.size())
return false;
607 std::vector<float>::const_iterator it;
608 for(it=a_v.begin();it!=a_v.end();it+=3) {
618 void _add(std::vector<float>& a_v,
float a_x,
float a_y,
float a_z) {