Jednym ze sposobów jest rozpoczęcie od bryły platońskiej o trójkątnych bokach - na przykład ośmiościanu . Następnie weź każdy trójkąt i rekurencyjnie podziel go na mniejsze trójkąty, na przykład:
![rekurencyjnie narysowane trójkąty](https://i.stack.imgur.com/lDPzU.png)
Gdy masz wystarczającą liczbę punktów, normalizujesz ich wektory, tak aby wszystkie znajdowały się w stałej odległości od środka bryły. Powoduje to, że boki wybrzuszają się do kształtu przypominającego kulę, z rosnącą gładkością w miarę zwiększania liczby punktów.
Normalizacja oznacza tutaj przesunięcie punktu tak, aby jego kąt w stosunku do innego punktu był taki sam, ale odległość między nimi była inna. Oto dwuwymiarowy przykład.
![wprowadź opis obrazu tutaj](https://i.stack.imgur.com/cBdmU.png)
A i B są oddalone od siebie o 6 jednostek. Ale przypuśćmy, że chcemy znaleźć punkt na linii AB, który jest oddalony o 12 jednostek od punktu A.
![wprowadź opis obrazu tutaj](https://i.stack.imgur.com/RuGb0.png)
Możemy powiedzieć, że C jest znormalizowaną postacią B w odniesieniu do A, z odległością 12. Możemy otrzymać C za pomocą następującego kodu:
#returns a point collinear to A and B, a given distance away from A.
function normalize(a, b, length):
#get the distance between a and b along the x and y axes
dx = b.x - a.x
dy = b.y - a.y
#right now, sqrt(dx^2 + dy^2) = distance(a,b).
#we want to modify them so that sqrt(dx^2 + dy^2) = the given length.
dx = dx * length / distance(a,b)
dy = dy * length / distance(a,b)
point c = new point
c.x = a.x + dx
c.y = a.y + dy
return c
Jeśli wykonamy ten proces normalizacji na wielu punktach, wszystkie w odniesieniu do tego samego punktu A i przy tej samej odległości R, wówczas znormalizowane punkty będą leżeć na łuku koła o środku A i promieniu R.
![wybrzuszony odcinek linii](https://i.stack.imgur.com/OXQSw.gif)
Tutaj czarne punkty zaczynają się na linii i „wybrzuszają” w łuk.
Ten proces można rozszerzyć do trzech wymiarów, w którym to przypadku otrzymujesz kulę zamiast koła. Po prostu dodaj składnik dz do funkcji normalizacji.
![znormalizowane wielokąty](https://i.stack.imgur.com/JP62n.png)
![wypukły oktaedr poziomu 3](https://i.stack.imgur.com/6Uc0C.gif)
Jeśli spojrzysz na kulę w Epcot , możesz w pewnym sensie zobaczyć, jak działa ta technika. to dwunastościan z wybrzuszonymi twarzami, aby wyglądał bardziej okrągło.