-
Notifications
You must be signed in to change notification settings - Fork 0
/
n-Eck.rb
executable file
·46 lines (38 loc) · 1.09 KB
/
n-Eck.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#!/usr/bin/ruby
# Norbert Reschke, 2015-06-18, s. Skizze images/polygon-angle.png
# Polygon mit regelmäßiger Grundfläche
# n=Anzahl der Ecken, a=Kantenlänge,
# Berechnung des Innenwinkels zwischen zwei Kanten, gamma (strg+u0263 ->ɣ)
# Berechnung des Umkreisradius r_u, (Strecke C,M)
include Math
n = ARGV[0].to_i
a = ARGV[1].to_f
if n == 0.0 or a == 0.0
puts "n und a müssen ein Wert größer 0 haben!"
exit
elsif n < 3
puts "Ein Polygon hat mindestens 3 Ecken!"
exit
elsif n > 70000000
puts "Es gibt elegantere Möglichkeiten einen Kreis zu konstruieren!"
exit
end
# Schmiege
gamma05 = (n-2) * PI * (2*n)**-1
# Strecken
r_u = (a/2) * cos(gamma05)**-1
# a = 2 * r_u * cos(gamma05)
# h_aM = sin(gamma05) * r_u
# Umrechnung Bogenmaß in Grad
gamma05 = gamma05 * 180 *PI**-1
gamma = gamma05*2
puts "-----"
puts "Polygon mit regelmäßiger #{n}-eck-Fläche"
puts "Skizze s. images/polygon-angle.png"
puts "-----"
puts "Seitenlänge, a: #{a}"
puts "Winkel ɣ: #{gamma.round(5)}"
puts "-----"
puts "Radius des Umkreises, r_u: #{r_u.round(5)}"
#puts "Höhe auf a zu M, h_a,M: #{h_aM.round(5)}"
puts "-----"