mirror of
https://github.com/Noratrieb/TriangleCalculator.git
synced 2026-01-14 16:45:02 +01:00
can now create triangle from angle + side
This commit is contained in:
parent
019b64d8ee
commit
7ad27481fe
4 changed files with 52 additions and 36 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -3,10 +3,14 @@ import kotlin.math.*
|
||||||
|
|
||||||
fun main() {
|
fun main() {
|
||||||
val triangle = Triangle(4.0, 3.0, 5.0)
|
val triangle = Triangle(4.0, 3.0, 5.0)
|
||||||
println("a: ${Triangle("alpha", 53.13, "a", 4.0)}")
|
println("alpha: a: ${Triangle("alpha", 53.13, "a", 4.0)}")
|
||||||
println("b: ${Triangle("alpha", 53.13, "b", 3.0)}")
|
println("alpha: b: ${Triangle("alpha", 53.13, "b", 3.0)}")
|
||||||
println("c: ${Triangle("alpha", 53.13, "c", 5.0)}")
|
println("alpha: c: ${Triangle("alpha", 53.13, "c", 5.0)}")
|
||||||
println(triangle)
|
|
||||||
|
println("beta: a: ${Triangle("beta", 36.87, "a", 4.0)}")
|
||||||
|
println("beta: b: ${Triangle("beta", 36.87, "b", 3.0)}")
|
||||||
|
println("beta: c: ${Triangle("beta", 36.87, "c", 5.0)}")
|
||||||
|
println("\nOriginal$triangle")
|
||||||
}
|
}
|
||||||
|
|
||||||
class Triangle() {
|
class Triangle() {
|
||||||
|
|
@ -15,9 +19,9 @@ class Triangle() {
|
||||||
var b = Side(0.0, "b")
|
var b = Side(0.0, "b")
|
||||||
var c = Side(0.0, "c")
|
var c = Side(0.0, "c")
|
||||||
|
|
||||||
var alpha = Angle(0.0, "")
|
var alpha = Angle(0.0, "alpha")
|
||||||
var beta = Angle(0.0, "")
|
var beta = Angle(0.0, "beta")
|
||||||
var gamma = Angle(0.0, "")
|
var gamma = Angle(90.0, "gamma")
|
||||||
|
|
||||||
init {
|
init {
|
||||||
|
|
||||||
|
|
@ -25,39 +29,51 @@ class Triangle() {
|
||||||
|
|
||||||
constructor(angleName: String, angleD: Double, sideName: String, side: Double) : this() {
|
constructor(angleName: String, angleD: Double, sideName: String, side: Double) : this() {
|
||||||
val angle = angleD.toRadians() //thanks kotlin
|
val angle = angleD.toRadians() //thanks kotlin
|
||||||
if (angleName == "alpha") {
|
when (angleName) {
|
||||||
alpha = Angle(angleD, "alpha")
|
"alpha" -> {
|
||||||
when (sideName) {
|
alpha = Angle(angleD, "alpha")
|
||||||
"a" -> {
|
when (sideName) {
|
||||||
a = Side(side, "a");
|
"a" -> {
|
||||||
c = Side(a / sin(angle), "c")
|
a = Side(side, "a");
|
||||||
b = Side(c * cos(angle), "b")
|
c = Side(a / sin(angle), "c")
|
||||||
|
b = Side(c * cos(angle), "b")
|
||||||
|
}
|
||||||
|
"b" -> {
|
||||||
|
b = Side(side, "b")
|
||||||
|
c = Side(b / cos(angle), "c")
|
||||||
|
a = Side(c * sin(angle), "a")
|
||||||
|
}
|
||||||
|
"c" -> {
|
||||||
|
c = Side(side, "c")
|
||||||
|
a = Side(c * sin(angle), "a")
|
||||||
|
b = Side(c * cos(angle), "a")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
"b" -> {
|
beta = Angle(asin(b.length / c.length).toDegree(), "beta")
|
||||||
b = Side(side, "b")
|
}
|
||||||
c = Side(b / cos(angle), "c")
|
"beta" -> {
|
||||||
a = Side(c * sin(angle), "a")
|
beta = Angle(angleD, "beta")
|
||||||
}
|
when (sideName) {
|
||||||
"c" -> {
|
"a" -> {
|
||||||
c = Side(side, "c")
|
a = Side(side, "a");
|
||||||
a = Side(c * sin(angle), "a")
|
c = Side(a / cos(angle), "c")
|
||||||
b = Side(c * cos(angle), "a")
|
b = Side(c * sin(angle), "b")
|
||||||
|
}
|
||||||
|
"b" -> {
|
||||||
|
b = Side(side, "b")
|
||||||
|
c = Side(b / sin(angle), "c")
|
||||||
|
a = Side(c * cos(angle), "a")
|
||||||
|
}
|
||||||
|
"c" -> {
|
||||||
|
c = Side(side, "c")
|
||||||
|
a = Side(c * cos(angle), "a")
|
||||||
|
b = Side(c * sin(angle), "a")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (angleName == "beta") {
|
else -> {
|
||||||
when (sideName) {
|
throw IllegalArgumentException("$angleName is not a valid angle")
|
||||||
"a" -> {
|
|
||||||
//cos
|
|
||||||
}
|
|
||||||
"b" -> {
|
|
||||||
//sin
|
|
||||||
}
|
|
||||||
"c" -> {
|
|
||||||
//cos
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
throw IllegalArgumentException("$angleName is not a valid angle")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue