Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Finding the face of an icosahedron in which a vector falls in

  1. Jun 6, 2008 #1
    I am thinking about, given an icosahedron (polyhedron of 20 triangular faces) that "represents" a sphere (some may call it a Fuller Projection) and a vector describing a point in the sphere, finding the face of the icosahedron in which the vector falls in.

    The vector is unitary, the vectors describing the polyhedron are unitary, so I thought that I could do this by checking the angles between my vector and every vector of the vertices, then checking which three vertex vectors were the nearest, and voila', those are the vertices of my triangular face.

    Wrong. In some conditions (near one of the vertices) two of the nearest vertices are not necessarily those of the triangle one would look for.

    If any of you knows a way to do this, I would be very grateful!
    Last edited: Jun 6, 2008
  2. jcsd
  3. Jun 11, 2008 #2
    Welcome to PF! Never having done such a calculation, I am not sure of my
    ground here, but since no one else has yet replied, here is a suggestion
    that might work: Let a, b, and c be unit vectors (relative to an origin at
    the centre of the sphere) representing the vertices of one of the
    triangular faces of the icosahedron. Then the vector V=a+b+c should be
    perpendicular to the triangular face and point to the middle of the face.
    Now compute one such representative vector V for each of the faces. I should
    think that the correct face is the one whose representative vector has the
    smallest dot product with your test vector pointing to some point on the
    sphere. Points on edges or vertices of the icosahedron would of course
    belong to two or three faces respectively.

    If this does not work, then perhaps a Google search for "voronoi" might
    help you further. I hope this is of some help in getting started.
  4. Jun 11, 2008 #3
    Oops. I meant the LARGEST dot product.
  5. Jun 13, 2008 #4
    You could project the vector onto the plane of each face, and see which plane has the largest projection.

    Edit: I think this is the same as what pleknoid is saying.
    Last edited: Jun 13, 2008
  6. Jun 13, 2008 #5
    Hmmm. Does this really work? Consider a point on the sphere whose vector is perpendicular to one of the faces (i.e. the reference vector for the face, as defined in my post above). The projection of this vector onto its face would be zero, whereas the projection onto the other faces (excluding an opposite face) would not be zero. i.e. the largest projection would select the wrong face.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook