C++ 设置三维空间中对象的方向

C++ 设置三维空间中对象的方向,c++,algorithm,opengl,3d,C++,Algorithm,Opengl,3d,我有一个程序,我正在三维空间中绘制一些形状,如矩形/圆形/三角形等,距离中心等距离 与中心等距离的两个点的示例(0,0,0) x1: 93, 313, 123 x2: -263, -135, -186 而且可能还有更多的要点 在这两点上,我通过以下方式绘制形状 gl矩形(x1,宽度,高度) 形状(矩形/三角形等)在起始顶点(x1或x2)与中心等距离处非常清晰。然而,这些形状在空间中的方向与我所寻找的方向不符 我想,形状所在平面的中心,是从中心来的一条假想线的正前方。这可能可以通过旋转平面来解决

我有一个程序,我正在三维空间中绘制一些形状,如矩形/圆形/三角形等,距离中心等距离

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

x1: 93, 313, 123
x2: -263, -135, -186
而且可能还有更多的要点

在这两点上,我通过以下方式绘制形状

gl矩形(x1,宽度,高度)

形状(矩形/三角形等)在起始顶点(x1或x2)
与中心等距离处非常清晰。然而,这些形状在空间中的方向与我所寻找的方向不符


我想,形状所在平面的中心,是从中心来的一条假想线的正前方。这可能可以通过旋转平面来解决,但我不确定采用什么方法。对于当前的示例,假设我有形状的顶点,但是如果中心需要垂直于向量C,我如何计算出矩形所在的平面,并旋转该平面,使其成为预弯曲的(到空间中心的线
(0,0,0)

(位于coord center和rect center之间的行),其工作原理如下(伪代码):

希望这是可以理解和正确的(没有尝试,并且在找到正确的词汇方面遇到了一些困难)

其他一些信息: A和B是辅助向量,是矩形上的局部向上和向左方向,规格化后可用于相应地计算矩形的4个点。
如果没有显示矩形,也要小心,它可能与绘图顺序有关,因此只要颠倒顺序,然后如果正面和背面错误…

我不知道glRectangle函数,但你不能自己计算三角形的角点,然后绘制一个四边形或两个三角形吗?@niktehpui:没有glRectangle函数a实际上。我写了一个包装器,以类似的方式绘制矩形。@niktehpui:问题不在于绘制复角,而在于确定位置/角度的方向,使矩形的
平面成为从中心开始的一条直线。@nikhetpui:我想做叉积,得到一个向量,与两个v垂直向量,但我不确定
向上向量
向上/向下向量
侧向向量
在这里的意思是什么;-/向上向量是你的向上方向,例如(0,1,0)或(0,0,1),如果你沿着向量C(从中心到矩形)看的话然后A是向左垂直的向量,B是向上垂直的向量,如果你改变这个方程中的上向量,你会旋转rectangles@nikhetpui:要求有点变化。我将不得不旋转已经绘制的单个对象,而不是在我们之前考虑的点上绘制(也可以是图像、视频播放器和矩形)通过在PushMatrix中使用类似于
glRotate
的东西。关于如何获取对象的平面并使其与向量平行,有什么想法吗?
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