can now create triangle from angle + side

This commit is contained in:
nora 2020-12-01 19:27:30 +01:00
parent 019b64d8ee
commit 7ad27481fe
4 changed files with 52 additions and 36 deletions

View file

@ -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")
} }
} }