I would like to know hot to use the curveTo() of ofPolyline to draw a closed polygon, I read the documentation of it but I can work my head around it
Any help will be much appreciated
I would like to know hot to use the curveTo() of ofPolyline to draw a closed polygon, I read the documentation of it but I can work my head around it
Any help will be much appreciated
@nardove there was a helpful thread on this topic recently: ofPath and lineTo vs. curveTo
if you’re working with a collection of vertices and want to create a closed shape, you need to add repeated vertices at the beginning and end of the shape. like a bezier curve, ofPolyline::curveTo() uses interpolation and requires additional points before and after a segment in order to calculate and draw that shape.
compare these 3 examples:
ofPolyline line1, line2, line3;
ofSetColor(255);
// requires 4 points in order to draw the shape (begin, end, 1 before, 1 after)
for(int i=0; i<=90; i+=30){
float x = ofGetWidth()/4 + cos( DEG_TO_RAD * i ) * 100;
float y = ofGetHeight()/2 + sin( DEG_TO_RAD * i ) * 100;
ofCircle(x, y, 5);
line1.curveTo( x, y );
}
// counts from 0 to 360 but does not close
for(int i=0; i<=360; i+=30){
float x = ofGetWidth()*2/4 + cos( DEG_TO_RAD * i ) * 100;
float y = ofGetHeight()/2 + sin( DEG_TO_RAD * i ) * 100;
ofCircle(x, y, 5);
line2.curveTo( x, y );
}
// by adding a point before and after, the circle is closed
for(int i=-30; i<=360+30; i+=30){
float x = ofGetWidth()*3/4 + cos( DEG_TO_RAD * i ) * 100;
float y = ofGetHeight()/2 + sin( DEG_TO_RAD * i ) * 100;
ofCircle(x, y, 5);
line3.curveTo( x, y );
}
line1.draw();
line2.draw();
line3.draw();