Thread zykloide flüssig zeichnen (9 answers)
Opened by Gast at 2003-09-28 20:18

Gast Gast
 2003-09-28 20:18
#44297 #44297
Hallo,
ich hab hier mal ein kleines Programm geschrieben, das Zykloide zeichnet:
Code: (dl )
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
47
48
49
50
51
52
53
54
55
#!/usr/bin/perl -w
#3.14159265358979
use Tk;

my $MainWindow = MainWindow->new();

my $Canvas = $MainWindow->Canvas();

#$MainWindow->bind('<Configure>', \&Hallo);
$MainWindow->bind('<ButtonPress-1>', \&Hallo);

#$Canvas->createText(100,100,-tags => 'Text', -text => $text);

$Canvas->pack(-expand => 'yes', -fill => 'both');

MainLoop;

sub Hallo
{
$text = $Canvas->geometry();

$Canvas->delete(Text);
$Canvas->createText(100,100,-tags => 'Text', -text => $text);

$xm = 250;
$ym = 250;
$r = 30;

$Canvas->createOval($xm - $r,$ym - $r,$xm + $r,$ym + $r, -tags =>'A');

for($i=0; $i<=3.14159265358979*6; $i=$i+0.01)
{

$x1=(30+20)*cos($i)-20*cos((30+20)*$i/20);
$x2=(30+20)*cos($i+0.01)-20*cos((30+20)*($i+0.01)/20);
$y1=(30+20)*sin($i)-20*sin((30+20)*$i/20);
$y2=(30+20)*sin($i+0.01)-20*sin((30+20)*($i+0.01)/20);



$xP=50*cos($i);
$yP=50*sin($i);
$xm = 250 + $xP;
$ym = 250 + $yP;
$r = 20;

$Canvas->delete(B);
$Canvas->delete(radius);
$Canvas->createOval($xm - $r,$ym - $r,$xm + $r,$ym + $r, -tags =>'B');
$Canvas->createLine($xm, $ym, $x2+250, $y2+250, -tags => 'radius');
$Canvas->createLine($x1+250, $y1+250, $x2+250, $y2+250, -tags => 'zykloid');
$MainWindow->update;

}
}

Das Problem ist jetzt nur, dass der zykloid mal schneller und mal langsamer gezeichnet wird, es variiert also die Zeichengeschwindigkeit. Hat von euch jemand ne Idee, wie man es schaffen könnte, dass der Zykloid gleichmässig schnell gezeichnet wird?

Danke schon mal im Voraus

View full thread zykloide flüssig zeichnen