Area of triangle
A triangle is a polygon with three sides and three vertices. Calculating its area efficiently depends on what is known about it.
From base and height
The basic formula assumes knowledge of the length of one of the sides (called base) and the length of the height of the triangle with respect to that side. This height is the segment that originates from the vertex that is not on the side we know about, and intersects the side we know about at a right angle.
Assuming the base is put horizontally and the third vertex above it, the following picture results. Quantity b is the length of the bottom side, and h the height with respect to it.
Height can sometimes be referred to as altitude.
Formula
In this case, the area is calculated as follows:
Algorithm
The algorithm can be derived directly from the defining formula above:
triangle_area_basic (b, h) {
return b * h / 2;
}
In the euclidean plane
In this section, it is assumed that the triangle is known by the coordinates of its three vertices A, B, and C on the plane:
Formula
In this case, the area of the triangle can be calculated as follows:
Algorithm
The following algorithm is a direct translation of the formula:
triangle_area_plane (x_A, y_A, x_B, y_B, x_C, y_C) {
return abs((x_B - x_A) * (y_C - y_A) - (x_C - x_A) * (y_B - y_A)) / 2;
}
In the euclidean space
In this section, it is assumed that the triangle is known by the coordinates of its three vertices A, B, and C in the three-dimensional space:
Formula
The formula to calculate the area involves calculating the determinant of three matrices:
The absolute value of each determinant is the double of the area of the triangle obtained by projecting the target triangle onto one of the coordinate planes, which allows reusing the formula for the triangle in the plane in a previous section.
Algorithm
The following algorithm leverages the triangle area calculation in the plane, described in a previous section and not repeated here:
/* Assume that A, B, and C are 3-dimensional arrays
X at index 0, Y at index 1, Z at index 2 */
triangle_area_space (A, B, C) {
x = triangle_area_plane(A[1], A[2], B[1], B[2], C[1], C[2]);
y = triangle_area_plane(A[2], A[0], B[2], B[0], C[2], C[0]);
z = triangle_area_plane(A[0], A[1], B[0], B[1], C[0], C[1]);
return sqrt(x * x + y * y + z * z);
}
Note: the division by two in the formula is already included in the result from the calculation of the area in the plane.
Performance
All algorithms for calculating the area of a triangle in the sections above execute in constant time (O(0)).
Implementations
Language | Link | |
---|---|---|