ユーザーが手を使って画面上のオブジェクトを指すだけの直感的なポインティングメカニズムを実装しようとしています。最後の部分の書き方がわからないことを除いて、ほとんどの準備ができています。
基本的に、次のようなキャリブレーション ポイントのリストがあります。
typdef struct {
Point2D pointOnScreen, // gives an x/y pixel screen position
Point3D pointingFinger, // gives the position of the user's pointing finger, in space
Point3D usersEyes // gives the position of the user's eyes, in space
} CalibrationPoint;
std::vector<CalibrationPoint> calibrationPoints;
さて、アイデアは、これらを使用して、次calibrationPoints
のような関数を作成できるということです。
Point2D whereIsTheUserPointing(Point3D pointingFinger, Point3D usersEyes) {
return the corresponding point on screen; // this would need to be calibrated
// somehow using the calibrationPoints
}
しかし、これを行う方法の計算を理解するのに苦労しています。基本的な考え方は、ポインティングするときは、指を一直線に並べることyour eyes
です。ただし、3D で画面の位置を把握していないため、代わりにキャリブレーション ポイントを取得し、そこからユーザーが指している場所を推測できると考えました。関数を作成してシステムを調整するにはどうすればよいですか?finger
object you're pointing at
whereIsTheUserPointing()