ex-rep-03/readme.adoc
github-classroom[bot] 88872b4e6a
add deadline
2024-09-25 06:50:40 +00:00

74 lines
2.5 KiB
Text

[![Review Assignment Due Date](https://classroom.github.com/assets/deadline-readme-button-22041afd0340ce965d47ae6ef1cefeee28c7c493a6346c4f15d667ab976d596c.svg)](https://classroom.github.com/a/k26mRzrA)
:sectnums:
:nofooter:
:toc: left
:icons: font
= Exercise Rep.03 -- Simple Drawing
In this exercise you are going to work with the `Turtle` to draw a few simple shapes.
Remember what a turtle can do:
* Teleport to a specific location
* Turn with a certain angle (left or right)
* Move a certain distance drawing a line
WARNING: We always want a _general_ solution which would also work with other input values. So try to _not_ assume (hard code) values except for those listed below, calculate the rest.
== Eulerian Path
An https://en.wikipedia.org/wiki/Eulerian_path[Eulerian path] is a finite graph which visits each edge exactly once.
Put simply: you are going to draw a shape 'in one go' (= no 'lifting' of the pencil until done) while not drawing one line more than once.
So you may visit nodes (points) multiple time, but _not_ the edges (lines).
In German there is a little saying which is often taught to kids which, actually, is an Eulerian path: 'Das ist das Haus des Nikolaus' -- one line being drawn for each syllable.
image::pics/nikolaus.png[width=600]
There are actually multiple possible paths which lead to a valid result.
Your task is to use the `Turtle` to properly draw this shape.
Use the following measurements and choose a good starting position:
* normal length = `60`
* short length = `42.2`
* long length = `84.9`
== Shapes
Your next task is to draw some shapes:
image::pics/shapes.png[Shapes to draw]
Make sure to select starting positions which do not let the shapes overlap.
=== Octagon
An https://en.wikipedia.org/wiki/Octagon[octagon] has, unsurprisingly, 8 corners.
Use a side length of `40`.
=== Rhombus
A https://en.wikipedia.org/wiki/Rhombus[rhombus] has two pairs of equal angles and four sides of the same length.
Use a side length of `60` and one of the angles has to be `82°`.
=== Triangle
The last shape actually consists of two triangles: one inner and one outer.
image::pics/triangles.png[]
* Both are isosceles triangles
* The inner one has the following measurements:
** short side = `6.0`
** long side = `8.0`
* Angles ares:
** `48.19°`
** `83.621°`
* The _sides_ of the outer one are _offset_ by `1.5`
* Could some code reuse be possible here 🤔
TIP: In case you are bad at Maths: https://en.wikipedia.org/wiki/Law_of_sines[Law of sines] & https://en.wikipedia.org/wiki/Kite_(geometry)[Deltoids] could be useful