Một cách bạn có thể làm là bắt đầu với một vật rắn platonic có các cạnh là hình tam giác - ví dụ như một hình bát diện . Sau đó, lấy từng tam giác và chia nhỏ một cách đệ quy thành các tam giác nhỏ hơn, như sau:
Khi bạn đã có đủ số lượng điểm, bạn chuẩn hóa các vectơ của chúng để chúng cách tâm vật rắn một khoảng không đổi. Điều này làm cho các cạnh phình ra thành hình dạng giống hình cầu, với độ mịn ngày càng tăng khi bạn tăng số điểm.
Chuẩn hóa ở đây có nghĩa là di chuyển một điểm sao cho góc của nó so với một điểm khác là như nhau, nhưng khoảng cách giữa chúng là khác nhau. Đây là một ví dụ hai chiều.
A và B cách nhau 6 đơn vị. Nhưng giả sử chúng ta muốn tìm một điểm trên đoạn thẳng AB cách A. 12 đơn vị.
Chúng ta có thể nói rằng C là dạng chuẩn hóa của B đối với A, với khoảng cách 12. Chúng ta có thể thu được C với mã như sau:
#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
Nếu chúng ta thực hiện quá trình chuẩn hóa này trên nhiều điểm, tất cả đều thuộc cùng một điểm A và có cùng khoảng cách R, thì các điểm chuẩn hóa sẽ nằm trên cung của một đường tròn có tâm A và bán kính R.
Ở đây, các điểm đen bắt đầu trên một đường thẳng và "phình ra" thành một vòng cung.
Quá trình này có thể được mở rộng thành ba chiều, trong trường hợp đó bạn nhận được một hình cầu chứ không phải hình tròn. Chỉ cần thêm một thành phần dz vào hàm chuẩn hóa.
Nếu bạn nhìn vào quả cầu ở Epcot , bạn có thể thấy kỹ thuật này đang hoạt động. đó là một khối đa diện với các mặt lồi ra để làm cho nó trông tròn hơn.