1

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

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

现在我发现如果我将 P(X,Y,Z) 拆分为 P1(X,Z) 和 P2(Y,Z),计算它们的 Q 然后建立一个点,这同样适用于 3D 世界P'(Q1,Q2)(假设我从 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);

我觉得这很奇怪,因为 W(新轴)实际上只影响最后一点的 Z,并且提到 tesseract 它应该影响所有维度......

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

谢谢你的帮助!

4

1 回答 1

2
  • 2D (x,y) 中,y=0 上的投影表示线与线的交点:

    x'/a = x/(a+y)
    
  • 3D (x,y,z) 中,z=0 上的投影表示线与平面的交点:

    for y=0: x'/a = x/(a+z)
    for x=0: y'/a = y/(a+z)
    
  • 4D (x,y,z,w) 上的投影到 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]

现在可以通过求解找到交点:

[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矩阵中并在附近丢弃图形管道的末端由透视划分)。

于 2014-03-28T21:32:16.237 回答