gpt4 book ai didi

c++ - 检查框内是否有 3D 点

转载 作者:行者123 更新时间:2023-11-27 22:37:18 25 4
gpt4 key购买 nike

我有一个由 8 个顶点组成的框,可以在任何方向缩放或旋转,所以我为每个变换的顶点应用变换矩阵,我有中心、大小和 X、Y 和 Z 从中心的方向,如何我检查框内是否有任何 3D 点?

最佳答案

如果你有:

vec3 center; // Center of the box.
vec3 dx, dy, dz; // X,Y, and Z directions, normalized.
vec3 half; // Box size in each dimension, divided by 2.

vec3 point; // Point to test.

那么测试就很简单了:

vec3 d = point - center;
bool inside = abs(dot(d, dx)) <= half.x &&
abs(dot(d, dy)) <= half.y &&
abs(dot(d, dz)) <= half.z;

点积的主要性质是 X⋅Y == |X|⋅|Y|⋅cos(angle_formed_by_X_and_Y) .

如果Y被归一化,那么 X⋅Y本质上为您提供了 X 的投影长度到 Y (如果 XY 形成的角是钝角,则为负)。获得投影长度后,您只需将它们的绝对值与框的相应半边距进行比较。

关于c++ - 检查框内是否有 3D 点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52673935/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com