Difference between revisions of "Heron's Formula"

m (See Also)
(External Links)
Line 35: Line 35:
  
 
== External Links ==
 
== External Links ==
* [http://www.scriptspedia.org/Heron%27s_Formula Heron's formula implementations in C++, Java and PHP]
+
* [http://www.scriptspedia.org/Heron%27s_Formula Heron's formula implementations in C++, Java and PHP]  
 +
In general, it is a good advice <b>not</b> to use Heron's formula in computer programs whenever we can avoid it. For example, whenever vertex coordinates are known, vector product is a much better alternative. Main reasons:
 +
* Computing the square root is much slower than multiplication.
 +
* For triangles with area close to zero Heron's formula computed using floating point variables suffers from precision problems.
  
 
[[Category:Geometry]]
 
[[Category:Geometry]]
 
[[Category:Theorems]]
 
[[Category:Theorems]]

Revision as of 19:16, 4 February 2009

Heron's Formula (sometimes called Hero's formula) is a formula for finding the area of a triangle given only the three side lengths.

Theorem

For any triangle with side lengths ${a}, {b}, {c}$, the area ${A}$ can be found using the following formula:

$A=\sqrt{s(s-a)(s-b)(s-c)}$

where the semi-perimeter $s=\frac{a+b+c}{2}$.


Proof

$[ABC]=\frac{ab}{2}\sin C$

$=\frac{ab}{2}\sqrt{1-\cos^2 C}$

$=\frac{ab}{2}\sqrt{1-\left(\frac{a^2+b^2-c^2}{2ab}\right)^2}$

$=\sqrt{\frac{a^2b^2}{4}\left[1-\frac{(a^2+b^2-c^2)^2}{4a^2b^2}\right]}$

$=\sqrt{\frac{4a^2b^2-(a^2+b^2-c^2)^2}{16}}$

$=\sqrt{\frac{(2ab+a^2+b^2-c^2)(2ab-a^2-b^2+c^2)}{16}}$

$=\sqrt{\frac{((a+b)^2-c^2)(c^2-(a-b)^2)}{16}}$

$=\sqrt{\frac{(a+b+c)(a+b-c)(b+c-a)(a+c-b)}{16}}$

$=\sqrt{s(s-a)(s-b)(s-c)}$

See Also

External Links

In general, it is a good advice not to use Heron's formula in computer programs whenever we can avoid it. For example, whenever vertex coordinates are known, vector product is a much better alternative. Main reasons:

  • Computing the square root is much slower than multiplication.
  • For triangles with area close to zero Heron's formula computed using floating point variables suffers from precision problems.