【问题标题】:Finding a point clicked in a grid查找在网格中单击的点
【发布时间】:2011-09-18 01:11:16
【问题描述】:

鉴于此网格(http://i.stack.imgur.com/Nz39I.jpg 是梯形/梯形,而不是正方形),您如何找到用户单击的点? IE。当用户单击网格中的一个点时,它应该返回像 A1 或 D5 这样的坐标。

我正在尝试为此编写伪代码,但我被卡住了。谁能帮我?谢谢!

编辑:我仍然卡住了...有谁知道找到网格高度的任何方法?

【问题讨论】:

  • 你有网格中每条线的端点坐标吗??
  • 不。这就是我掌握的所有信息。没有坐标,只有测量。感觉资料太少了。给定第一个和最后一个网格的高度(如图35px和120px所示),有没有办法找到梯形的高度?

标签: graphics grid pseudocode


【解决方案1】:

如果是真正的透视投影,您可以通过反投影运行点击点以找到它在 3D 世界中的 X、Z 坐标。该网格具有规则间距,您可以使用简单的数学计算 A1、D5 等。

如果它只是您绘制的东西,那么您必须将 Y 坐标与水平线的位置进行比较以确定哪一行。然后,您需要检查其相对于斜线的位置(左/右)以获取列 - 为此,您需要端点的坐标或线的方程。

另一种选择是存储相同的图像,其中每个“正方形”都用不同的颜色填充。然后,您检查用户单击但在此备用图像中的像素的颜色。这种方法假定它是一个固定的图像并且是最不灵活的。

【讨论】:

  • 这不是 3D 网格。这只是绘制的东西(2D)。这更适用于 2D HTML5 游戏类型。感觉资料太少了。给定第一个和最后一个网格的高度(如图35px和120px所示),有没有办法找到梯形的高度?
  • 我会选择第三个选项,制作图像的另一个副本,并在备用图像中为每个正方形涂上不同的颜色。向人们展示原版并使用替代版来确定点击了哪个方格。
【解决方案2】:

如果你有网格线端点的坐标,那么

尝试对每条网格线使用内外测试并找到位置

【讨论】:

  • 我没有坐标。我只有网格的测量值。
【解决方案3】:

由于此网格只是 2D 网格平面的 3D 视图,因此存在一个投影变换,可将网格上的坐标转换为 2D 平面上的坐标。要找到这种变换,只需在平面上标记 4 个不同的点(例如边缘),为它们分配二维平面上的坐标并求解得到的线性方程组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-14
    • 2022-08-20
    • 2013-05-28
    • 1970-01-01
    • 1970-01-01
    • 2017-12-21
    相关资源
    最近更新 更多