#!/usr/local/bin/perl
#
# Author: Mitch Richling<http://www.mitchr.me>
# IP: Copyright 1994 by Mitch Richling. All rights reserved.
# Key word: lorenz strange attractor povray Euler
# Notes: This is a very simple program to generate a curve based
# on Lorenz's attractor. It uses Euler's method to solve the
# equations. The "curve" consists of a series of spheres
# placed at each point found on the curve. The spheres
# are connected with cylinders. Note that this program
# is simple enough to be coded with Povray itself. This
# Perl version is much shorter than the C version.
$maxBalls = 10000;
$tDelta = 0.01;
$x = 0.1;
$y = 0.0;
$z = 0.0;
$a = 10.0;
$b = 28.0;
$c = 8.0 / 3.0;
printf(STDERR "Computation starting...\n");
printf("sphere {<%f,%f,%f>, %f texture { crvTex } }\n", $x, $y, $z, 0.2);
for($numBalls=0;$numBalls<$maxBalls;$numBalls++) {
$xNew = $x + $a*($y-$x)*$tDelta;
$yNew = $y + ($x*($b-$z)-$y)*$tDelta;
$zNew = $z + ($x*$y-$c*$z)*$tDelta;
if(($numBalls % int($maxBalls/20)) == 0) {
printf(STDERR "Step: %6d tDelta: %15.3f x: %15.2f y: %15.2f z: %15.2f\n", $numBalls, $tDelta, $x, $y, $z);
}
printf("sphere {<%f,%f,%f>, %f texture { crvTex } }\n", $xNew, $yNew, $zNew, 0.1);
printf("cylinder {<%f,%f,%f>, <%f,%f,%f>, %f texture { crvTex } }\n", $x, $y, $z, $xNew, $yNew, $zNew, 0.2);
$x=$xNew;
$y=$yNew;
$z=$zNew;
}
Generated by GNU Enscript 1.6.5.2.