- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
这可能不是发布此内容的正确位置,但我不知道还有什么地方可以发布它。
我有 5 条线 (d1 -> d5) 在 3d 透视图中彼此均匀分布,我有 (a) Angular 、(d1) 和 (b5) 的值。我需要用 jquery 计算 (b2, b3, b4, d2, d3, d4, d5)。
我可以用以下方法计算 d5:
d5 = d1 - ( b5 * Math.tan(a))
但我不知道如何计算 b2、b3 和 b4。 (d1分为4个相同的segments(s))任何帮助将不胜感激。
最佳答案
您正在寻找的是投影量表。在计算上执行此操作的最简单方法是使用齐次坐标,取一个矩形(如下面第一张图片中的矩形),其中 V 在其上“向右无限远”,并找到一个投影变换,将该矩形映射到中的梯形第二张照片。矩形的顶点是(0|0), (0|d1), (b5|d1), (b5|0) 对应梯形的顶点是(0|0), (0|d1), ( b5|d5), (b5|0).
由于这是四个点,其中没有三个点共线,我们可以为该变换找到一个唯一的矩阵(按比例缩放)M。经过一些数学运算,结果发现这个矩阵是:
[d1*b5,0,0]
[0,b5*d5,0]
[d1-d5,0,b5*d5]
例如,如果你想找到坐标 b3 和 d3,你可以将这个矩阵乘以直线中间点的齐次坐标,即向量 (0.5*b5,d1,1)^T 和你得到点 (b3|d3) 的齐次坐标,可以通过去齐次化将其转换为欧几里德坐标,即将前两个分量除以第三个分量。
一般来说,如果你有两个点 (b1|d1) 和 (bn|dn) 并且想知道中间 n-2 个等距点在这样的投影尺度上的坐标,你可以计算坐标 bi 和 di像这样(在你的例子中,n 当然是 5):
let M := matrix [[d1*bn, 0, 0], [0, bn*dn, 0], [d1-dn, 0, bn*dn]]
let v := ((i-1)/(n-1)*bn, d1, 1)
let (x,y,z) := M*v
let bi := x/z and di := y/z
如您所见,这是一个用于计算这些投影等距点坐标的简单算法,它可以很好地推广到任意数量的点。
如果您想要一个封闭的公式,您可以直接计算 bi 和 di 为:
let bi := (bn*d1*(i-1))/(dn*n+(d1-dn)*i-d1)
let di := d1*dn*(n-1)/(dn*n+(d1-dn)*i-d1)
关于javascript - 计算 3d 空间等距离的通用公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15285108/
我是一名优秀的程序员,十分优秀!