如何将屏幕位置转换为等距位置

Posted

技术标签:

【中文标题】如何将屏幕位置转换为等距位置【英文标题】:How to convert screen position to isometric position 【发布时间】:2012-06-13 06:48:13 【问题描述】:

如何将屏幕位置(X,Y)转换为等距位置?

我在这里有将等距位置转换为屏幕位置的代码:http://jsfiddle.net/CR3JS/

这是公式轴:http://s15.postimage.org/xyxfukxkp/iso_Axis.jpg

我的问题是:如何将屏幕位置 (X,Y) 转换为等距位置?

类似:

screenToIsometric(144, 88) -> X: 10, Y: 0, Z: 1

【问题讨论】:

您想旋转多少度?只需将 (144, 88,0) 乘以旋转矩阵en.wikipedia.org/wiki/Rotation_matrix#In_three_dimensions 当然,一旦你有了角度,这可以简化为将 x 和 y 值乘以常数得到 x y z,反之亦然 【参考方案1】:

您不能只有一个 X、Y、Z 点,因为一个 2D 屏幕位置将映射到多个不同的图块 - 一个位于不同的 Z 级别。如果您试图弄清楚用户在等轴测视图中单击了什么对象,最简单但有点脏的方法就是从上到下遍历所有 Z 级别,在示例函数中使用公式的反向并检查是否有任何适合单击位置,如果该位置为空,则继续下一级。

【讨论】:

以上是关于如何将屏幕位置转换为等距位置的主要内容,如果未能解决你的问题,请参考以下文章

使用 AR Foundation 将屏幕触摸位置转换为 AR 中的世界位置

将 3D 位置转换为 2d 屏幕位置 [r69!]

如何通过鼠标移动事件获取相机位置并在three.js中转换为屏幕坐标? [关闭]

如何在屏幕上的特定位置设置视图?

转换为计算/绝对位置

UNITY 触摸位置到世界位置 2D