跳动的红心
最新一步电视剧里面有程序员写的跳动的红心,不少人私下问我是如何实现的。红心图像如下
红心中的数学
红心的顶部其实比较简单,左边和右边的心瓣都可以用半圆来构成。
半径为r的标准圆的方程为:
分别把这个圆的圆心向平移并抛弃的部分我们就可以得到红心的上半部分:
现在就剩下下半部分。
我们可以看一下的图形
看起来非常的像半个心尖了。我们把这个图在x方向向左平移1,向下平移就可以得到左半部分的心尖。
右边部分只需要对称一下就好了,最后的公式为
这样全部的数学公式就已经完成。
使用上面的公式,文章开头的图其实就已经可以绘制出来了。现在需要解决的问题是,我们怎么心动?
其实稍微分析一下也很简单,无非就是一个缩放。上面的两个半圆半径需要缩放,下面的反正弦函数也缩放一下就好了。半圆公式已经支持不同的半径,我们先把反正弦函数改造如下
其中的半圆的半径,这个半径会跟随时间变化。
是一个随着时间变化的参数。它来控制整体形状的大小,为了变化平滑,我们可以让它为帧号的函数
这里t是当前的时间戳,都是根据自己喜好可以调整的,0.2控制大小变化的幅度,2控制变化的速度。
到这里,其实我们的心就已经可以随着时间变化了。
最终结果
编写程序就可以绘制出最终我们想要的红心。这里我使用python分别绘制了边框的红心和填充的红心。使用的函数都是比较简单的,简单实用。
更多文章在公众号“探知轩”发布,欢迎关注。