Eigen で重心

C++線形代数ライブラリ Eigen で、3次元位置ベクトルを10個並べた Matrix があって、これの重心が原点になるようにしたい場合

Eigen::Matrix<double, 10, 3> position;

// 座標代入部分省略

// 重心ベクトル
Eigen::Vector3d centroid;
centroid = position.colwise().sum() / position.rows();
ref.rowwise() -= centroid.transpose();

という具合になる。python/numpy 系に比べると colwise, rowwise といった少々直感的にわかりづらいものを使う必要がある。