![]() |
Problemm beim rechnen mit Tpoint
Hallo,
Ich habe eine Aufgabenstellung bekommen: Gegeben sind drei Eckpunkte eines Gleichseitigen Dreiecks (A,B,C) Es wird for der Schleife ein zufälliger Punkt gewählt (punkt). Jetzt wird von punkt zu einen der Eckpunkte (wird per Zufall ausgewählt) eine halbe strecke gezeichnet. Dann wird der endpunkt diser strecke punkt und das selbe geht wieder von vorne los. Ich glaube so wie ich es geschrieben habe müsste es gehen nur es kommt ein fehler bei punkt2:=a-punkt; ich will das er punkt2 der vektor von punkt-a ist.
Delphi-Quellcode:
procedure TForm1.SierpinskiClick(Sender: TObject);
var i: integer; zufall: byte; punkt,punkt2,a,b,c: Tpoint; begin A:=point(150,54); B:=point(60,210); C:=point(240,210); paint.canvas.Polygon([A,B,C]); randomize; punkt:=point(random(300) + 1,random(300) + 1); for i:=1 to 100 do begin zufall:=random(3)+1; if zufall=1 then punkt2:=a-punkt; if zufall=2 then punkt2:=b-punkt; if zufall=3 then punkt2:=c-punkt; paint.canvas.Polygon([punkt,punkt2]); punkt:=punkt2; end; end; |
Re: Problemm beim rechnen mit Tpoint
Hallo,
Ich habe den Fehler schon gefunden:
Delphi-Quellcode:
aber irgendwas ist noch an meiner überlegung falsch :-(
if zufall=1 then punkt2:=point((a.x-punkt.x), (a.y-punkt.y));
if zufall=2 then punkt2:=point((b.x-punkt.x), (b.y-punkt.y)); if zufall=3 then punkt2:=point((c.x-punkt.x), (c.y-punkt.y)); |
Re: Problemm beim rechnen mit Tpoint
Ein TPoint besteht aus zwei Zahlen. Da kannst du nicht einfach so etwas abziehen. Du musst dich schon um beide Zahlen kümmern.
EDIT: Mist. zu langsam und keine Meldung. |
Re: Problemm beim rechnen mit Tpoint
Ich habe vor einiger Zeit auch mal zwei Sierpinski-Dreieck Programme geschrieben, einmal durch diesen Zufallsalgorithmus (nach Delphi von irgendwo portiert) und einmal eine eigene Fassung, einfach die Dreiecke berechnen.
Da ich bei dem Zufall jedoch keine Ahnung habe, wie es funktioniert, sondern wie gesagt nur portiert habe, kann ich keinen Fehler in deinem Quelltext finden. Hier aber mal mein Code:
Delphi-Quellcode:
PixelFS nimmt auch Floats an.
var Bit: TBitmap32;
X,Y,n: Double; i,ii: Integer; begin Bit:=TBitmap32.Create; Bit.SetSize(500,500); X:=Random; Y:=Random; Bit.Clear(clWhite32); for i:=1 to 100000 do begin N:=Random(3); if N=0 then begin X:=0.5*X; Y:=0.5*Y; end; if N=1 then begin X:=0.5*(0.5+X); Y:=0.5*(1+Y); end; if N=2 then begin X:=0.5*(1+X); Y:=0.5*Y; end; Bit.PixelFS[X*500,500-Y*500]:=clBlack32; end; Bit.DrawTo(Paintbox321.Canvas.Handle,0,0); Bit.Free; end; |
Re: Problemm beim rechnen mit Tpoint
Zitat:
|
Re: Problemm beim rechnen mit Tpoint
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz