Computes the area of a triangle or a trapezium within a triangle with a fixed vertex.

View versions (1)

Interface

#include <codecogs/maths/geometry/area/free_triangle.h>

using namespace Maths::Geometry::Area;

This module computes the area of the triangle or trapezium formed between a triangle with a fixed vertex on a reference line and a line found at a given distance distance from this reference line.

The various cases are described by the images given in the following documentation, where the area which we want to compute is that of the filled shape.

Solution

Let \mathrm{xOy} be an orthogonal coordinate system and let \triangle ABC be an arbitrary triangle so that A \in \mathrm{Ox} and

BC = a \qquad AC = b \qquad AB = c
(1)

where a, b, c \in \mathbb{R}_+^* are fixed numbers.

Consider \alpha = \angle CAX and d \parallel \mathrm{Ox} so that the distance between the line d and \mathrm{Ox} equals h \in \mathbb{R}_+. Also let d \cap AB = \{B_1\} and d \cap AC = \{C_1\}.

We will first find the lengths of the projections of B and C on \mathrm{Ox} because we can separate different cases based on these values. Let d(B,\mathrm{Ox}) = h_b and d(C,\mathrm{Ox}) = h_c. Since these values are independent of the relations set between them and h we can consider, without loss of generality, the following case: h_b > h and h_c > h.

1/free_triangle01-746.jpg
This part is only visible to registered users. Sign in to see it.

Let S be the area which we must determine. Based on the values of h_b, h_c and h, we find the following solutions:

1) h_b \leq h, h_c \leq h \Rightarrow S = \mathcal{A}_{\triangle ABC}

1/free_triangle_2-746.jpg
This part is only visible to registered users. Sign in to see it.

2) h_b \geq h, h_c \geq h \Rightarrow S = \mathcal{A}_{\triangle AB_1C_1}

1/free_triangle_3-746.jpg
This part is only visible to registered users. Sign in to see it.

3) h_b < h, h_c > h\f \Rightarrow S = \mathcal{A}_{[ABB_1C_1]}

1/free_triangle_4-746.jpg
This part is only visible to registered users. Sign in to see it.

4) h_b > h, h_c < h\f \Rightarrow S = \mathcal{A}_{[ABB_1C_1]}

1/free_triangle_5-746.jpg
This part is only visible to registered users. Sign in to see it.

Output:

a = 2.613
b = 1.878
c = 1.209
alpha = 0.61086

h = 0.0   Area = 0.00
h = 0.3   Area = 0.14
h = 0.6   Area = 0.56
h = 0.9   Area = 0.97
h = 1.2   Area = 1.04
h = 1.5   Area = 1.04

Example 1

#include <codecogs/maths/geometry/area/free_triangle.h>
#include <stdio.h>

int main()
{
  // the lengths of the sides
  double a = 2.613, b = 1.878, c = 1.209;
 
  // the value of the alpha angle in radians
  double alpha = 0.61086;
 
  // display the lenghts of the sides and the alpha angle
  printf("a = %.3lf\nb = %.3lf\nc = %.3lf\nalpha = %.5lf \n\n", a, b, c, alpha);
 
  // display the area for different values of h
  for (double h = 0.0; h < 1.6; h += 0.3)
  printf("h = %.1lf   Area = %.2lf\n", h, 
  Geometry::Area::free_triangle(a, b, c, h, alpha));
  
  return 0;
}

Parameters

a
first side of the triangle (BC)
b
second side of the triangle (AC)
c
third side of the triangle (AB)
h
the distance between line d and \mathrm{Ox}
alpha
the input angle in radians

Returns

The value of the desired area.

The vertices must be denoted such that the abscissa of B is less than that of C, i.e. as in the given examples.

GPL Licence — free for non commercial use. See Licence details.

Interactive Calculator

a
b
c
h
alpha
Result