c语言画猪程序,C语言画小猪佩奇(转载)

本文介绍了如何使用C语言结合Signed Distance Field(SDF)技术来绘制ASCII艺术形式的小猪佩奇。通过计算梯度和角度,选择合适的ASCII字符描绘形状,最终实现了一个简洁的代码实现。
摘要由CSDN通过智能技术生成

C语言画小猪佩奇

分享下如何用 C 语言画小猪佩奇

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

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

=====

//.....\\

||.......||

\\.....//

=====

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

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

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

#include #include #define T doubleT f(T x, T y) {

return sqrt(x * x + y * y) - 0.8f;}char outline(T x, T y) {

T delta = 0.001;

if (fabs(f(x, y)) < 0.05) {

T dx = f(x + delta, y) - f(x - delta, y);

T dy = f(x, y + delta) - f(x, y - delta);

return "|/=\\|/=\\|"[(int)((atan2(dy, dx) / 6.2831853072 + 0.5) * 8 + 0.5)];

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值