【发布时间】:2014-06-16 10:06:31
【问题描述】:
假设我们在距离观察者 d 处有一个半径为 r 的球体
我们定义如下
O: observer
C: Center of the sphere
P: arbitrary visible point of the sphere (fromthe observer)
OC: line connecting the observer to the center of the sphere ( fixed length: d)
OP: Line connecting the observer and an arbitrary visible point of the sphere (variable length depending on the angle: a)
CP: Line connecting the center of the sphere and this arbitrary visible point (fixed length: r)
theta: angle between OC and OP
shi: angle between OC and CP
如果 P 是球体的“外部”可见点之一,使用基本几何我们就有了
theta_max = atan( r/ sqrt(d^2-r^2) )
shi_max = PI/2 - theta_max
对于任何其他点,我得到了以下等式
r.cos(shi) + a.cos(theta) = d
r.sin(shi) = a.sin(theta)
我认为这些等式是正确的,但我看不出有办法将它们写成 shi=f(theta),因为 'a' 也会随之变化。
有可能吗?还是这些步骤有误?
编辑
使用最新的两个方程,我们可以得到
tan(theta)= r.sin(shi)/(d-r.cos(shi))
但如果可能的话,我需要得到 shi=f(theta)
【问题讨论】:
-
您想从两个方程中消除一个变量 (
a),这在这里很容易。你为a求解一个方程,然后将结果放入另一个方程。然后a没了,你可以为shi解决。 -
感谢 pentadecagon,但如果我这样做,我只能得到 tan(theta)=r.sin(shi)/(d-r.cos(shi)),这给了我作为 shi 函数的 theta ,但如果它以封闭形式存在(我不知道),我无法得到它的倒数 shi = f(theta)。编辑帖子以指出这一点
标签: math 3d geometry projection