diff --git a/.gradle/6.6.1/executionHistory/executionHistory.lock b/.gradle/6.6.1/executionHistory/executionHistory.lock new file mode 100644 index 0000000..8d8847d Binary files /dev/null and b/.gradle/6.6.1/executionHistory/executionHistory.lock differ diff --git a/.gradle/6.6.1/fileChanges/last-build.bin b/.gradle/6.6.1/fileChanges/last-build.bin new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/.gradle/6.6.1/fileChanges/last-build.bin differ diff --git a/.gradle/6.6.1/fileHashes/fileHashes.lock b/.gradle/6.6.1/fileHashes/fileHashes.lock new file mode 100644 index 0000000..9de6461 Binary files /dev/null and b/.gradle/6.6.1/fileHashes/fileHashes.lock differ diff --git a/.gradle/6.6.1/gc.properties b/.gradle/6.6.1/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock new file mode 100644 index 0000000..66aba72 Binary files /dev/null and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/.gradle/buildOutputCleanup/cache.properties b/.gradle/buildOutputCleanup/cache.properties new file mode 100644 index 0000000..6b00bef --- /dev/null +++ b/.gradle/buildOutputCleanup/cache.properties @@ -0,0 +1,2 @@ +#Tue Dec 01 17:50:15 CET 2020 +gradle.version=6.6.1 diff --git a/.gradle/checksums/checksums.lock b/.gradle/checksums/checksums.lock new file mode 100644 index 0000000..91b21b0 Binary files /dev/null and b/.gradle/checksums/checksums.lock differ diff --git a/.gradle/configuration-cache/gc.properties b/.gradle/configuration-cache/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/.gradle/vcs-1/gc.properties b/.gradle/vcs-1/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/TriangleCalulator.iml b/.idea/TriangleCalulator.iml new file mode 100644 index 0000000..78b2cc5 --- /dev/null +++ b/.idea/TriangleCalulator.iml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..b73660a --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..ba1ec5c --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,16 @@ + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..fdc392f --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..2f38549 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 0000000..eb7c2b5 --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,29 @@ +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile + +plugins { + kotlin("jvm") version "1.4.20" + application +} + +group = "me.nilsh" +version = "1.0-SNAPSHOT" + +repositories { + mavenCentral() +} + +dependencies { + testImplementation(kotlin("test-junit")) +} + +tasks.test { + useJUnit() +} + +tasks.withType() { + kotlinOptions.jvmTarget = "1.8" +} + +application { + mainClassName = "MainKt" +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..7fc6f1f --- /dev/null +++ b/gradle.properties @@ -0,0 +1 @@ +kotlin.code.style=official diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..4c21b40 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.6.1-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 0000000..59ea34f --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1,3 @@ + +rootProject.name = "TriangleCalulator" + diff --git a/src/main/kotlin/main.kt b/src/main/kotlin/main.kt new file mode 100644 index 0000000..b1e7898 --- /dev/null +++ b/src/main/kotlin/main.kt @@ -0,0 +1,96 @@ +import java.lang.IllegalArgumentException +import kotlin.contracts.contract +import kotlin.math.* + +fun main() { + val triangle = Triangle(7.7, 4.3, 8.7) + println(triangle) +} + +class Triangle() { + + var a = Side(0.0, "a") + var b = Side(0.0, "b") + var c = Side(0.0, "c") + + var alpha = Angle(0.0, "") + var beta = Angle(0.0, "") + var gamma = Angle(0.0, "") + + init { + + } + + constructor(angleName: String, angle: Double, sideName: String, side: Double) : this() { + if (angleName == "alpha") { + when(sideName){ + "a" -> { + c = Side(side / sin(angle), "c") + b = Side(c * cos(angle), "b") + } + "b" -> { + //c = Side + } + "c" -> { + //cos + } + } + } else if (angleName == "beta") { + when(sideName){ + "a" -> { + //cos + } + "b" -> { + //sin + } + "c" -> { + //cos + } + } + } else { + throw IllegalArgumentException("$angleName is not a valid angle") + } + } + + constructor(vararg sides: Double) : this() { + a = Side(sides[0], "a") + b = Side(sides[1], "b") + c = Side(sides[2], "c") + calculateAngles() + } + + + private fun calculateAngles() { + alpha = Angle(asin(a.length / c.length).toDegree(), "alpha") + beta = Angle(asin(b.length / c.length).toDegree(), "beta") + gamma = Angle(180 - beta.angle - alpha.angle, "gamma") + } + + private fun Double.toDegree() = this * 180 / PI + + override fun toString(): String { + return "Seiten: $a, $b, $c Winkel: $alpha $beta $gamma" + } + +} + +class Side(length: Double, name: String) { + val length = length + val name = name + + operator fun times(other: Double) = this.length * other + + override fun toString(): String { + return "$name = $length" + } +} + +class Angle(value: Double, name: String) { + val angle = value + val name = name + + + override fun toString(): String { + return "$name = ${"%.2f".format(angle)}" + } +} \ No newline at end of file