社会我佩奇兄那么火,那么我们接下来就分享下如何用 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倍:
怎么样?这下会了吗?你还可以尝试着让这只佩奇动起来哟!
领取专属 10元无门槛券
私享最新 技术干货