- Vytvořte si adresář Transformace a do něj si zkopírujte základní soubory s unitou Graph2D
- Podle obrázku umístěte na formulář tři zaškrtávací políčka a tři buttony.
- Propojte buttony Smaz a Konec s příslušnými procedurami
- Na začátku zdrojového kódu přidejte nový typ (type ) - pro zadávání matic
TMatrix = array[1..3,1..3] of Real;
- Tlačítko Transformuj propojte s procedurou Transformuj
- Zadeklarujte potřebné proměnné (před begin)
var A,B,C:TPoint;
Red,Green,Blue:Byte;
At, Bt, Ct:TPoint;
Z:TMatrix;
- Nastavte uživatelské souřadnice, barvy a vykreslete souřadné osy.
with Image1 do
begin
x1:=-10;
x2:=10;
y1:=-10;
y2:=10;
Scale(x1,x2,y1,y2);
Red:=0;
Green:=100;
Blue:=0;
XAxis(x1,x2,0,Red,Green,Blue);
YAxis(y1,y2,0,Red,Green,Blue);
end;
- Zadejte souřadnice původního trojúhelníku ABC a vykreslete ho pomocí procedury Line.
A[1]:=3; A[2]:=0; A[3]:=1;
B[1]:=6; B[2]:=6; B[3]:=1;
C[1]:=-3; C[2]:=4; C[3]:=1;
Line(A,B,Red,Green,Blue);
Line(A,C,Red,Green,Blue);
Line(C,B,Red,Green,Blue);
- Vyzkoušejte, zda program funguje.
- Přidejte pomocnou proceduru na osovou souměrnost. Po zadání bodu vypočte bod souměrně sdružený podle osy x. Jedná se o násobení souřadnic bodu transformační maticí Z ve dvou for cyklech.
(doplňte za var před begin)
procedure OsovaSoumernost(X:TPoint; var Xt:TPoint);
var i,j:Byte;
begin
Z[1,1]:=1; Z[1,2]:=0; Z[1,3]:=0;
Z[2,1]:=0; Z[2,2]:=-1; Z[2,3]:=0;
Z[3,1]:=0; Z[3,2]:=0; Z[3,3]:=1;
for i:=1 to 3 do Xt[i]:=0;
for j:=1 to 3 do
for i:=1 to 3 do
Xt[j]:=Xt[j]+X[i]*Z[i,j];
end;
- Dále do programu doplňte vykreslení transformovaného trojúhelníku. Nejdříve se body A,B,C převedou procedurou OsovaSoumernost na body At,Bt,Ct a ty procedurou Line vykreslí transformovaný trojúhelník. Vše proběhne pouze v případě, že je první Check box zaškrtnutý.
if checkBox1.checked=true then
begin
OsovaSoumernost(A,At);
OsovaSoumernost(B,Bt);
OsovaSoumernost(C,Ct);
Line(At,Bt,Red,Green,Blue);
Line(At,Ct,Red,Green,Blue);
Line(Ct,Bt,Red,Green,Blue);
end;
- Sami přidejte procedury StredovaSoumernost, Posunuti. Od první se liší pouze v tvaru matice Z, který najdete v teoretické části.
- Přidejte další možnosti zašktrtnutí CheckBox2 a CheckBox3, opět je vše stejné, pouze se volá jiná transformační procedura.
- Na panel doplňte EditBoxy pro zadávání rozsahu souřadných os a barev. Na převod na čísla použijte opět funkci VAL. (viz předchozí cvičení)
- Doplňte šest EditBoxů pro zadávání souřadnic trojúhelníka přímo z panelu.
- Můžete dopnit další transformace, například otáčení o zadaný úhel, atd...
- A to je vše :-)