强大的C语言编程是如何画出可爱的小猪佩奇社会人的?

强大的C语言编程是如何画出可爱的小猪佩奇社会人的?_第1张图片

C语言面向过程编程的语言;C++面向对象编程的语言。

两者有本质的区别,其实是完全不同的两种语言,只不过C++兼容C语言而已。

其中C++则一般看作是对C语言的扩展。因为C语言没有面向对象的语法结构,而当时业界又迫切需要面向对象的编程特性,所以贝尔实验室的开发者就为C语言添加了面向对象的结构。现在C++已经不只是C语言的扩展了,它已经完全可以被看作一种新的编程语言。虽然C语言的特性以及库函数仍然被C++支持,不过C++拥有自己的独立的类库体系,功能相当强大。

C/C++的优点在于与底层比较接近,可以控制的粒度更加精细,是开发系统级应用的最佳选择。关于跨平台,C/C++也是很好的语言,因为所有平台都支持,不同的是,不同平台支持的实现不同,类库不同,要编写跨平台的程序,需要选择跨平台的类库,如标准类库,如果标准类库的支持不够也只需要附加编写一个跨平台的支持类库。

强大的C语言编程是如何画出可爱的小猪佩奇社会人的?_第2张图片

我们曾在《用 C 语言画光(一):基础》中,使用到带符号距离场(signed distance field, SDF)表示圆形:

沿用这个方法表示形状,但这次我们想利用 ASCII 字符|/=\画出形状的外框,并填充内部,类似这样:

强大的C语言编程是如何画出可爱的小猪佩奇社会人的?_第3张图片

SDF 的梯度(gradient)代表 SDF 变化最大的方向,可用这个方向去决定用哪一个字符。

强大的C语言编程是如何画出可爱的小猪佩奇社会人的?_第4张图片

我们通过差分求 SDF 的梯度近似值,然后用

atan2()

求出梯度的角度:小编推荐一个学C语言/C++的学习裙【 六二七,零一二,四六四 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

强大的C语言编程是如何画出可爱的小猪佩奇社会人的?_第5张图片

用 C 语言简单实现,在

画布中画一个半径 0.8 并带有 0.1 寛度外框的圆形:

强大的C语言编程是如何画出可爱的小猪佩奇社会人的?_第6张图片
强大的C语言编程是如何画出可爱的小猪佩奇社会人的?_第7张图片

然后,我们就可以画多个圆形,把它们适当地旋转和缩放,用构造实体几何比它们组合起来,那么用19行代码就可以画出小猪佩奇了:

强大的C语言编程是如何画出可爱的小猪佩奇社会人的?_第8张图片
强大的C语言编程是如何画出可爱的小猪佩奇社会人的?_第9张图片

2倍:

强大的C语言编程是如何画出可爱的小猪佩奇社会人的?_第10张图片

4 倍:

强大的C语言编程是如何画出可爱的小猪佩奇社会人的?_第11张图片

8 倍:

强大的C语言编程是如何画出可爱的小猪佩奇社会人的?_第12张图片

今天也是精致的猪猪女孩~

最后我来说一说了解C的必要性:

强大的C语言编程是如何画出可爱的小猪佩奇社会人的?_第13张图片

1. 对内存和硬件的操作,是目前绝大部分高级语言所隐藏的,只有坚实C背景的同学,才可以考虑的更多,如果你想对原理有更多的了解,那么C其实是不可绕过的一个环节。小编推荐一个学C语言/C++的学习裙【 六二七,零一二,四六四 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

2. 想要缔造一个新的系统和语言,没有C是不行滴(或许C++勉强)。

3. 不管是OC的消息系统,Java的自动回收,Ruby的动态类扩充,这些花哨且时髦的东西,其实都可以用C来实现,而且很多都是用C来实现的,如果你想自己实施,看C吧。

4. 破解和分析程序,C可以起到很大的作用。C是可以人为创建Bug来破坏一个系统滴。

最后我引用我的一个大牛朋友的话:“请不要忽视C语言,它上可九天摘月,下可五洋捉鳖”。

你可能感兴趣的:(强大的C语言编程是如何画出可爱的小猪佩奇社会人的?)