Math 基于父尺度求解摄像机旋转的快速方程

Math 基于父尺度求解摄像机旋转的快速方程,math,Math,我有一个相机连接到一个父母的规模导致相机“变焦”。我希望相机在较低的比例下倾斜得更多。我需要一个方程,它将根据父对象的比例在最小值和最大值之间倾斜摄影机 任何帮助都将不胜感激=) 见下图: 如果我读对了,比例从0.1到1.0不等,你希望角度从20到40度不等。对吧? 一个简单的线性公式如下 CurrentAngle = MinAngle + (CurrentScale - MinScale) * (MaxAngle - MinAngle) / (MaxScale - MinScale)

我有一个相机连接到一个父母的规模导致相机“变焦”。我希望相机在较低的比例下倾斜得更多。我需要一个方程,它将根据父对象的比例在最小值和最大值之间倾斜摄影机

任何帮助都将不胜感激=)

见下图:


如果我读对了,比例从0.1到1.0不等,你希望角度从20到40度不等。对吧?

一个简单的线性公式如下

CurrentAngle = MinAngle + (CurrentScale - MinScale) * (MaxAngle - MinAngle) / (MaxScale - MinScale)
             = 20 + (CurrentScale - 0.1) * (40 - 20) / (1 - 0.1)
             = 20 + (CurrentScale - 0.1) * 20 / 0.9
因此,如果您使用0.64作为
CurrentScale
,如上面的示例所示,您将得到

             = 20 + (0.64 - 0.1) * 20 / 0.9
             = 32

线性在数学上是最简单的,但是如果你的应用程序设置了动画,或者需要在比例的一端或另一端更快地改变角度,你可以通过使用带有曲线的公式(可能是对数、抛物线或指数?)得到更精细的结果。

如果我读对了,比例从0.1到1.0不等,你希望角度在20到40度之间变化。对吧?

一个简单的线性公式如下

CurrentAngle = MinAngle + (CurrentScale - MinScale) * (MaxAngle - MinAngle) / (MaxScale - MinScale)
             = 20 + (CurrentScale - 0.1) * (40 - 20) / (1 - 0.1)
             = 20 + (CurrentScale - 0.1) * 20 / 0.9
因此,如果您使用0.64作为
CurrentScale
,如上面的示例所示,您将得到

             = 20 + (0.64 - 0.1) * 20 / 0.9
             = 32

线性在数学上是最简单的,但是如果你的应用程序设置了动画,或者需要在比例的一端或另一端更快地改变角度,你可以通过使用带有曲线的公式(可能是对数、抛物线或指数?)得到更精细的结果。

如果我读对了,比例从0.1到1.0不等,你希望角度在20到40度之间变化。对吧?

一个简单的线性公式如下

CurrentAngle = MinAngle + (CurrentScale - MinScale) * (MaxAngle - MinAngle) / (MaxScale - MinScale)
             = 20 + (CurrentScale - 0.1) * (40 - 20) / (1 - 0.1)
             = 20 + (CurrentScale - 0.1) * 20 / 0.9
因此,如果您使用0.64作为
CurrentScale
,如上面的示例所示,您将得到

             = 20 + (0.64 - 0.1) * 20 / 0.9
             = 32

线性在数学上是最简单的,但是如果你的应用程序设置了动画,或者需要在比例的一端或另一端更快地改变角度,你可以通过使用带有曲线的公式(可能是对数、抛物线或指数?)得到更精细的结果。

如果我读对了,比例从0.1到1.0不等,你希望角度在20到40度之间变化。对吧?

一个简单的线性公式如下

CurrentAngle = MinAngle + (CurrentScale - MinScale) * (MaxAngle - MinAngle) / (MaxScale - MinScale)
             = 20 + (CurrentScale - 0.1) * (40 - 20) / (1 - 0.1)
             = 20 + (CurrentScale - 0.1) * 20 / 0.9
因此,如果您使用0.64作为
CurrentScale
,如上面的示例所示,您将得到

             = 20 + (0.64 - 0.1) * 20 / 0.9
             = 32

线性在数学上是最简单的,但如果应用程序设置了动画,或者需要在比例的一端或另一端更快地更改角度,则使用带有曲线的公式(可能是对数、抛物线或指数?)可能会得到更精细的结果。

您需要的是距离,而不是比例。考虑变量Vistue<代码> y>代码>和目标水平距离<代码> x>代码>。摄像机的角度
θ

θ = ATAN(y/x)*(180/π)
给定结束条件
y_1/x=TAN(20°)
y_2/x=TAN(40°)

y_2 = TAN(40°)/TAN(20°)*y_1 = 2.3054*y_1
x = COS(20°)/SIN(20°)*y_1 = 2.7474*y_1
需要初始高度
y_1
来计算水平距离
x

现在既然
s=0.1
意味着
y(s)=y_1
s=1.0
意味着
y(s)=y_2
,那么

