Difference between ofPolyline::getCentroid2D() and ofMesh::getCentroid()

Hi, I just found out the two functions return different values.
Shouldn’t they do the same thing in 2d space?

Here’s my test code.

//--------------------------------------------------------------
void ofApp::setup(){
    
    ofPath path;
    path.moveTo(100, 100);
    path.lineTo(200, 100);
    path.lineTo(200, 200);
    path.lineTo(100, 200);
    path.lineTo(150, 150);
    path.close();
    
    polyline = path.getOutline()[0];
    mesh = path.getTessellation();
    
    cout << polyline.getCentroid2D() << endl;
    cout << mesh.getCentroid() << endl;
}

//--------------------------------------------------------------
void ofApp::update(){
    
}

//--------------------------------------------------------------
void ofApp::draw(){
    
    polyline.draw();
    ofTranslate(200, 0);
    mesh.draw();
}

If you run the code, it outputs

161.111, 150, 0
150, 150, 0

The shapes look exactly the same though.

Why does the two functions return different values and which one is correct?

Thanks in advance!

1 Like