C语言手写爱心

您所在的位置:网站首页 爱心代码编程C语言动态 C语言手写爱心

C语言手写爱心

2023-04-18 15:21| 来源: 网络整理| 查看: 265

目录

需求分析

代码效果

原理分析

爱心轨迹分析

轨迹测试

心形实现

 动态心形分析

需求分析

最近这个爱心桥段火了!一个帅气高冷的学霸小哥,写了一个爱心代码,直接碾压了所有同学,并获得班花的迷之爱恋!这样的故事,不论真假,对于我们程序员而言,想想就觉得美滋滋... 

 是不是满满的青春感?荷尔蒙和胶原蛋白在代码中肆意飞溅!我们现在来复刻一下这个爱心撩妹代码吧!

扫描二维码关注公众号,回复: 14649842 查看本文章 代码效果

多说无益,直接上效果:

原理分析

看到不停奔涌而出的爱心,有经验的小伙伴,可能马上就会想到“粒子喷射器”,这个和粒子喷射器,确实有相似之处。不过游戏开发中的粒子效果,一般都使用已有的粒子模型,然后去修改参数和粒子素材。这里的话,我们就只有手动实现整个过程了,但是基础原理是相同的,产生新粒子(爱心),修改粒子的属性,粒子的渲染,粒子的消亡。

爱心轨迹分析

不要被小心心干扰我们的视线哦,很多人说,开发中架构大于代码细节。不论这话对不对,直觉告诉我,先分析出爱心的整体轨迹,然后再去实现其中的万点繁星。

怎样实现这个爱心轨迹呢?374年前,也就是公元1648年,52岁的大数学家笛卡尔,遇见了自己的白月光-瑞典公主克里斯汀,因为阶级差距不敢表白。其实也就是没有钱。没有钱,真的是万万不能的啊。通过各种机缘和努力,笛卡尔成为了公主的家庭数学教师,和白月光朝夕相处。数学家的智慧让公主无比崇拜,很快他们就相爱了。说实话,整日面对这样的公主,也许只有我们的韦神能够控制自己吧。

 

 幸福和甜蜜总是那么短暂,瑞典国王很快发现他们的恋情。国王很生气,他只是请笛卡尔做家庭教师,万万没想到...国王处死了笛卡尔。笛卡尔在临刑前,写了最后一封情书。公主在情书中,发现了一个公式。公主毕竟没有白学,通过公式,绘制了一个图案,这就是传说中的“笛卡尔心形曲线”:

 好了,故事说完了,该写代码了。问题是我们很多人数学并不好,很多程序员老鸟的数学也不好,如果因为这个东西,就要去重学数学,那这个撩妹成本也太了。所以直接“借鉴”方便的公式使用。笛卡尔曲线公式演变出很多公式,我选择了这个(注意感觉这个公式绘制的心形比较苗条,有些公式绘制的效果像个大馒头,影响B格和效果)

{\rho} = \frac{sin\alpha * \sqrt{\left | cos\alpha \right |} }{sin\alpha+\sqrt{2}}-2sin\alpha+2

这是一个极坐标公式。我们来复习一下极坐标的基本概念:

在极坐标中,任意一点的位置,由r和θ决定,r表示这个点到“极点”O之间的距离,θ表示如上图所示的夹角。根据这个公式,我们可以直接写出如下代码:

// angle表示角度θ,r表示ρ double r = sin(angle) * sqrt(fabs(cos(angle))) / (sin(angle) + 1.4142) - 2 * sin(angle) + 2;

但是我们在使用代码进行绘制的时候,使用的都是直角坐标系,所以还需要把这个极坐标,转换成直角坐标系。直接查百度百科,得知:

 现在我们就的到了完整的曲线公式:  

r = sin(angle) * sqrt(fabs(cos(angle))) / (sin(angle) + 1.4142) - 2 * sin(angle) + 2; x = r * cos(angle); y = r * sin(angle); 轨迹测试 #include #include #include int main(void) { initgraph(1920, 900); int R = 100; double angle = 0; for (angle = 0; angle


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3