我有一个3D数学问题,但是我就是无法解决。
我有三个点的数据。这些数据是平面上的(2D)坐标,在3D空间中浮动。我还知道投影的(2D)坐标。这导致以下数据数组:
[[[x1,y1], [px1,py1],
[[x2,y2], [px2,py2],
[[x3,y3], [px3,py3]]
普通坐标(如x1等)表示平面上的坐标,其他坐标(如px1等)表示投影坐标。
我想做的是将一个新的2D坐标([x4,y4])投影出来。
.
我尝试过的方法:
当然,你需要有投影的眼光,所以我把它设置为[xe,ye,-1]。xe和ye是已知的。(这是照片参考,所以我只是把眼睛放在照片的中心。)
在眼睛下面,我放置了投影表面(z=0)。这给出了以下投影坐标:
[[[x1,y1], [px1,py1,0],
[[x2,y2], [px2,py2,0],
[[x3,y3], [px3,py3,0]]
我无法对平面上的坐标进行同样的操作,因为我对该平面一无所知。
我还想到可以制作从眼睛穿过投影坐标的线的参数化公式。对于线1,它应该是:
line1x = xe+(px1-xe)*t1
line1y = ye+(py1-ye)*t1
line1z = -1+t1 // = -1+(0--1)*t1
我还知道3D点之间的距离。这与2D相同。这意味着点1和点2之间的距离将是sqrt((x1-x2)^2+(y1-y2)^2)。
我也知道任何时候线1和线2之间的距离。这是sqrt((line1x-line2x)^2+(line1y-line2y)^2+(line1z-line2z)^2)。
然而,我不太清楚该怎么做......甚至不确定这是否是正确的方法。
希望你能理解我想要做什么,并且你能帮助我。
提前感谢!