gpt4 book ai didi

c++ - 获取矩形的所有顶点

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:25:52 25 4
gpt4 key购买 nike

在我的程序中,我需要绘制一个垂直于来自中心的直线的矩形。

为了在 3D 空间中以这种方式定位矩形,我使用了 gluLookAt 给它 lookAt 点并绘制了矩形图形。这对我来说工作正常。

要绘制矩形(在我的框架中,它在后面使用 openGL),我现在使用矩形类并使用 3D Node 对其进行扩展(其中 node 是具有 lookAt 点)。给定宽度、高度和顶部顶点,绘制矩形(节点位于左上角顶点并使用 lookAt 定向矩形)。

Node 也有一个 getPosition() 函数,它给我它的 3D 位置(矩形的左上角 - 比如 300,400,20)。我正在尝试获取 3D 空间中其他三个顶点 的位置以用于我的操作。由于矩形是在 3D 空间中定向的,因此不能仅通过添加宽度和高度来获取其他三个顶点。对于 3D 方向的矩形,如何获取其他三个顶点的位置?

最佳答案

坐标的最小数量略小于 9:这是 3d 空间中通用矩形的三个顶点(Ax、Ay、Az、Bx、By、Bz、Cx、Cy、Cz)。

最后一个是例如D=A+(B-A)+(C-A)=B+C-A。

为什么稍微少一点,是A、B、C坐标的任何三元组不一定形成90度角——但追求简单的可能排列并准备计算确实没有多大意义叉积或归一化 vector 。

 A----B
| |
C---(D)

编辑: vector 算术初级:

要添加/减去 vector ,需要对元素求和。 A=B+C 表示(ax=bx+cx;ay=by+cy;az=bz+cz)。

(任何维度)的点积是项乘积的总和: 点(A,B) = ax*bx + ay*by + az*bz;//对于 2、3、4,任意数量的元素/维度。

Cross product是一个特殊的运算符,至少在 2 维和 3 维中定义明确。叉积的一种几何解释是它产生一个垂直于其参数的两个 vector 的 vector 。

如果 A 是一个 vector (ax,ay,az),它也意味着从原点 O=(0,0,0) 开始的方向 vector ,即 A = A-O = (ax-0,ay-0,az-0 );同样,(B-A) 是从 A 到 B 的 [方向] vector (有时写为 AB(顶部有一个箭头 -->))

可以“添加”这些定向 vector ,例如作为:

    o----->
\
\
<------o
/
/
x

因此,如果将 vector A+(B-A) + (C-A) 相加,则到点 D 结束。

关于c++ - 获取矩形的所有顶点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14121009/

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