Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have coordinates of 3d triangle and I need to calculate its area. I know how to do it in 2D, but don't know how to calculate area in 3d. I have developed data as follows.

(119.91227722167969, 122.7717056274414, 39.3568115234375), 
(119.8951187133789, 122.7717056274414, 39.38057327270508), 
(121.11941528320312, 123.2818832397461, 38.41301345825195)
share|cite|improve this question
up vote 17 down vote accepted

Say you have 3 points $\mathbf{A, B, C}$. Find the angle between $\mathbf{AB}$ and $\mathbf{AC}$ using dot product (i.e. $\mathbf{AB}\cdot\mathbf{AC}=|\mathbf{AB}||\mathbf{AC}|\cos\theta$) and then you can find the area of the triangle using $$ A=\frac{1}{2}|\mathbf{AB}||\mathbf{AC}|\sin\theta $$

share|cite|improve this answer
    
What is theta in this equation? – jjxtra Feb 24 at 3:04

If your 3 points are A, B, C then you may use directly the (half) cross product formula : $$S=\dfrac{|\mathbf{AB}\times\mathbf{AC}|}2=\dfrac{|\mathbf{AB}||\mathbf{AC}||\sin(\theta)|}2 $$ that is (see the Wikipedia link to get the cross-product in $\mathbb{R}^3$) : $$S=\frac 12 \sqrt{(x_2\cdot y_3-x_3\cdot y_2)^2+(x_3\cdot y_1-x_1\cdot y_3)^2+(x_1\cdot y_2-x_2\cdot y_1)^2}$$ if $\mathbf{AB}=(x_1,x_2,x_3)$ and $\mathbf{AC}=(y_1,y_2,y_3)$

share|cite|improve this answer

Heron's formula is easiest as it "requires no arbitrary choice of side as base or vertex as origin, contrary to other formulas for the area of a triangle:" $$A = \sqrt{s(s-a)(s-b)(s-c)}$$ where $s=p/2$ is half of the perimeter $p=a+b+c$ (called the semiperimeter of the triangle). The triangle side lengths can be obtained via vector norm of relative positions: $$a=\|\vec{r}_1-\vec{r}_2\|$$ $$b=\|\vec{r}_2-\vec{r}_3\|$$ $$c=\|\vec{r}_3-\vec{r}_1\|$$

share|cite|improve this answer
    
However, a naive application of Heron's formula can be numerically disastrous, especially if the triangles in question are slivers. See this note by Velvel Kahan. – J. M. Jun 9 at 22:28
    
Quoting Khan: "These formulas’ defects afflict only extreme configurations: The triangle is too nearly degenerate — too needle-like." – Felipe G. Nievinski Jun 11 at 1:49

If you have 3 coordinates in 3D $(x_1,y_1,z_1);(x_2,y_2,z_2);(x_3,y_3,z_3)$ make two coterminous vectors like $\vec a=(x_2-x_1)I+(y_2-y_1)j+(z_2-z_1)k$ $\vec b=(x_3-x_1)I+(y_3-y_1)j+(z_3-z_1)k$ now find vector product of $\vec a$ and $\vec b$ and area of triangle formed will be $\frac{1}{2} \| \vec a \times \vec b \|$. You are with your desired answer.

share|cite|improve this answer
    
awesome it has cleared up my douts. – lalit arora Nov 4 '13 at 8:49
    
NOTE: This is the least-expensive formula to compute, as it does not require square root, nor trigonometric calculation. The main computation work is the cross product, which only uses multiplies and add/subtract. EDIT No I'm wrong, in 3D must take MAGNITUDE of cross-product, which requires a SQUARE-ROOT. So Raymond Manzoni's answer is about the same cost. – ToolmakerSteve Mar 28 '14 at 3:33
2  
$\frac12\vec a\times \vec b$ is a vector, but area isn't. You must write $\frac12|\vec a\times \vec b|$ – Mathematician171 Jan 16 '15 at 16:44

Alternatively, if you want to compute the area in an arbitrary dimension, and have computed dot products between all the points, $a$, $b$ and $c$, you can calculate the area in a way which requires no arbitrary choice of point and only requires one square root, unlike the other formulas:

$$\frac{1}{2}\sqrt{2\left(ab\cdot ac+ab\cdot bc+ac\cdot bc-ac\cdot bb-aa\cdot bc-ab\cdot cc\right)+aa\cdot cc+bb\cdot cc+aa\cdot bb-ab^2-ac^2-bc^2}$$

Where $ab\rightarrow dot\left(a,b\right)$

Compute half the distance from a to b, and multiply it by the distance from c to the closest point to c on the ray from a to b.

share|cite|improve this answer

Use python.

def heron(a,b,c):
s = (a + b + c) / 2
area = (s*(s-a) * (s-b)*(s-c)) ** 0.5
return area

def distance3d(x1,y1,z1,x2,y2,z2):
a=(x1-x2)**2+(y1-y2)**2 + (z1-z2)**2 d= a ** 0.5
return d

def areatriangle3d(x1,y1,z1,x2,y2,z2,x3,y3,z3):
a=distance3d(x1,y1,z1,x2,y2,z2)
b=distance3d(x2,y2,z2,x3,y3,z3)
c=distance3d(x3,y3,z3,x1,y1,z1)
A = heron(a,b,c)
print("area of triangle is %r " %A)

Now call the function areatriangle3d(inputs).
Alternatively you can add a prompt to enter the values.

For the original problem above, I get an approximate area of 0.0097413991 which is about 0.01 square units.

share|cite|improve this answer
    
I don't think specifying a programming language is what the OP was looking for as an answer, though of course any three points will form a triangle (unless they are all in a line, a degenerate case), and the invocation of Heron's rule is in line with other answers. – hardmath Dec 10 '15 at 0:05
    
If the OP wishes I can delete this. I was just trying to show the OP a way to implement it. – john Dec 10 '15 at 6:36

You have three points $\mathbf {A,B,C}$ then you can use the dot product so the area of the triangle is:

$ S = \frac{1}{2} \sqrt {|AB|²|AC|²-(\mathbf {AB}\cdot\mathbf {AC})}$

share|cite|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.