Einzelnen Beitrag anzeigen

sweety

Registriert seit: 21. Jan 2007
3 Beiträge
 
#1

Ablauffehler, Hilfe

  Alt 24. Jan 2007, 01:09
Hallöchen
Habe es geschafft einen Quelltext zu erstellen, wo ich dachte der funktioniert, tut er aber noch nicht so wirklich.
Mein Schmuckstück:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var w,wh,ws,xdel,ydel,lange,wlast,wd,xs1,ys1: real;
    xvorz,yvorz: boolean; //vorzeichen delta xy bestimmen
    i:integer;
    xs,ys:array[1..40] of integer;
    dist:string;
    radtodeg:Extended;
begin
 for i:=1 to n do
   w:=StrToFloat(edit1.Text); //umrechnen in pi und volle winkel

 if w <=180 then wh:=((w/180)*pi)
     else wh:=-(((w-180)/180)*pi);
     ws:=sin(wh);

 for i:=1 to n do
  begin //x-werte differenz zu ersten n-punkt, ersten punkt holen und mit x-werte subtraieren
   xdel:=xp[n-i]-xp[n];//delta x-wert n-i
   ydel:=yp[n-i]-yp[n];//delta y-wert

   //bestimmen der vorzeichen
   if xdel>0 then xvorz:= true else xvorz:= false;
   if ydel>0 then yvorz:= true else yvorz:= false;

   //berechnung neuwert sin bzw. cos
   lange:=sqrt((xdel*xdel)+(ydel*ydel));
   wlast:=(radtodeg(arctan*(ydel/xdel)));//winkel von n x-achse zu punkt

   //4.Quatrant
   if (xvorz and yvorz)=true then wd:= wlast-w;

   //3.Quatrant
   if xvorz=false then
    begin
    if yvorz=true then wd:=180+wlast-w;
    end;

   //2.Quatrant
   if xvorz=false then
    begin
    if yvorz=false then wd:=180+wlast-w;
    end;

   //1.Quatrant
   if xvorz=true then
    begin
    if yvorz=false then wd:=(wlast-w);
    end;
   wd:=degtorad(wd);//drehwinkel x-achse in rad

   //richtungssinn der winkel
   xs[1]:=xp[n];
   ys[1]:=yp[n];
   xs1:=(xp[n]+lange*(cos(wd))));
   xs[i+1]:=round(xs1);
   ys1:=(yp[n]+(lange*(-sin(wd))));
   ys[i+1]:=round(ys1);
   dist:=FloatToStr(n+i)+''+'x'+FloatToStr(xs[i+1])+'y'+FloatToStr(ys[i+1]);

   image1.Canvas.Pen.Color:=clred;
   image1.Canvas.Rectangle(xs[i+1]-1,ys[i+1]-1,xs[i+1]+1,ys[i+1]+1);
   end;

   //zeichnen der gedrehten Figur
   for i:=1 to n do
    begin
     image1.Canvas.MoveTo(xs[i],ys[i]);
     image1.Canvas.LineTo(xs[i+1],ys[i+1]);
    end;
   image1.Canvas.MoveTo(xs[n],ys[n]);
   image1.Canvas.LineTo(xs[1],ys[1];


end;

end.

Bin für jede Hilfe dankbar.


sweety

[edit=MrSpock] Code Tags eingefügt. Mfg, MrSpock[/edit]
  Mit Zitat antworten Zitat