Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Problemm beim rechnen mit Tpoint (https://www.delphipraxis.net/41714-problemm-beim-rechnen-mit-tpoint.html)

ferby 7. Mär 2005 15:16


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;

ferby 7. Mär 2005 15:19

Re: Problemm beim rechnen mit Tpoint
 
Hallo,

Ich habe den Fehler schon gefunden:

Delphi-Quellcode:
    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));
aber irgendwas ist noch an meiner überlegung falsch :-(

Jasocul 7. Mär 2005 15:20

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.

Khabarakh 7. Mär 2005 15:58

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:
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;
PixelFS nimmt auch Floats an.

sniper_w 7. Mär 2005 16:02

Re: Problemm beim rechnen mit Tpoint
 
Zitat:

PixelFS nimmt auch Floats an.
GraphicsEx ist etwas soo.... :love:

Khabarakh 7. Mär 2005 16:06

Re: Problemm beim rechnen mit Tpoint
 
Zitat:

Zitat von sniper_w
Zitat:

PixelFS nimmt auch Floats an.
GraphicsEx ist etwas soo.... :love:

Kann sein, das ist aber die Graphics32-Lib :mrgreen: .


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