HSG

Aktuelle Seite: HSG/Fächer/Informatik/Material

Die Tangram-Teile

Die Skizze zeigt eine mögliche Darstellung der Teile im Welt-Koordinatensystem.

Teil 0: kleines Dreieck (0/0), (3/0), (0/3)

Teil 1: kleines Dreieck (0/0), (3/0), (0/3)

Teil 2: mittleres Dreieck (0/0), (6/0), (3/3)

Teil 3: großes Dreieck (0/0), (6/0), (0/6)

Teil 4: großes Dreieck (0/0), (6/0), (0/6)

Teil 5: Quadrat (0/0), (3/0), (3/3), (0/3)

Teil 6: Parallelogramm (3/0), (3/3), (0/6), (0/3)


Die Initialisierung der Teile wird man einem geeigneten Konstruktor überlassen. In folgendem Quelltext-Auszug wurden manche Teile gegenüber obigem Bild etwas verschoben.
Eine denkbare Erweiterung wäre, die so erzeugten Teile einer zufälligen Schiebung und Drehung zu unterziehen.

constructor TTeileVerwalter.Create;
var
  i : integer;
  P : TPArray;
begin
  inherited Create;
  for i := 0 to 6 do FTeile[i] := TTeil.Create;
  Fxmin := -10; Fxmax := +10;
  Fymin := -10; Fymax := +10;

  FTeile[0].name := 'kleines Dreieck 1'; // DEBUG
  setLength(P,3);
  P[0].x := 0; P[0].y := 0;
  P[1].x := 3; P[1].y := 0;
  P[2].x := 0; P[2].y := 3;
  FTeile[0].setP(P); FTeile[0].setFarbe(clRed);

  FTeile[1].name := 'kleines Dreieck 2'; // DEBUG
  P[0].x := 1; P[0].y := 0;
  P[1].x := 4; P[1].y := 0;
  P[2].x := 1; P[2].y := 3;
  FTeile[1].setP(P); FTeile[1].setFarbe($005599ff); //orange, Kodierung: 00BGR

  FTeile[2].name := 'mittleres Dreieck'; // DEBUG
  P[0].x := 2; P[0].y := 0;
  P[1].x := 8; P[1].y := 0;
  P[2].x := 5; P[2].y := 3;
  FTeile[2].setP(P); FTeile[2].setFarbe(clYellow);

  FTeile[3].name := 'großes Dreieck 1'; // DEBUG
  P[0].x := -1; P[0].y := 0;
  P[1].x := 5; P[1].y := 0;
  P[2].x := -1; P[2].y := 6;
  FTeile[3].setP(P); FTeile[3].setFarbe(clAqua);

  FTeile[4].name := 'großes Dreieck 2'; // DEBUG
  P[0].x := -2; P[0].y := 0;
  P[1].x := 4; P[1].y := 0;
  P[2].x := -2; P[2].y := 6;
  FTeile[4].setP(P); FTeile[4].setFarbe(clFuchsia);

  FTeile[5].name := 'Quadrat'; // DEBUG
  SetLength(P,4);
  P[0].x := 1; P[0].y := 0;
  P[1].x := 4; P[1].y := 0;
  P[2].x := 4; P[2].y := 3;
  P[3].x := 1; P[3].y := 3;
  FTeile[5].setP(P); FTeile[5].setFarbe(clBlue);

  FTeile[6].name := 'Parallelogramm'; // DEBUG
  P[0].x := 5; P[0].y := 0;
  P[1].x := 5; P[1].y := 3;
  P[2].x := 2; P[2].y := 6;
  P[3].x := 2; P[3].y := 3;
  FTeile[6].setP(P); FTeile[6].setFarbe(clLime);

  SetLength(P,0);
end;