Don Havey

Sustainably harvested information

Archive for the sphere tag

Tutorial #5: The IP-mapping globe  

Earth previewHumans love maps. They love the mapping of any type of information, not strictly geographical. Maps are bursting with information. They transcend the boundaries of language. Maps are good.

I’m going to make a map today. Well, a globe. It’s going to be a very basic extension of our icosahedron-based sphere. We’ll translate a bunch of latitude/longitude pairs into three-dimensional coordinates to visually define the countries, then we’ll add a single marker on the globe that represents the user’s location, based on his or her IP address.

What it looks like

Here’s our completed Earth class: The final result

And here are the classes you’ll need: Earth classes

What you’ll learn

  • Translating latitude/longitude pairs to Points
  • Mapping an IP address to a physical location via Geobytes and PHP

Sounds like fun, right?

Read more…

The article has

2 responses

Written by Don

April 24th, 2008 at 12:09 pm

Tutorial #3: The icosahedron-based geodesic sphere  

Icosahedron geodesic sphere previewThis quick tutorial will show a more reasonable alternative to the electronsphere, which addressed the problem of distributing points evenly on a sphere. We’ll be creating a geodesic sphere (like at the Epcot center) using a subdivided icosahedron. It’s a relatively simple script and inexpensive in terms of CPU usage. Much more efficient than the electronsphere approach, though not quite as interesting.

Here’s where we’re headed: The final result

And here are the classes you’ll need: Icosahedron classes

About the geodesic sphere

The geodesic dome and sphere are often credited to Buckminster Fuller, although it is generally acknowledged that he did not invent the shape or concept, but rather investigated and expanded upon them. Read more in the Wikipedia article on geodesic spheres.

There is no one standard way to create a geodesic, but in general, the process is as follows:

  1. Create a Platonic solid. We’ll be using the icosahedron.
  2. Subdivide the faces of the Platonic solid to the desired level of resolution.
  3. Project the points of each subdivided face to the surface of a sphere.

Additionally, the term buckyball is used to describe the truncated counterpart to the geodesic sphere. Buckyballs are found frequently in molecular science… and also in soccer. We’ll take a look at how to convert one to the other.

Why create a geodesic sphere?

If you need to create a sphere in Processing just for decoration or whatnot, by all means, use the sphere() command. You do not need this level of complexity.

But let’s say that you need a sphere that can transform itself into a different shape, or warp itself according to some input variable, or behave like a blob… then you’ll probably want to use a geodesic. As I mentioned, its one of the most straightforward ways to create an array of points on a sphere.

Of course, you could also use this script in more physical applications: the coordinates it defines could be used to construct a real-life geodesic structure. You’d probably want to drop the points into Rhino and unfold the thing first.

What you’ll learn

I’ll touch upon the following issues in this tutorial:

  • Subdividing a face to an arbitrary level of resolution.
  • Constraining points to a sphere.
  • Finding the centroid of a face.
  • And of course, more about geodesics.

Still sound interesting?

Read more…

The article has

no responses yet

Written by Don

April 17th, 2008 at 9:40 am

Tutorial #1: More than one way to skin a sphere  

Electronsphere previewThis first tutorial will address the question of how to evenly distribute points on a sphere. It’s not as simple as it sounds.

I’ll be addressing one method today, which I’ll be calling the electronsphere. The idea is this: treat each point as if it were an electron - repelling all other electrons around it - and limit its maximum distance from a center point. You should end up with a pretty well-distributed sphere of points. The trick will be how to “skin” (triangulate) the sphere. More on that later…

For now, take a look at where we’re going: The final result

And download the classes: Electronsphere classes

When you’re looking at the example, give it about 30-60 seconds to resolve the positions of the electrons (longer on slower computers, waayyy faster within the Processing environment), then you’ll see triangles start to appear between the points on the sphere. Both processes are iterative and random, and therefore quite unpredictable, but they should produce quasi-accurate results.

Why should I distribute points on a sphere?

I’m not really sure. The first time I encountered the problem I was in need of a spherical shape that could be warped or dented. I used a more sensible approach than the electronsphere, which I’ll show in a later tutorial, but the electronsphere is much more exciting. By changing the repulsion between electrons, you could potentially use this to create a sphere of points that reacts to mouse movements or other interactions and warps a mapped image accordingly. That would be worthwhile.

What you’ll be learning

We’ll address all of these issues in this tutorial:

  • Extending classes
  • Node interaction: repulsion forces
  • Using vectors to constrain points and forces
  • Finding the circumcenter of a three-dimensional triangle (face)
  • Back face culling
  • And in general, how to set up an iterative Processing application

Let’s get started…
Read more…

The article has

no responses yet

Written by Don

April 7th, 2008 at 9:41 am