English 中文(简体)
c++ 开放gl转换模型坐标为世界碰撞探测坐标
原标题:c++ opengl converting model coordinates to world coordinates for collision detection
  • 时间:2009-10-07 18:33:18
  •  标签:

(这完全是 or,起源于左上角,x 是右边的,正直是 y。)

在世界空间,我有一席之地,可以轮换(学位)。

我可以采用直截了当的罚款、轮值、比额表、你想要做的一切。

我正被真正混淆起来的那部分是从其地方坐标计算得.的世界坐标。

我一直在努力使用这一公式:

x  = x*cos(t) - y*sin(t) 
y  = x*sin(t) + y*cos(t)

where (x, y) are the original points,
(x , y ) are the rotated coordinates,
and t is the angle measured in radians

from the x-axis. The rotation is
counter-clockwise as written. 
-credits duffymo

我试图执行这样的公式:

//GLfloat Ax = getLocalVertices()[BOTTOM_LEFT].x * cosf(DEG_TO_RAD( m_orientation )) - getLocalVertices()[BOTTOM_LEFT].y * sinf(DEG_TO_RAD( m_orientation ));
//GLfloat Ay = getLocalVertices()[BOTTOM_LEFT].x * sinf(DEG_TO_RAD( m_orientation )) + getLocalVertices()[BOTTOM_LEFT].y * cosf(DEG_TO_RAD( m_orientation ));

//Vector3D BL = Vector3D(Ax,Ay,0);

我为翻译点创造了一个矢量,把它储存在瞬间世界——变相成员变量。 罚款。 然而,在我的主要通道中,我从(0,0)到矢量BL的一条线,似乎正好从位于世界坐标原处(后方底层左上角)的十字路口。

基本上,由于水位的定位越大,它就在(0,0)世界范围内协调系统来源。

我感到,我这样做是错误的:

and t is the angle measured in radians from the x-axis.

也许我不应在这一公式中使用m_orientation(试金轮)?

感谢!

编辑:我之所以这样做,是因为要探测碰撞。 我需要知道,试金星坐标(星号为硬体)位于世界协调探测碰撞的地点。

最佳回答

你们所做的是,在2d时用角Q对病媒进行轮换[特别线性转变]。 它保持病媒的长度,并改变其方向。

“alt

[线性转变:添加剂L(m + n) = L(m) + L(n) where{m, n} Euro Media , homogeneous L(km)。 =k>.L(m) ,其中m 欧元矢量和k 欧元轴心 因此:

You divide your vector into two pieces. Like m[1, 0] + n[0, 1] = your vector. Then as you see in the image, rotation is made on these two pieces, after that your vector take the form:

m[cosQ, sinQ] + n[sinQ, cosQ] = [mcosQ - nsinQ, msinQ + ncosQ

也可以看

如果你试图获得与你的物体坐标相当的眼睛坐标,那么你就应该以开放式的模型表对物体坐标进行倍数。

M => Model view Format and transpose of [x y z w] 是您的物体坐标:

M[x y z w]T = 心理协调[x y z w]T

问题回答

这似乎在一定程度上克服了重复的问题:通常,你会把物体的世界位置和方向与自己的地方坐标分开。 标的是在示范空间进行的,因此立场不变。 无论你是否轮流担任,每个协调机构的世界立场都是一样的——使世界立场成为把地方坐标转化为世界空间的立场。

任何轮换都是围绕着特定来源进行的,典型的恶性/焦式公式(0,0)是你的来源。 如果目前使用的协调制度(0,0)是原产地,那么,你必须将其转化为实际的、进行轮换的系统,然后转变。 通常对模型空间进行定义,以便(0,0)成为模型的起源,使这一步骤变得微不足道。





相关问题
热门标签