Alles rund um Holz und Holzwerkzeuge für den Hobbyisten:
Berechnen eines Eimers


Drechseln
Schreinern
Technik
Tipps

Script zum Berechnen der Holzteile für einen Eimer

Meinen Dank an Mathias Wandel, der mir den richtigen Denkanstoß gab.
Als Schnittwinkel ist nämlich nicht der Winkel auf der Grundfläche
sondern der Winkel an der Mantellinie entscheidend.

Um den korrekten Schnittwinkel zu errechnen muss eine Abwicklung des Kegels herhalten
Der sich dabei ergebende Winkel ist kleiner als 360 Grad und wird dann durch die Anzahl
der Streben geteilt. Die Berechnung der Breite oben und unten an der Strebe erfolgt dann
mit Hilfe der Formel für die Kreissehne.

Hier ist ein Beispielscript (Onlinerechner) fü die Linux-Bash:

#!/bin/bash -

# calculate staves of Bucket

function usage() {
	echo "usage: $(basename $0) nr-of-staves diameter [second-diameter height-of-bucket]"
	exit 1
}

NR_STAVES=$1
DIAMETER_1=$2
DIAMETER_2=$3
HEIGTH=$4

# check parameters
[ -z "$NR_STAVES" ] && usage
[ -z "$DIAMETER_1" ] && usage
[ -z "$HEIGTH" -a -n "$DIAMETER_2" ] && usage
[ -z "$DIAMETER_2" ] && DIAMETER_2=$DIAMETER_1

# change values if in wrong order (greater diameter = DIAMETER_1)
[ "$DIAMETER_2" -gt "$DIAMETER_1" ] && {
	TEMP=$DIAMETER_2
	DIAMETER_2=$DIAMETER_1
	DIAMETER_1=$TEMP
}

# defining meaning of values 
# m = Mantellinienlänge Kegelstumpf
# M = Mantellinienlänge Kegel
# h = Höhe Kegelstumpf
# H = Höhe Kegel
# A = Winkel Kreisabschnitt Kegelabrollung
# a = Winkel der einzelnen Streben
# D = Durchmesser Fuß
# d = Durchmesser Kopf 
# R = Radius Fuß
# r = Radius Kopf

D=$DIAMETER_1
d=$DIAMETER_2
R=$(echo "scale=2;$D/2"| bc -l)
r=$(echo "scale=2;$d/2"| bc -l)
h=$HEIGTH

[ "$D" = "$d" ] && {
	# not a cone
	a=$(echo "scale=2;360/$NR_STAVES" | bc)
	m=$h
} || {
	# Mantellinie m = sqrt{(R-r)^2 + h^2}
	m=$(echo "scale=2;sqrt( (($R - $r)^2) + ($h^2) )"| bc -l)
	# Mantellinie M = m + ((m * r) / (R -r ))
	M=$(echo "scale=2;$m + (($m * $r) / ($R - $r))"| bc -l)
	# alpha = ( R / M ) * 360°
	A=$(echo "scale=2;$R * 360 / $M"| bc -l)
	a=$(echo "scale=2;$A/$NR_STAVES"| bc -l)
}
# bc -l uses radians not degrees as parameter for sinus()
# 360° = 2*pi in radians, this is 1° = pi / 180
# a(x) = The arctangent of x, arctangent returns radians. 4*a(1) = Pi
# this is for calculating the chord of each segment to get the width of staves
# the chord is calculated using D * sin(alpha/2) where alpha = 360 / NR_STAVES (not a)
ONE_DEGREE_RADIANS=$(echo "4*a(1)/180" |bc -l)
STAVE_WITDH_1=$(echo "scale=2;$D * s ($ONE_DEGREE_RADIANS*(180 / $NR_STAVES))" |bc -l)
STAVE_WITDH_2=$(echo "scale=2;$d * s ($ONE_DEGREE_RADIANS*(180 / $NR_STAVES))" |bc -l)

cat <<-EOT
	
	Bucket with $NR_STAVES staves:

	Main Angle     : $a degrees
	Cutting Angle  : $( echo "scale=2;$a/2" | bc) degrees
	Diameter       : $DIAMETER_1 
	Stave width    : $STAVE_WITDH_1
EOT
[ -n "$HEIGTH" ] && {
	DIAMETER_3=$(echo "scale=2;(((($D - $d)/2)*60)/$m)"| bc -l)
	DIAMETER_3=$(echo "scale=2;($DIAMETER_3 * 2)+$D "| bc -l)
	cat <<-EOT
		Diameter 2     : $DIAMETER_2
		Stave width 2  : $STAVE_WITDH_2
		      at 60 cm : $(echo "scale=2;$DIAMETER_3 * s ($ONE_DEGREE_RADIANS*(180 / $NR_STAVES))"| bc -l)
		
		Height         : $HEIGTH
		Length of Stave: $m

	EOT
}