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