y(s) = 10/9*(y_2-y_1)*s+(10*y_1-y_2)/9
     = y_1*10*(1-s)/9+y_1*(10*s-1)*TAN(40°)/(9*TAN(20°))
     = y_1*(1.450*s+0.855)

TAN(θ) = y(s)/x
TAN(θ) = 10*(1-s)*TAN(20°)/9+(10*s-1)*TAN(40°)/9
使用以下命令:

θ(s) = 180/π*ATAN(0.5279*s+0.3112)
使用以下示例值

s      θ(s)
0.1    20°
0.55   31°
1.0    40°  

你需要的不是比例,而是距离。考虑变量Vistue<代码> y>代码>和目标水平距离<代码> x>代码>。摄像机的角度
θ

θ = ATAN(y/x)*(180/π)
给定结束条件
y_1/x=TAN(20°)
y_2/x=TAN(40°)

y_2 = TAN(40°)/TAN(20°)*y_1 = 2.3054*y_1
x = COS(20°)/SIN(20°)*y_1 = 2.7474*y_1
需要初始高度
y_1
来计算水平距离
x

现在既然
s=0.1
意味着
y(s)=y_1
s=1.0
意味着
y(s)=y_2
,那么

y(s) = 10/9*(y_2-y_1)*s+(10*y_1-y_2)/9
     = y_1*10*(1-s)/9+y_1*(10*s-1)*TAN(40°)/(9*TAN(20°))
     = y_1*(1.450*s+0.855)

TAN(θ) = y(s)/x
TAN(θ) = 10*(1-s)*TAN(20°)/9+(10*s-1)*TAN(40°)/9
使用以下命令:

θ(s) = 180/π*ATAN(0.5279*s+0.3112)
使用以下示例值

s      θ(s)
0.1    20°
0.55   31°
1.0    40°  

你需要的不是比例,而是距离。考虑变量Vistue<代码> y>代码>和目标水平距离<代码> x>代码>。摄像机的角度
θ

θ = ATAN(y/x)*(180/π)
给定结束条件
y_1/x=TAN(20°)
y_2/x=TAN(40°)

y_2 = TAN(40°)/TAN(20°)*y_1 = 2.3054*y_1
x = COS(20°)/SIN(20°)*y_1 = 2.7474*y_1
需要初始高度
y_1
来计算水平距离
x

现在既然
s=0.1
意味着
y(s)=y_1
s=1.0
意味着
y(s)=y_2
,那么

y(s) = 10/9*(y_2-y_1)*s+(10*y_1-y_2)/9
     = y_1*10*(1-s)/9+y_1*(10*s-1)*TAN(40°)/(9*TAN(20°))
     = y_1*(1.450*s+0.855)

TAN(θ) = y(s)/x
TAN(θ) = 10*(1-s)*TAN(20°)/9+(10*s-1)*TAN(40°)/9
使用以下命令:

θ(s) = 180/π*ATAN(0.5279*s+0.3112)
使用以下示例值

s      θ(s)
0.1    20°
0.55   31°
1.0    40°  

你需要的不是比例,而是距离。考虑变量Vistue<代码> y>代码>和目标水平距离<代码> x>代码>。摄像机的角度
θ

θ = ATAN(y/x)*(180/π)
给定结束条件
y_1/x=TAN(20°)
y_2/x=TAN(40°)

y_2 = TAN(40°)/TAN(20°)*y_1 = 2.3054*y_1
x = COS(20°)/SIN(20°)*y_1 = 2.7474*y_1
需要初始高度
y_1
来计算水平距离
x

现在既然
s=0.1
意味着
y(s)=y_1
s=1.0
意味着
y(s)=y_2
,那么

y(s) = 10/9*(y_2-y_1)*s+(10*y_1-y_2)/9
     = y_1*10*(1-s)/9+y_1*(10*s-1)*TAN(40°)/(9*TAN(20°))
     = y_1*(1.450*s+0.855)

TAN(θ) = y(s)/x
TAN(θ) = 10*(1-s)*TAN(20°)/9+(10*s-1)*TAN(40°)/9
使用以下命令:

θ(s) = 180/π*ATAN(0.5279*s+0.3112)
使用以下示例值

s      θ(s)
0.1    20°
0.55   31°
1.0    40°  

如果你想让相机指向同一个位置,你需要一个小三角,这非常简单有效。我对它做了一点修改,只在0.25比例后旋转角度,所以当你放大时,我现在得到了一条很好的曲线。如果你想让相机指向同一位置,需要一个小三角。这非常简单有效。我对它做了一点修改,只在0.25比例后旋转角度,所以当你放大时,我现在得到了一条很好的曲线。如果你想让相机指向同一位置,需要一个小三角。这非常简单有效。我对它做了一点修改,只在0.25比例后旋转角度,所以当你放大时,我现在得到了一条很好的曲线。如果你想让相机指向同一位置,需要一个小三角。这非常简单有效。我改变了我