我需要数学家的帮助,因为正如他们所说,我不是繁荣昌盛
逐帧绘制 180 帧的 GIF,在 GIF 中的轮子,根据想法,最初旋转很快,结果平稳停止,但我不明白如何平滑减速
我举了一个最简单的例子来说明现在是如何发生的。我做了某种旋转加速,在循环结束时,我从文件夹中取出输出图片并将列表翻过来,但现在停止太尖锐了
int totalFrames = 180;
float lastAngle = 0;
for (int frame = 0; frame < totalFrames; frame++) {
Image img = Image.FromFile(...);
Image main = new Bitmap(img.Width, img.Height);
float angle = 0;
if (frame > 15)
angle = (lastAngle + frame / 5f) % 360; << вот тут нужна плавность
lastAngle = angle;
using (Graphics g = Graphics.FromImage(main)) {
g.DrawImage(RotateImage(img, angle), new Rectangle(0, 0, img.Width, img.Height));
main.Save($"out/{frame}.jpg", ImageFormat.Jpeg);
}
}
通过降低车轮的旋转速度(或角速度)来实现平稳制动。车轮的旋转速度(我将使用公式和代码中的名称
vAngular
)是车轮每单位时间转动的角度。在您的情况下,这是每 1 帧旋转x度。这个速度
vAngular
必须在一段时间内从该值平滑地减小vAngularStart
到该值。vAngularEnd = 0
为了降低循环中的速度 - 你需要找到一些vDelta
- 每 1 帧的旋转速度的变化。它由以下公式计算:哪里
deltaT
是减速时间。由于您的情况下速度会降低,因此
vDelta
它将是负数。将以上所有内容应用于您的代码,我们得到以下内容:
通过改变 和 的值来调节制动的平稳
vAngularStart
性deltaT
。唯一需要注意的是:这个计算并不能保证在最后一帧你的轮子会转向
angle = 0
。