2013-10-26 268 views
1

我试图计算3D世界中4D点的位置。我从2D开始,尝试将它扩展到3D,然后再扩展到4D。首先,我发现它很容易计算二维点在线上的投影位置。4D到3D透视投影

Whoops, there should be() in the first equation: x/(a+y) 

现在我想通了,同样会在3D世界中适用,如果我分裂P(X,Y,Z)的P1(X,Z)和P2(Y, Z),计算它们的Q值,然后建立一个点P'(Q1,Q2)(假设Im从C(0,-a)点看Z轴正无穷大并渲染到XY平面)。

nx = (a*x)/(a+z); 
ny = (a*y)/(a+z); 

后来我想它只是简单的增加一个点P3,并与

nx = (a*x)/(a+z); 
ny = (a*y)/(a+z); 
nw = (a*w)/(a+z); 

出来了,我觉得这件事很奇怪,becouse W(新轴)实际上只影响最后的ž点,并参考tesseract它应该影响所有的维度...

这是行不通的,所以我想问你是否可以提供一些细节我做错了什么。我很确定它的“点分裂”问题,并且方程应该更复杂。请不要用矩阵和四元数攻击我。我只想在(0,-1)看一个简单的静态相机(0,0)...

感谢您的帮助!

+0

我认为这可能更适合[math.stackexchange.com](http://math.stackexchange.com/)。 [这个相关问题的答案似乎也很有用。](http://stackoverflow.com/a/6989466/1427124) – DaoWen

回答

2
  • 2D(X,Y)上y = 0的投影装置,用线线的交叉点:在3D(X,Y,Z)

    x'/a = x/(a+y) 
    
  • 一个在z投影= 0意味着与平面线的交叉点:

    for y=0: x'/a = x/(a+z) 
    for x=0: y'/a = y/(a+z) 
    
  • 我Ñ4D(X,Y,Z,W)上的投影瓦特= 0意味着线的交叉点与超平面:

    for y=0, z=0: x'/a = x/(a+w) 
    for x=0, z=0: y'/a = y/(a+w) 
    for x=0, y=0: z'/a = z/(a+w) 
    
  • ...等

可选地一个可以计算出的线的交叉点,并使用所述参数的形式,其中的线由所述的超平面:

[px,py,pz,pw] = [p0x,p0y,p0z,p0w] + t * [p1x,p1y,p1z,p1w] 

其中,参数t是任意数量

[hx,hy,hz,hw] = [h0x,h0y,h0z,h0w] + a * [h1x,h1y,h1z,h1w] + b * [h2x,h2y,h2z,h2w] + c * [h3x,h3y,h3z,h3w] 

现在的交点可以b:

的超平面由所述的e。通过求解发现:

[px,py,pz,pw] = [hx,hy,hz,hw] 

或多个显式:

[p0x,p0y,p0z,p0w] + t * [p1x,p1y,p1z,p1w] = [h0x,h0y,h0z,h0w] + a * [h1x,h1y,h1z,h1w] + b * [h2x,h2y,h2z,h2w] + c * [h3x,h3y,h3z,h3w] 

有4个方程(一个用于每个维度X,Y,Z,W)和4个未知数(A,B,C, t),除非该行平行于超平面,否则可以求解。上述

的想法受到解析几何在4D(其中w成分表示自己单独的尺寸),并且它们不应当与齐次坐标(其中w组件用于翻译/投影整合混淆到4D矩阵并且在视角划分的情况下在图形管线的末端附近被丢弃)。