我正在尝试实现一种直观的指向机制,用户可以用手直接指向屏幕上的对象。我已经准备好了大部分,除了我不确定如何写最后一部分。
基本上,我有一个校准点列表,如下所示:
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
- finger
-object you're pointing at
对齐在一条直线上。但是,由于我没有 3D 屏幕的位置,我想我可以获取校准点并从中推断出用户指向的位置。我将如何编写whereIsTheUserPointing()
函数和校准系统?