This is a blog about programming and technology and stuff. Music and art may come up occasionally, but that’s not really the focus. Therefore I must not only make an ass of myself by ranting at the world from a pathetic blog, I must also be USEFUL. So, I’ve decided to keep a seires of pages about various programming topics on here. I’ve just finished my first. It’s on spheres, and how to render them without resorting to the dreaded longitude/latitude fiasco. I give an approach which was detailed in the OpenGL Red Book, but for some reason, no sample that I know of was given. None that was simple and easy anyway, as everyone is confused about how to do it. So I did a page with a simple source sample that’s very self explanitory using OpenGL to draw these suckers. I also went in to a fairly complicated and deep discussion of why latitude and longitude are not only an inefficient rendering approach, but that they are also skewed (which is what makes them inefficient for rendering) and an obsolete coordinate system in general. Spherical geometry must be used for newer coordinate systems. Then I explain great circles and how they can be used to… blah blah blah… hull… blah… just read it. 😛

## Posts Tagged ‘tessellation’

## new educational page

September 18, 2008## possible new pages and game menu sphere trouble.

September 17, 2008I’m having mega trouble with this sphere business. I have been trying to create my own version of the menus in Metroid Prime 2. If you played that, you know these menus are totally sweet, and consist of a hub in the middle with spokes coming out as menu items. You rotate this hub in 3D, and the front most option is what is selected. I’m making a more solid version with cylindrical spokes (easy) and a sphere in the middle (hard.) You’re probably thinking, “why doesn’t this idiot just use latitude/longitude for his sphere?” Because it’s not as efficient as a geodesic sphere.

Now, by my understanding, the best method for triangular tessellation of a sphere is simple. Basically, we have several arrays of longitudinal looking great circles, each one with a different pole pair. The intersection of three great circles then is a triangle on the surface of the sphere. Problem is, I have no idea how to store and calculate the intersections of these great circles, even though I have a perfect understanding of the geometric concept.

Fig. 1 shows a great circle. That green plane intersects the center of the white sphere forming the red great circle. So, it’s not that hard of a concept.

But do we store the plane’s information, or the circle’s? It makes sense to me we should store the plane’s information with an orientation matrix (or other orientation representation) for the plane. So that’s out of the way.

Now, in Fig. 2, we see what a great circle array looks like. This is what I want each pole pair to have.

This is actually an image of the longitudinal lines on a lat/lon method sphere, such as a planet. These are actually, like I said before, a great gircle array. Now imagine a set of these, each with one pole originating from the vertex on a tetrahedron. This is a perfectly triangle tesselated sphere. I am really having trouble with the geometry math on this though, and would appreciate any help. If I get this working, I will do a page in the blog pages for it.

Speaking of pages, I am thinking of creating a blog page about text rendering in OpenGL. This will include instruction of how to load freetype fonts and how to display texture fonts. I will discuss the converting of the alpha-luminance bitmaps given by freetype in to power of two 8 or 4 bit alpha textures, and how to make and load pure bitmap fonts. Then displaying the textures with a simple function. I’ll also cover metrics. But only if it’s requested. Or if I feel like it.