私はkinectとofxopeniを使っています。実世界の座標に点群がありますが、カメラの傾きを相殺するためにそれらの点を回転させる必要があります。床面から必要なすべての情報が得られるはずですが、軸と回転角度を計算する方法がわかりません。
私の最初のアイデアは...
ofVec3f target_normal(0,1,0);
ofVec3f vNormal; //set this from Xn3DPlane floorPlane (not shown here)
ofVec3f ptPoint; //as above
float rot_angle = target_normal.angle(vNormal);
for(int i = 0; i < numPoints; i++){
cloudPoints[i].rotate(rot_angle, vNormal, ptPoint); //align my points to normal is (0 1 0)
}
これは、あまりにも単純すぎたようです。私はさまざまな記事を調べてきましたが、おそらくクォータリオンまたは回転行列が関係していることがわかりますが、どこから始めればよいかわかりません。関連する記事へのポインタや、軸と回転角度を取得するための最良の手法は何ですか? ofQuarterion または openni 関数を使用して非常に簡単に実行できると想像していますが、実装方法がわかりません。
一番
サイモン