繁体   English   中英

我如何计算位置是否在3D立方体内

[英]how can i calculate if a location is inside 3d cube

我正在寻找一种计算位置是否在旋转立方体内的方法。

信息我有位置(x,y,z) ,旋转(x,y,z)和大小(x,y,z) 我为此使用Javascript,我尝试了与其在Minecraft插件中所做的相同的方式,但是当时它不包括旋转:

x >= min.x && 
x <= max.x && 
y >= min.y && 
y <= max.y && 
z >= min.z && 
z <= max.z

我怎样才能做到这一点?

很可能,您已经为长方体进行了转换,包括定位,缩放和旋转。 您可以使用此变换(更具体地说,是它的逆变换)将任意点变换为长方体的局部坐标系。 在这里,很容易检查点是否在立方体内。

我在这里做一些假设。 如果它们与您的方案不完全匹配,则需要稍作修改。 但是原理保持不变。 我将假设标准立方体是轴对齐的并且在(0, 0, 0)(1, 1, 1) 我进一步假设该位置参考下角。 然后,将整体转换(您很可能已经拥有)计算为:

T = translate(position) * rotation * scale(size)

如果我们需要确定点p是否在立方体内部,请使用T的倒数对其进行转换:

pInLocalSpace = inverse(T) * p

最后检查这是否在标准多维数据集中:

if(pInLocalSpace.x >= 0 && pInLocalSpace.x <= 1
   && pInLocalSpace.y >= 0 && pInLocalSpace.y <= 1
   && pInLocalSpace.z >= 0 && pInLocalSpace.z <= 1)
    ; //point is inside the cube
else
    ; //point is outside of the cube

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM