src/circularprimitive.h

changeset 250
2837b549e616
parent 247
07ad61423c3c
child 264
76a025db4948
equal deleted inserted replaced
249:37d3c819cafa 250:2837b549e616
9 { 9 {
10 std::vector<ModelElement> result; 10 std::vector<ModelElement> result;
11 const auto xform = [&circ](const glm::vec2& p, float y){ 11 const auto xform = [&circ](const glm::vec2& p, float y){
12 return glm::vec3{circ.transformation * glm::vec4{p.x, y, p.y, 1}}; 12 return glm::vec3{circ.transformation * glm::vec4{p.x, y, p.y, 1}};
13 }; 13 };
14 const glm::vec3 origin = xform({0, 0}, 0); 14 const glm::vec3 primitiveOrigin = xform({0, 0}, 0);
15 const bool invertedMatrix = (glm::determinant(circ.transformation) < 0) != circ.inverted; 15 const bool invertedMatrix = (glm::determinant(circ.transformation) < 0) != circ.inverted;
16 switch(circ.type) { 16 switch(circ.type) {
17 case CircularPrimitive::Circle: 17 case CircularPrimitive::Circle:
18 ldraw::circle(circ.fraction.segments, circ.fraction.divisions, [&] 18 ldraw::circle(circ.fraction.segments, circ.fraction.divisions, [&]
19 (const glm::vec2&, const glm::vec2& p1, const glm::vec2& p2){ 19 (const glm::vec2&, const glm::vec2& p1, const glm::vec2& p2){
21 }); 21 });
22 break; 22 break;
23 case CircularPrimitive::Disc: 23 case CircularPrimitive::Disc:
24 ldraw::circle(circ.fraction.segments, circ.fraction.divisions, [&] 24 ldraw::circle(circ.fraction.segments, circ.fraction.divisions, [&]
25 (const glm::vec2&, const glm::vec2& p1, const glm::vec2& p2){ 25 (const glm::vec2&, const glm::vec2& p1, const glm::vec2& p2){
26 fn(triangle(origin, xform(p1, 0), xform(p2, 0))); 26 fn(triangle(primitiveOrigin, xform(p1, 0), xform(p2, 0)));
27 }); 27 });
28 break; 28 break;
29 case CircularPrimitive::Cylinder: 29 case CircularPrimitive::Cylinder:
30 ldraw::circle(circ.fraction.segments, circ.fraction.divisions, [&] 30 ldraw::circle(circ.fraction.segments, circ.fraction.divisions, [&]
31 (const glm::vec2&, const glm::vec2& p1, const glm::vec2& p2){ 31 (const glm::vec2&, const glm::vec2& p1, const glm::vec2& p2){

mercurial