我正在使用 Matlab 为我本学期的一门课程创建一个小型国际象棋游戏。我遇到的问题是让用户能够选择其中一个棋子。
为了简化事情,我这样做是为了让用户通过单击棋子所在的方格来选择棋子,而不是单击棋子本身(我认为这会更困难)。我知道如何获取视口的 x 和 y 坐标,但是如何将这些坐标转换为 3 空间坐标?
我知道每个视口坐标有多个 x,y,z 坐标,但我只对 z = 0 的 x,y,z 坐标感兴趣(因为板本身位于 x,y 平面与 z 轴相交,其中 z = 0)。
我正在使用 Matlab 为我本学期的一门课程创建一个小型国际象棋游戏。我遇到的问题是让用户能够选择其中一个棋子。
为了简化事情,我这样做是为了让用户通过单击棋子所在的方格来选择棋子,而不是单击棋子本身(我认为这会更困难)。我知道如何获取视口的 x 和 y 坐标,但是如何将这些坐标转换为 3 空间坐标?
我知道每个视口坐标有多个 x,y,z 坐标,但我只对 z = 0 的 x,y,z 坐标感兴趣(因为板本身位于 x,y 平面与 z 轴相交,其中 z = 0)。
您可能想从文件交换中查看select3d 。它允许您选择 3D 中的补丁对象(无论如何,这可能是您想要创建板的方式)。
不是特定于 MATLAB 的,但这可能会有所帮助:给定相机参数和点击位置,您可以将光线投射到场景中并测试交叉点,但仅考虑逆问题可能会容易得多:映射您的国际象棋网格正方形到屏幕坐标上,然后在 2D 中与点击位置进行比较。请注意,这在渲染场景时已经完成。