forked from blksail-edu/cpp-intro
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTriangle.cpp
More file actions
29 lines (20 loc) · 722 Bytes
/
Triangle.cpp
File metadata and controls
29 lines (20 loc) · 722 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include "Point.hpp"
#include "Line.hpp"
#include "Triangle.hpp"
#include <cmath>
Triangle::Triangle(Point pa, Point pb, Point pc) : p1(pa), p2(pb), p3(pc) {
this->p1 = pa;
this->p2 = pb;
this->p3 = pc;
}
double Triangle::area() {
Line side_a(p1, p2);
Line side_b(p2, p3);
Line side_c(p3, p1);
double length_side_a = side_a.length();
double length_side_b = side_b.length();
double length_side_c = side_c.length();
double semi_perimeter = (length_side_a + length_side_b + length_side_c) / 2;
double area = sqrt(semi_perimeter * (semi_perimeter - length_side_a) * (semi_perimeter - length_side_b) * (semi_perimeter - length_side_c));
return area;
}