105 lines
3.0 KiB
Perl
Executable File
105 lines
3.0 KiB
Perl
Executable File
#!/usr/bin/perl
|
|
|
|
# Eine Transformkanone:
|
|
#
|
|
# Ich stimme mit Rudolf Zengerle überein, daß sie eine Spirale
|
|
# um den Lauf haben sollte, weil das schaut cool aus.
|
|
# Der Rest gefällt mir aber nicht so, den mache ich anders:
|
|
# Der eigentliche Lauf besteht aus fünf Stäben mit einem Ring
|
|
# vornedrauf.
|
|
# Das ganze ist auf einer großen Kugel montiert, die Magazin,
|
|
# Energieanlagen und Platz für einen menschlichen Gunner enthält.
|
|
# Kugel deswegen, weil sich die in jeder Lage montieren läßt.
|
|
|
|
# 1: Keine Spirale:
|
|
# 2: Spirale nur aus Cones zusammengesetzt
|
|
# 3: Lücken mit Kugeln aufgefüllt
|
|
$detail = 3;
|
|
|
|
# Lauf:
|
|
print "#declare TFK_Lauf = \n";
|
|
print "\tunion {\n";
|
|
|
|
# Führungsstäbe Lauf:
|
|
$rlauf = 5;
|
|
$rfs = 2;
|
|
|
|
$pi = atan2(1, 1) * 4;
|
|
for ($a = 0; $a < 2*$pi; $a += 2*$pi/5) {
|
|
$x = sin($a) * $rlauf;
|
|
$y = cos($a) * $rlauf;
|
|
print "\t\tcone {<$x, $y, 0>, $rfs, <$x, $y, 50>, $rfs\n";
|
|
print "\t\t\ttexture {\n";
|
|
print "\t\t\t\tpigment {color <0.7, 0.7, 1.0>}\n";
|
|
print "\t\t\t\tfinish {phong 1.0 metallic}\n";
|
|
print "\t\t\t}\n";
|
|
print "\t\t}\n";
|
|
}
|
|
|
|
# Spirale Lauf:
|
|
|
|
if ($detail > 1) {
|
|
$step = 2*$pi/30;
|
|
for ($a = 0, $n = 0; $a < 55; $a += $step, $n++) {
|
|
$x1 = sin($a-$step) * ($rlauf + $rfs);
|
|
$y1 = cos($a-$step) * ($rlauf + $rfs);
|
|
$x2 = sin($a) * ($rlauf + $rfs);
|
|
$y2 = cos($a) * ($rlauf + $rfs);
|
|
if ($n % 2) {
|
|
$color = "<1, 0, 0>"
|
|
} else {
|
|
$color = "<1, 1, 0>"
|
|
}
|
|
print "\t\tcone {\n";
|
|
print "\t\t\t<$x1, $y1, $a-$step>, 1, <$x2, $y2, $a>, 1\n";
|
|
print "\t\t\ttexture {pigment {color $color}\n";
|
|
print "\t\t\t\tfinish {phong 1.0}\n";
|
|
print "\t\t\t}\n";
|
|
print "\t\t}\n";
|
|
if ($detail > 2) {
|
|
print "\t\tsphere {\n";
|
|
print "\t\t\t<$x2, $y2, $a>, 1\n";
|
|
print "\t\t\ttexture {pigment {color $color}}\n";
|
|
print "\t\t}\n";
|
|
}
|
|
}
|
|
}
|
|
|
|
# Abstrahlring Lauf:
|
|
|
|
print "\t\tdifference {\n";
|
|
print "\t\t\tunion {\n";
|
|
print "\t\t\t\tcone {<0, 0, 50>, ($rlauf + $rfs), <0, 0, 55>, ($rlauf + 2.5*$rfs)}\n";
|
|
print "\t\t\t\tcone {<0, 0, 65>, ($rlauf + $rfs), <0, 0, 55>, ($rlauf + 2.5*$rfs)}\n";
|
|
print "\t\t\t}\n";
|
|
print "\t\t\tcone {<0, 0, 49>, ($rlauf - $rfs), <0, 0, 66>, ($rlauf - $rfs)}\n";
|
|
print "\t\t\ttexture {\n";
|
|
print "\t\t\t\tpigment {color <0.7, 0.7, 1.0>}\n";
|
|
print "\t\t\t\tfinish {phong 1.0}\n";
|
|
print "\t\t\t}\n";
|
|
print "\t\t}\n";
|
|
print "\t}\n";
|
|
|
|
|
|
|
|
|
|
print "#declare TFK = \n";
|
|
print "\tunion {\n";
|
|
# Kugel:
|
|
print "\t\tsphere { <0, 0, 0>, 25\n";
|
|
print "\t\t\ttexture {\n";
|
|
print "\t\t\t\tpigment {color <0.7, 0.7, 1.0>}\n";
|
|
print "\t\t\t\tfinish {phong 1.0}\n";
|
|
print "\t\t\t}\n";
|
|
print "\t\t}\n";
|
|
print "\t\tobject {TFK_Lauf translate <-($rlauf+3*$rfs), 0, 0>}\n";
|
|
print "\t\tobject {TFK_Lauf translate <+($rlauf+3*$rfs), 0, 0>}\n";
|
|
print "\t\tcone { <0, 11, 13>, 1, <0, 11, 16>, 2\n";
|
|
print "\t\t\ttexture {\n";
|
|
print "\t\t\t\tpigment {color <0.1, 0.1, 0.2>}\n";
|
|
print "\t\t\t\tfinish {phong 1.0 metallic}\n";
|
|
print "\t\t\t}\n";
|
|
print "\t\t}\n";
|
|
print "\t}\n";
|
|
|