首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

惊呆了!C语言也能画小猪佩奇?附源码社会我佩奇哥!

社会我佩奇兄那么火,那么我们接下来就分享下如何用 C语言 画小猪佩奇

使用带符号距离场(signed distance field, SDF)表示圆形:

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

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

我们通过差分求 SDF 的梯度近似值,然后用atan2()求出梯度的角度:

用 C 语言简单实现,在画布中画一个半径 0.8 并带有 0.1 寛度外框的圆形:

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

代码!▼

// ASCII Peppa Pig by Milo Yip#include #include #include #define T double

T c(T x,T y,T r)

T u(T x,T y,T t)

T v(T x,T y,T t)

T fa(T x,T y)

T no(T x,T y)

T nh(T x,T y)

T ea(T x,T y)

T ey(T x,T y)

T pu(T x,T y)

T fr(T x,T y)

T mo(T x,T y)

T o(T x,T y,T(*f)(T,T),T i)

T s(T x,T y,T(*f)(T,T),T i)

T f(T x,T y)

int main(int a,char**b)

2倍:

4倍:

8倍:

怎么样?这下会了吗?你还可以尝试着让这只佩奇动起来哟!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200330A0DACP00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券