太阳运动(Y/Z 运动)
Sun Movement (Y/Z movement)
我想知道在 y 轴和 z 轴上模拟 sunrise/sunset 的最佳方法。目前它正在做我想要的,但移动速度太快(比如每 3 秒它已经完成了整个太阳路径并且已经在反向移动回到原点)。
我知道这与结合 sin 和 cos 的秒变量有关,因为调用此函数并在每一帧移动光的位置。基本上我希望它与我游戏的 50 计时器相关联:
- 50 秒日出
- 25秒中午
- 0 秒 sunset/game 结束了
目前我有:
lightPosition = Point_E3d(0,
std::abs(100 *std::cos(seconds)),
-100 * std::sin(seconds));
想知道实现此效果的正确代码格式是什么。
这只是简单的三角函数。 sine(x * n) 和 cosine(x * n) 的周期(直到函数重复的时间)都是 2*pi / n。在这种情况下,n = 1,因此周期为 6.28,这意味着一整天(和一夜)将持续 6.28 秒。如果您想增加周期,请将 seconds
参数乘以一个小于一的数字。一点代数表明:
period of sin(x * n) = 2*pi / n
period of sin(.1256 * x) = 2*pi / .1256 = 6.28 / 0.1256 = 50
因此,取秒的正弦和余弦 * 0.1256,而不仅仅是秒。
lightPosition = Point_E3d(0,
std::abs(100 *std::cos(seconds * 0.1256 )),
-100 * std::sin(seconds * 0.1256));
请注意,这也包括夜间时间。如果您只希望 12 小时的时间段持续 50 秒,请乘以 0.1256 的一半,也就是 0.0628。
我想知道在 y 轴和 z 轴上模拟 sunrise/sunset 的最佳方法。目前它正在做我想要的,但移动速度太快(比如每 3 秒它已经完成了整个太阳路径并且已经在反向移动回到原点)。
我知道这与结合 sin 和 cos 的秒变量有关,因为调用此函数并在每一帧移动光的位置。基本上我希望它与我游戏的 50 计时器相关联:
- 50 秒日出
- 25秒中午
- 0 秒 sunset/game 结束了
目前我有:
lightPosition = Point_E3d(0,
std::abs(100 *std::cos(seconds)),
-100 * std::sin(seconds));
想知道实现此效果的正确代码格式是什么。
这只是简单的三角函数。 sine(x * n) 和 cosine(x * n) 的周期(直到函数重复的时间)都是 2*pi / n。在这种情况下,n = 1,因此周期为 6.28,这意味着一整天(和一夜)将持续 6.28 秒。如果您想增加周期,请将 seconds
参数乘以一个小于一的数字。一点代数表明:
period of sin(x * n) = 2*pi / n
period of sin(.1256 * x) = 2*pi / .1256 = 6.28 / 0.1256 = 50
因此,取秒的正弦和余弦 * 0.1256,而不仅仅是秒。
lightPosition = Point_E3d(0,
std::abs(100 *std::cos(seconds * 0.1256 )),
-100 * std::sin(seconds * 0.1256));
请注意,这也包括夜间时间。如果您只希望 12 小时的时间段持续 50 秒,请乘以 0.1256 的一半,也就是 0.0628。