2

我有一个程序,我在 3D 空间中绘制一些形状,例如矩形/圆形/三角形等,与中心等距。

与中心等距的两点的示例(0,0,0)

x1: 93, 313, 123
x2: -263, -135, -186

并且可能还有更多的积分。

在这两点上,我正在通过类似的方式绘制形状

glRectangle(x1, width, height);

(x1 or x2)形状(矩形/三角形等)在距中心等距的起始顶点处非常好。但是,对于我正在寻找的东西,这些形状在空间中的方向是错误的。

我希望形状所在平面的中心与来自中心的假想线垂直。这可能可以通过旋转飞机来解决,但我不确定要采用的方法。对于当前示例,假设我有形状的顶点,但我如何找出矩形所在的平面rotate that plane使其垂直(与来自空间中心的线(0,0,0)

4

1 回答 1

2

如果中心需要垂直于向量 C(坐标中心和矩形中心之间的线),它应该像这样工作(伪代码):

A = C x UP_VECTOR (CROSS-PRODUCT to calculate helper vector pointing in "sideway" direction of "rectangle")
B = C x A (CROSS-PRODUCT to get the local "up/down" vector of the "rectangle")
A = normalize(A)
B = normalize(B)
P1 = width/2 * A + height/2 * B
P2 = -width/2 * A + height/2 * B
P3 = -width/2 * A + -height/2 * B
P4 = width/2 * A + -height/2 * B

希望这是可以理解和正确的(没有尝试过并且在找到正确的词汇时遇到了一些麻烦)

一些附加信息: A 和 B 是辅助向量,是矩形上的局部向上和向左方向,经过归一化后,它们可用于相应地计算矩形的 4 个点。还要小心,如果没有显示矩形,它可能与绘图顺序有关,所以只要颠倒顺序,然后如果正面和背面是错误的......

于 2012-12-19T11:16:11.890 回答