Mir war schon wieder langweilig so ein Tag vor dem Urlaub, ^^
da hab ich das ganze mal umgeschrieben. So das eine (3D) Pyramide gezeichnet wird. ^^
Kannst ja nach den Schulferien(sind ja atm soweit ich weis) deinem Lehrer geben. ^^
Delphi-Quellcode:
procedure TForm1.Pyramide_3d_paint(grundflaeche, anzahl_ebenen: Integer);
var i, i2, hoehe, grundflaeche_halb, rw_d3d: integer;
begin
with form1.Canvas do
begin
if frac(grundflaeche / 2) <> 0 then
grundflaeche := grundflaeche -1;
hoehe := trunc((grundflaeche * sqrt(3)) /2);
grundflaeche_halb := trunc(grundflaeche / 2);
Pen.Color := clred; // Sieht so ganz nett aus auf schwarzem Hintergrund :D
for i := 0 to anzahl_ebenen -1 do
begin
MoveTo(0 + grundflaeche_halb * i , hoehe * (anzahl_ebenen - i));
for i2 := 0 to (anzahl_ebenen -1) - i do
begin
MoveTo(PenPos.X + grundflaeche, PenPos.Y);
LineTo(PenPos.X - grundflaeche_halb, PenPos.Y - hoehe);
LineTo(PenPos.X - grundflaeche_halb, PenPos.Y + hoehe);
LineTo(PenPos.X + grundflaeche, PenPos.Y);
end;
end;
rw_d3d := round(Sqrt(grundflaeche_halb * grundflaeche_halb / 2));
for i := 0 to anzahl_ebenen - 1 do
begin
MoveTo((grundflaeche * anzahl_ebenen) - ( grundflaeche_halb * i ), hoehe * (anzahl_ebenen - i));
for i2 := 0 to (anzahl_ebenen -1) - i do
begin
MoveTo(PenPos.X + rw_d3d, PenPos.Y - rw_d3d);
LineTo(PenPos.X - rw_d3d - grundflaeche_halb, PenPos.Y + rw_d3d - hoehe);
LineTo(PenPos.X + grundflaeche_halb, PenPos.Y + hoehe);
LineTo(PenPos.X + rw_d3d, PenPos.Y - rw_d3d);
end;
end;
end;
end;
Ps: Mathe ist bei mir lang her falls ihr einen Fehler entdeckt einfach Bescheid sagen. Meiner Erinnerung nach sollte das aber so stimmen.