src/primitives.cpp

changeset 1398
1c70d3447d20
parent 1391
5fa4bf1fc781
child 1407
22bc5862cb56
equal deleted inserted replaced
1397:5d5c11af0268 1398:1c70d3447d20
323 line->setVertex(2, v2); 323 line->setVertex(2, v2);
324 line->setVertex(3, v3); 324 line->setVertex(3, v3);
325 } 325 }
326 } 326 }
327 327
328 void PrimitiveModel::generateBody(Model& model) const 328 /*
329 { 329 * Builds a circle primitive.
330 if (this->type == Cylinder) 330 */
331 { 331 void PrimitiveModel::generateCircle(Model& model) const
332 this->generateCylinder(model); 332 {
333 return;
334 }
335
336 QVector<int> conditionalLineSegments;
337 QVector<QLineF> circle = makeCircle(segments, divisions, 1); 333 QVector<QLineF> circle = makeCircle(segments, divisions, 1);
338 334
339 for (int i = 0; i < segments; ++i) 335 for (int i = 0; i < segments; ++i)
340 { 336 {
341 double x0 = circle[i].x1(); 337 double x0 = circle[i].x1();
342 double x1 = circle[i].x2(); 338 double x1 = circle[i].x2();
343 double z0 = circle[i].y1(); 339 double z0 = circle[i].y1();
344 double z1 = circle[i].y2(); 340 double z1 = circle[i].y2();
345 341
342 LDEdgeLine* line = model.emplace<LDEdgeLine>();
343 line->setVertex(0, Vertex {x0, 0.0f, z0});
344 line->setVertex(1, Vertex {x1, 0.0f, z1});
345 line->setColor(EdgeColor);
346 }
347 }
348
349 void PrimitiveModel::generateBody(Model& model) const
350 {
351 switch (type)
352 {
353 case Cylinder:
354 generateCylinder(model);
355 return;
356
357 case Circle:
358 generateCircle(model);
359 return;
360
361 default:
362 break;
363 }
364
365 QVector<int> conditionalLineSegments;
366 QVector<QLineF> circle = makeCircle(segments, divisions, 1);
367
368 for (int i = 0; i < segments; ++i)
369 {
370 double x0 = circle[i].x1();
371 double x1 = circle[i].x2();
372 double z0 = circle[i].y1();
373 double z1 = circle[i].y2();
374
346 switch (type) 375 switch (type)
347 { 376 {
348 case Circle:
349 {
350 LDEdgeLine* line = model.emplace<LDEdgeLine>();
351 line->setVertex(0, Vertex {x0, 0.0f, z0});
352 line->setVertex(1, Vertex {x1, 0.0f, z1});
353 line->setColor(EdgeColor);
354 }
355 break;
356
357 case Ring: 377 case Ring:
358 case Cone: 378 case Cone:
359 { 379 {
360 double x2, x3, z2, z3; 380 double x2, x3, z2, z3;
361 double y0, y1, y2, y3; 381 double y0, y1, y2, y3;
419 segment->setVertex(1, v1); 439 segment->setVertex(1, v1);
420 segment->setVertex(type == Disc ? 2 : 0, v2); 440 segment->setVertex(type == Disc ? 2 : 0, v2);
421 } 441 }
422 break; 442 break;
423 443
444 case Circle:
424 case Cylinder: 445 case Cylinder:
425 break; 446 break;
426 } 447 }
427 } 448 }
428 449

mercurial