forked from csc2431-master/shapes-example-2
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtriangle.cpp
More file actions
56 lines (46 loc) · 1.15 KB
/
Copy pathtriangle.cpp
File metadata and controls
56 lines (46 loc) · 1.15 KB
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
//
// Created by Arias Arevalo, Carlos on 4/22/20.
//
#include "triangle.h"
#include <string>
#include <sstream>
#include <cmath>
#include <algorithm>
#include <cassert>
using std::string;
using std::stringstream;
using std::max;
Triangle::Triangle(double a, double b, double c) : _a(a), _b(b), _c(c) {
assert(a > 0 && b > 0 && c > 0);
}
string Triangle::ToString() const {
stringstream retVal;
retVal << "{Triangle " << Shape::ToString()
<< " a = " << _a
<< ", b = " << _b
<< ", c = " << _c
<< "}";
return retVal.str();
}
double Triangle::Area() const {
double s = (_a + _b + _c) / 2.0;
return sqrt(s * (s - _a) * (s - _b) * (s - _c));
}
double Triangle::Perimeter() const {
return _a + _b + _a;
}
double Triangle::Hypotenuse() const {
return max(_a, max(_b, _c));
}
double FindAngle(double oppositeLength, double side1, double side2){
return acos((pow(side1, 2) + pow(side2, 2) - pow(oppositeLength, 2)) / (2 * side1 * side2));
}
double Triangle::AngleAB() const {
return FindAngle(_c, _a, _b);
}
double Triangle::AngleBC() const {
return FindAngle(_a, _b, _c);
}
double Triangle::AngleAC() const {
return FindAngle(_b, _a, _c);
}