Abartıp tek satır demeyeceğim ama, AWK ile üç boyutlu küre boyamaca.
LC_ALL=ISO-8859-1 awk 'BEGIN{ \
pi=atan2(0, -1); r=126; \
for (j=0; j<360; j+=10) { \
lx=cos(pi/180*j); ly=sin(pi/180*j); lz=2; lm=sqrt(lx*lx+ly*ly+lz*lz); \
print "P6"; print "256 256"; print "255"; \
for (y=-128; y<128; y++) \
for (x=-128; x<128; x++) \
if (x*x+y*y < r*r) { \
z=sqrt(r*r-x*x-y*y); a=(x*lx+y*ly+z*lz)/(r*lm); \
printf "%c%c%c",((a>0)?int(a*256):0),0,0 \
} else printf "%c%c%c",0,0,0 \
}}'\
| convert -delay 8 - sphere.gif
(Resmin boyutu için özür diliyorum, orjinal boyutu daha makul olmakla beraber, burada nasıl küçültülebilir bulamadım.)
Meraklısı için:
Kürenin üzerindeki herhangi bir noktadan geçen yüzey vektörünün ışık vektörüyle yaptığı açı ilgili pikselin değerini belirliyor. Yüzey vektörü de zaten küre üzerindeki noktanın konumu (yani x-y-z'si). Işık vektörü ile noktadan geçen vektörü nokta çarpımı yapıp, mutlak değerlerinin çarpımlarına bölerek bu değeri bulabiliyoruz.
Gerisi de aşağıdakilere takla attırmaktan ibaret:
AWK + PPM + ImageMagick
Hipnotize oldum sabah sabah! :)