Einzelnen Beitrag anzeigen

Benutzerbild von olee
olee

Registriert seit: 16. Feb 2008
Ort: Boppard
540 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Stern zeichnen mit line to und move to

  Alt 25. Okt 2009, 15:38
@hathor: Es ist nicht Sinnvoll, einfach eine Lösung in den Raum reinzuwerfen wenn es darum geht, dass er es auch verstehen muss.

Naja wie dem auch sei.

Du hast da wohl einen kleinen Fehler in deiner Schleife

Bisher hast du ja das hier
Delphi-Quellcode:
var
  index,x,xi,yi: integer;
begin
  image1.Canvas.moveto(xm,ym);
  x:=Anzahl_Punkte mod 2;
  for index:=1 to Anzahl_Punkte do
    if x=0 then
    begin
      xi:=trunc (ri*cos(index*winkelstueck));
      yi:=trunc (ri*sin(index*winkelstueck));
      image1.Canvas.LineTo(xi,yi)
    end
    else
    begin
      xi:=trunc (ra*cos(winkelstueck));
      yi:=trunc (ra*sin(winkelstueck));
      image1.Canvas.lineto(xi,yi);
    end;
end;
Nur bleibt für jeden Zacken X = const. D.h. Du hast immer nur gleich lange "Spitzen"

Vllt. solltest du es mit so etwas versuchen

Delphi-Quellcode:
var
  i,xi,yi: integer;
begin
  xi := trunc (ra*cos(0));
  yi := trunc (ra*sin(0));
  image1.Canvas.moveto(xi,yi);

  winkelstueck := 1/Anzahl_Spitzen * ???;

  for i := 0 to Anzahl_Spitzen-1 do
  begin
    // Spitze zeichnen
    xi := trunc (ra*cos(i*winkelstueck)); //Noch falsch
    yi := trunc (ra*sin(i*winkelstueck)); //Noch falsch
    image1.Canvas.LineTo(xi,yi);

    // Gegenstück zur Spitze zeichnen (das ding da was näher am Mittelpunkt liegt xD)
    xi := trunc (ri*cos((i+0.5)*winkelstueck)); //Noch falsch
    yi := trunc (ri*sin((i+0.5)*winkelstueck)); //Noch falsch
    image1.Canvas.lineto(xi,yi);
  end;
end;
Beachte das die Berechnung noch nicht korrigiert ist das musst du noch machen (Mittelpunk mit einbeziehen).

EDIT: Im zweiten code bei der Nicht-Spitze wurde auch noch mit Index multipliziert, was bei dir im unteren Teil deines Codes noch gefehlt hat.

MFG
Björn Zeutzheim
Codename: Performancepumpe
  Mit Zitat antworten Zitat