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