Group Abstract Group Abstract

Message Boards Message Boards

0
|
12.8K Views
|
3 Replies
|
0 Total Likes
View groups...
Share
Share this post:

How do I get the signed area of a 3D triangle?

Posted 11 years ago

I'm using Mathematica 10 (but also have Mathematica 9) and I've tried entering triangle coordinates both in clockwise and counterclockwise directions but obtain only positive areas with the following:

tCounterClockwise = Triangle[{{0, 0, 0}, {1, 0, 0}, {0, 1, 0}}]
tClockwise = Triangle[{{0, 0, 0}, {0, 1, 0}, {1, 0, 0}}]
RegionMeasure[tCounterClockwise]
RegionMeasure[tClockwise]

Is there a way to obtain the signed area of a triangle?

My ultimate goal is to test for whether a point is in a 3D convex hull without having to use SignedRegionDistance (from Mathematica 10) and the TetGenLink package (from Mathematica 9) because neither is available for a CDF (which is the output format I need). My rationale is that if I can obtain the signed area and then arrange the triangle vertices on the surface of a convex hull all in a counterclockwise manner, then points outside the convex hull will all have the same sign of volume (which I can calculate) when the 3-simplex is formed with the triangle and that point. (The points to be tested are selected by the user in a CDF document and are not known ahead of time.)

If I'm all wet with that rationale for determining whether a point is in the convex hull or not, please comment on that, too. (This is also a plea for updating CDF to version 10 so I wouldn't have to figure this out.)

Thanks!

POSTED BY: Jim Baldwin
3 Replies
Posted 11 years ago
Attachments:
POSTED BY: Jim Baldwin

Jim, I believe you can't obtain a signed area of a 2D triangle in 3D space without adding extra structure. From what vantage point are you looking at the triangle? What happens if you flip the triangle over? Would the sign change at some point?

What you are talking about is an orientation. An orientation only applies to an object that spans the entire space. You need to define an extra vector field that gives an orientation at each point of the 3D space. For example if the triangles were only allowed in a given plane then you could define an "outward" normal for the plane and use it to give an orientation (or sign) to all triangles in the plane. If you had a sphere and the triangles were in the tangent planes of the sphere you could use the outward normal vector from the center of the sphere to establish an orientation. If you had a convex polyhedron you could use outward normal vectors from some point within the polyhedron.

And, of course, not all surfaces can be oriented.

You can signed areas from wedge products. See the Wikipedia article on Exterior Algebra

In[8]:= SymmetrizedArrayRules @ TensorWedge[{1, 0, 0}, {0, 1, 0}]

Out[8]= {{1, 2} -> 1, {_, _} -> 0}

In[9]:= SymmetrizedArrayRules @ TensorWedge[{0, 1, 0}, {1, 0, 0}]

Out[9]= {{1, 2} -> -1, {_, _} -> 0}
POSTED BY: Frank Kampas
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard