⭐简介
前段时间《点燃我温暖你》爆火,许多女生都被那一段爱心代码给深深吸引,看的我手也有点痒痒。我不得也写一个?
是的,我也写了。
⭐仓库链接
❤️爱的仓库❤️
Github-爱的仓库: https://github.com/MR-XieXuan/Love-Warehouse
Github-Love.js:https://github.com/MR-XieXuan/Love-Warehouse/blob/main/PeachHearts/Love.js
💞 爱的仓库是我新建的仓库,打算以后放一些浪漫的代码。
✍如果你们有好浪漫的代码也可以提交在我的仓库里收集起来。
⭐代码讲解
🛠所用工具
💡数学准备
❤️ 桃心的数学公式
这个公式可以得到一个桃心,点 point(x,y) 都在桃心上
🤍 { x = 16 s i n 3 t ; y = 13 c o s t − 5 c o s 2 t − 2 c o s 3 t − c o s 4 t ; 🤍 \left\{ \begin{aligned} x & = 16sin^3t; \\ y & = 13cost- 5cos2t - 2cos3t -cos4t; \\ \end{aligned} \right. 🤍{xy=16sin3t;=13cost−5cos2t−2cos3t−cos4t;
🎵点的生成
点就是这个程序的音符 如果点都在桃心上的话,未免太难看了点。
所以我们采用一个范围在[0,1]的随机数 random 来生成点的初始位置。
但是如果点均匀的发布在桃心内部,效果属实不太理想,所以我们采用一个映射。
通过random生成一个数 rand 使得 rand 大多数都靠近与 1 .通过测试,我取了下面的公式
🎵 r a n d = r a n d o m 3 25 🎵rand=random^{\frac{3}{25}} 🎵rand=random253
🎶 点的运动
通过以下的公式来对点进行运动
t i m e time time 是现在的帧数
( x , y ) (x,y) (x,y)为初始位置
( x ′ , y ′ ) (x',y') (x′,y′)为当前帧的位置
🎶 { x ′ = x c o s 6 t i m e − 30 30 ∗ ( t i m e − 30 ) 60 ; y ′ = y c o s ( ( t i m e − 30 ) / 60 ) ; 🎶 \left\{ \begin{aligned} x' & = x cos^6\frac{time - 30}{30}*\frac{(time - 30)}{60}; \\ y' & = y cos((time - 30) / 60); \\ \end{aligned} \right. 🎶⎩⎨⎧x′y′=xcos630time−30∗60(time−30);=ycos((time−30)/60);
👋 联系作者
✍️本文作者为 > 【谢玄.】 Mr-XieXuan < 于 2022/11/10/3:00 发布于 CSDN 。
⌨️GitHub: [ https://github.com/MR-XieXuan }
🔍个人私站: [ https://main.mrxie.xyz/ ]