Einzelnen Beitrag anzeigen

CarpeNoctem

Registriert seit: 16. Nov 2009
2 Beiträge
 
#1

Optische Verkürzung

  Alt 16. Nov 2009, 23:50
Hallo.
Erstmal vorweg: Mein Problem ist mathematisch.
Und Zwar möchte ich auf ein Image mit Canvas ein Schachbrett zeichnen, allerdings optisch 3 Dimensional. Jetzt hab ich aber Probleme mit dem Faktor, um den der Y-Wert abnimmt, wenn man in die Tiefe geht.

Mein Ansatz:

Delphi-Quellcode:
Procedure TForm1.Gitter;
var i:Integer;
    a,b,a1,b1,x,y:Extended;
begin
  Image.Canvas.Pen.Color := rgb(0, 0, 0);
  b := Image.Width;
  a := 1/2 * sqrt(power(Image.Height,2) + power((1/2 * Image.Width),2));
  for I := 0 to 10 do
  begin
    Image.Canvas.MoveTo(i * round(b / 10), Image.Height);
    Image.Canvas.LineTo(round(I * b / 20 + Image.Height / 4), round(Image.Height / 2));
  end;
  for I := 0 to 10 do
  begin
      x := 1/2 * (Image.Width - b);
      b1 := b / 10;
      a1 := a * (x / b);
      y := sqrt(power(a1,2) - power((1/2 * x),2));
      Image.Canvas.MoveTo(round(x),round(Image.Height - y));
      Image.Canvas.LineTo(Image.Width, round(Image.Height - y));
      b := b - b1;
      a := a - a1;
  end;
end;
Allerdings bekomme ich beim Ausführen eine Fehlermeldung mit dem Inhalt: "ungültige Gleitkommaoperation". Soweit ich weiß heist das ja, dass ich durch 0 teilen würde oder eine Variable nicht richtig initialisiert worden ist.

Ich wäre dankbar für einen Lösungsvorschlag oder verbesserung des Ansatzes.

MFG
  Mit Zitat antworten Zitat