@@ -227,7 +227,7 @@ namespace Pyro
227227 contour.push_back (curvepoint (p0.v , point.v , p2.v , p3.v , i * delta));
228228 }
229229 }
230- else if (point.type == PointType::BEZIERVERTEX )
230+ else if (point.type == PointType::BEZIERVERTEX_3 )
231231 {
232232 if (curveiterator < 1 )
233233 {
@@ -251,6 +251,29 @@ namespace Pyro
251251 }
252252 curveiterator += 2 ;
253253 }
254+ else if (point.type == PointType::BEZIERVERTEX_2)
255+ {
256+ if (curveiterator < 1 )
257+ {
258+ std::cerr << " Missing first vertex\n " ;
259+ continue ;
260+ }
261+
262+ if ((curveiterator + 1 ) > points.size ())
263+ {
264+ std::cerr << " Missing following vertices\n " ;
265+ continue ;
266+ }
267+
268+ auto p0 = points[curveiterator - 1 ];
269+ auto p2 = points[curveiterator + 1 ];
270+
271+ for (unsigned int i = 1 ; i < curve_resolution + 1 ; i++)
272+ {
273+ contour.push_back (bezierpoint (p0.v , point.v , p2.v , i * delta));
274+ }
275+ curveiterator += 1 ;
276+ }
254277 else
255278 {
256279 contour.push_back (point.v );
@@ -284,12 +307,19 @@ namespace Pyro
284307 this ->points .push_back ({p, PointType::CURVEVERTEX});
285308 }
286309
310+ void Shape::beziervertex (Vector p2, Vector p3)
311+ {
312+ assert (this ->points .size () > 0 );
313+ this ->points .push_back ({p2, PointType::BEZIERVERTEX_2});
314+ this ->points .push_back ({p3, PointType::BEZIERVERTEX_2});
315+ }
316+
287317 void Shape::beziervertex (Vector p2, Vector p3, Vector p4)
288318 {
289319 assert (this ->points .size () > 0 );
290- this ->points .push_back ({p2, PointType::BEZIERVERTEX });
291- this ->points .push_back ({p3, PointType::BEZIERVERTEX });
292- this ->points .push_back ({p4, PointType::BEZIERVERTEX });
320+ this ->points .push_back ({p2, PointType::BEZIERVERTEX_3 });
321+ this ->points .push_back ({p3, PointType::BEZIERVERTEX_3 });
322+ this ->points .push_back ({p4, PointType::BEZIERVERTEX_3 });
293323 }
294324
295325 std::vector<int32_t > Shape::indices ()
0 commit comments