-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathTriangle.java
More file actions
63 lines (56 loc) · 1.97 KB
/
Triangle.java
File metadata and controls
63 lines (56 loc) · 1.97 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
56
57
58
59
60
61
62
63
class Triangle {
/*@ specification Triangle {
double a, b, c, h, S, p, alpha, beta, gamma, delta;
double icr, ocr;
p = a + b + c;
a, b, gamma -> S {calcAreaSin};
b, c, alpha -> S {calcAreaSin};
a, c, beta -> S {calcAreaSin};
a, b, c -> S {heron};
a, b, gamma -> c {calcSide};
a, c, beta -> b {calcSide};
b, c, alpha -> a {calcSide};
b, gamma -> h {calcHeight};
c, beta -> h {calcHeight};
b, h -> gamma {calcAngle};
c, h -> beta {calcAngle};
a, b, alpha -> beta {calcAngleSin};
a, c, alpha -> gamma {calcAngleSin};
b, c, beta -> gamma {calcAngleSin};
b, a, beta -> alpha {calcAngleSin};
c, a, gamma -> alpha{calcAngleSin};
c, b, gamma -> beta {calcAngleSin};
a, alpha, beta -> b{sinCalcSide};
a, alpha, gamma -> c{sinCalcSide};
b, beta, gamma -> c{sinCalcSide};
b, beta, alpha -> a{sinCalcSide};
c, gamma, alpha -> a{sinCalcSide};
c, gamma, beta -> b{sinCalcSide};
a = (b * b - h * h)^(0.5) + (c * c - h * h)^(0.5);
S = a * h / 2;
icr = S / (p / 2);
ocr = a * b * c / 4 / S;
}@*/
double calcHeight(double b, double gamma){
return b*Math.cos(gamma);
}
double calcAngle(double a, double h){
return Math.asin(h / b);
}
double calcAngleSin(double a, double b, double alpha){
return Math.asin(Math.sin(alpha) * b/ a);
}
double calcAreaSin(double a, double b, double gamma){
return a * b * Math.sin(gamma) / 2;
}
double heron(double a, double b, double c){
double p = (a + b + c)/2;
return Math.sqrt(p * (p - a) * (p - b) * (p - c));
}
double calcSide(double a, double b, double gamma){
return Math.sqrt(a*a + b*b - 2*a*b*Math.cos(gamma));
}
double sinCalcSide(double a, double alpha, double beta){
return a/Math.sin(alpha)*Math.sin(beta);
}
}