Die Kopfform
Ein Kopf ist hier ein Ellipsoid, dem vier Dinge zustoßen. Mehr braucht es nicht – und mehr verträgt der Strich auch nicht.
Jeder Punkt der Kopfoberfläche hat zwei Koordinaten: u ist
der Längengrad (0 an der Nasenwurzel, ±1.48 am Ohr), v der
Breitengrad (+1.57 am Scheitel, −1.57 am Kinn). Aus diesen beiden macht
kopfPunkt einen Punkt im Raum. Das ist die einzige Stelle,
an der die Form des Kopfes entsteht; alles Weitere – Drehung,
Projektion, Umriss, Frisur – rechnet nur noch mit dem, was hier
herauskommt.
Weil Merkmale in Kugelkoordinaten sitzen und nicht in Pixeln, wandern sie beim Drehen von selbst korrekt mit – samt Verkürzung und Verdeckung. Niemand rechnet aus, wo das linke Auge bei 20 Grad Drehung hinkommt. Es sitzt bei u = −0.5, und der Rest ergibt sich.
Acht Zahlen, ein Kopf
Die drei Halbachsen rx, ry, rz
geben die Grundgestalt: breit, hoch, tief. Die restlichen fünf
verformen sie. Am schnellsten versteht man sie, indem man sie anfasst –
darunter läuft derselbe Code wie im Blatt nebenan.
kegel und scheitelHoch
kegel verjüngt den Kopf nach unten, scheitelHoch
weitet ihn nach oben. Beide greifen in denselben Faktor k,
und zwar über ein einziges glattes Polynom statt über
zwei Äste für oben und unten.
Der Grund steht in der zweiten Zeile des Kommentars: zwei getrennte
Äste hätten am Äquator einen Knick in der Ableitung. Ein Knick in der
Formfunktion ist eine Kante in der Silhouette – und eine Kante, die
quer über beide Wangen läuft, sieht nicht nach Schädel aus, sondern
nach Fehler. Das Polynom trifft dieselben drei Stützpunkte
(k(−1) = 1 − kegel, k(0) = 1,
k(1) = 1 + scheitelHoch) und ist überall stetig differenzierbar.
beule – die Beule
beule beult den Schädel aus, damit er nicht wie gedreht
aussieht. Entscheidend ist der Faktor cos(u + …) in der
Welle: ohne ihn hinge die Beule nur an der Höhe.
Eine nur höhenabhängige Welle multipliziert x und
z gleichmäßig – das ist kein Buckel, das ist ein
Wulst rund um den Schädel. In der Silhouette
erscheint er auf beiden Seiten als dieselbe Kante auf derselben
Höhe, und zwar in jeder Drehung. Mit dem cos(u)-Anteil
sitzt die Beule an einer Stelle der Oberfläche:
asymmetrisch, organisch, wie von Hand.
kastig – die Kastigkeit
kastig zieht das Ellipsoid Richtung Superellipse: flache
Seiten, flacher Scheitel, gerundete Ecken. Der nächstliegende Weg dahin
wäre ein Exponent auf sin und cos. Er ist
falsch.
Ein Exponent hat am Äquator unendliche Steigung. Die Oberfläche wird dort so schnell abgetastet, dass zwischen zwei Abtastpunkten Lücken entstehen – und eine Lücke im Umriss ist ein leeres Winkelfach, das später als tiefe Delle in die Wange geglättet wird (siehe Punktwolke). Zusätzlich verzerrt der Exponent die Tangenten, an denen jeder Anker sein lokales Koordinatensystem aufhängt.
Stattdessen: eine glatte radiale Beule an den Diagonalen
über sin(2v) und sin(2u). Sie nähert die
Superellipse an, ohne irgendwo unendlich steil zu werden.
Benannte Formen
Die DNA würfelt stufenlos in den Bereichen aus
macheDna – rx zwischen 0.6 und 0.86,
ry zwischen 0.8 und 1.08 und so fort. Der Katalog hält
daneben sechs benannte Anker. Sie werden beim Zeichnen nicht benutzt;
sie sind Vokabular, damit man über Formfamilien reden kann, statt über
Zahlenbereiche.
Die Spanne ist bewusst enger als in der ersten Presse und weiter als im ersten Entwurf dieser: Kiefer, die breiter sind als die Stirn, kastige Schädel, lange Gesichter. Aber keine Birnen und keine Türme.
Ohne diese Spanne sind alle Köpfe Eier – und Eier sind Babys. Die Streuung der Kopfform ist der erste Ort, an dem ein Blatt entweder nach Menschen aussieht oder nach Sortiment.
Alles ist Einheitsmaß
Die Halbachsen sind keine Pixel. Gerechnet wird durchweg bei
mass = 1: ein Kopf ist rund zwei Einheiten hoch, ein
Strich von 0.024 ist gut zwei Prozent davon breit. Die
Zielgröße kommt erst ganz am Schluss als ctx.scale dazu.
Das ist keine Bequemlichkeit, sondern die Voraussetzung für den Cache
auf der nächsten Seite: weil die Projektion
homothetisch ist, ist ein Umriss bei Größe 1, mal mass,
exakt der Umriss bei mass. Deshalb trägt dieselbe
gerechnete Punktwolke das kleine Raster und die Großansicht.