Finding The Edges Of An Object

Hi,

How would I find out which vertex points define the edge (outline) from a specific point.

So if create a vector from the specific point to the edge points and beyond to a surface I would form a shadow or silhouette

Would I have to go through each vertex and use the dot product or is there a more efficent way

Many Thanks
-Alex

If your object is just an arbitrary triangle mesh, then I don’t think there is a way that’s fundamentally better than checking each edge.

But you can optimize by calculating which edges can theoretically be part of the outline. Edges where the object is concave or flat can never be part of the silhouette, so they need not be checked. This can be precalculated and stored with the object.

Hi,

Ok how would I be able to find out if a edge is concave or convex?

-Alex

Let’s say you have these two polygons, and you want to know if the mesh is concave/convex/flat at the shared edge.

   B
  /|\
 / | \
A  |  D
 \ | /
  \|/
   C

You just have to check the position of D relative to the plane defined by ABC. If it is on the plane, the edge B-C is flat. If D is below the plane, B-C is convex, if D is above the plane, B-C is concave.

Thankss For Your Help

Ill see what I cancome up with

Cheers
Alex

Also, assuming you are not interested in the back-faces of your model you don’t have to check back-facing polygons.

If you use some data-structure such as a partial adjacency list or a winged edge list, traversing edges becomes very simple.