Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- renderSphere = (quality_level) ->
- # Get basic points
- base = octahedronPoints()
- points = []
- # Generate Subdivided points
- for index = 0 to base.length step 3
- points = concat(
- points,
- divideTriangles(
- base[index],
- base[index+1],
- base[index+1],
- quality_level
- )
- )
- # Render
- glBegin(GL_TRIANGLES)
- for point in points
- glVertex3f(point.x, point.y, point.z)
- glEnd()
- divideTriangle = (Vector3f a, Vector3f b, Vector3f c, int level) ->
- Vector3f v0, v1, v2
- if level > 0
- v0 = mid(a, b)
- v1 = mid(b, c)
- v2 = mid(c, a)
- return concat(
- divideTriangle(a, v0, v1, level-1),
- divideTriangle(c, v1, v2, level-1),
- divideTriangle(b, v2, v0, level-1)
- )
- else
- return [
- normalise(a),
- normalise(b),
- normalise(c)
- ]
- mid = (Vector3f a, Vector3f b) ->
- new Vector3f((a.x + b.x) / 2, (a.y + b.y) / 2, (a.z + b.z) / 2)
Advertisement
Add Comment
Please, Sign In to add comment