koordináta-rendszer
eszköz koordinátarendszer és a világ koordináta-rendszer
kimeneti ablakban
grafikus tájolás
Ha nincs idő.
Amikor dolgozik a számítógépes grafika kell foglalkozni a két koordináta-rendszer. Az első rendszer - a rendszer eszköz koordinátákkal (vagy a képernyő koordináta-rendszer). Pontkoordináták ebben a rendszerben vannak sorban pixel száma X és sor pixelek száma Y:
0 <= X <= Xmax
0 <= Y <= Ymax
A második koordináta-rendszer - az úgynevezett világ, vagy matematikai. Ez egy derékszögű rendszer (x y.) Által meghatározott a programozó, és független az adott grafikus eszköz:
xmin Paraméterek, hogy adja tartományok az x és y (xmin. Ymin. Àmax. Ymax), meghatározza egy téglalap alakú terület egy kétdimenziós matematikai térben. Ezek a paraméterek csak attól függ egy adott feladatot. Világ koordinálja és koordinátáit eszközök által összekapcsolt egyszerű összefüggések: A képlet a „képernyő” koordináta Y kissé eltér a képlet koordinátái X annak a ténynek köszönhető, hogy a képernyőn koordinátarendszerben OY tengely lefelé irányul. Annak érdekében, hogy minden alkalommal, amikor szükség van, hogy átalakítsa a koordinátákat az egyik rendszerből a másikba, nem írok ezeket a kifejezéseket, célszerű kiadni a számítás X és Y funkciókat. Például: Persze, hogy a jelenléte a két koordináta-rendszer nem jelenti azt, hogy minden esetben meg kell használni őket. Egyszerűen vannak olyan helyzetek, amikor ez sokkal könnyebb dolgozni globális koordinátákat, nem különösebben gondolt a tény, hogy hány pixel a képernyőn vízszintesen és függőlegesen. A probléma, vegye figyelembe a következő példa segítségével a koordináta konverziós függvények. A központban a képernyőn egy bizonyos régióban (lásd. Ábra). És egy pont, amelynek koordinátáit beírni
billentyűzetet.
Tegyük fel, hogy ebben a pillanatban, hogy már csak meg kell jeleníteni a koordináta tengelyek (nincs jelölés), és a körvonalait egy adott területen. Ezt meg lehet tenni elég munkáját közvetlenül a képernyőn koordinátákat. Tegyük fel, hogy a képernyő felbontása 640 x 480 pixel.
A konstrukció tengelyek és kontúr a régió az eljárásaival Line és téglalap:
<Оси>
Vonal (0240639240);
Vonal (320,0,320,479);
<контур>
Vonal (220.240.320.240);
Vonal (220.240.320.140);
Vonal (320.140.320.240);
Téglalap (320.240.420.340);
Az építési terület nem volt probléma. Tegyük fel, hogy azt szeretnénk, hogy megjelenik a képernyőn egy pont koordinátái x = 0,6. y = -0.8. Annak érdekében, hogy „szállítani” ahhoz a ponthoz szükséges ahhoz, hogy a képernyő PutPixe l eljárást. De az eljárás PutPixel. valamint egyéb grafikai eljárás csak akkor működik, képernyő koordinátáit. A képernyő koordináták, amelyek megfelelnek arra a pontra (0,6, -0.8). Persze, hogy lehet kiszámítani:
De ez sokkal kényelmesebb ebben az esetben az elejétől működik a világ koordináta-rendszerben. Mi határozza meg, például az alábbiak szerint:
Construct zajkontúr dolgozik a világ koordináta-rendszer használata meghatározott a fenti funkciók Xs (x) és Ys (y).
Annak érdekében, hogy jelenítse meg a pont koordinátái x = 0,6, y = -0.8 már elegendő, hogy írjon:
PutPixel (Xs (0,6), Ys (-0,8), White);
Néha az építőiparban a kép szükséges oszlik a képernyő több téglalap alakú területen (grafika ablak), úgy, hogy az egyes ablakok építeni a képet. A grafikonon a modul erre a célra van egy speciális eljárás SetViewPort:
SetViewPort (X1, Y1, X2, Y2 Egész ;. ClipMode Boole.);
ahol a változók X1, Y1, X2 és Y2 koordinátái átlós ablakok és ClipMode paraméter határozza meg, hogy az a kép egy része jelenik meg rangsorolva az ablakon, vagy sem. ClipMode paraméter eltarthat két érték. Jelentés ClipOn (igaz) azt jelzi, hogy a kép egy része jelenik meg a dobozra nem jeleníthető meg, és az értéke ClipOff (hamis) azt jelzi, hogy a kimeneti kép kapott az ablakon túl. Az eljárás végrehajtása után a grafikus képernyő „tömörített”, hogy illeszkedjen az ablak, a jelenlegi mutatót mozgatni a bal felső sarokban az ablak, és mozgassa az azonos eredetű. Ha a paraméter értéke ClipMode ClipOn. a részét a képernyő kifelé az ablakon nem elérhető.
Célja a grafikus ablak lehet használni, hogy mozog a kezdete a készülék koordinátarendszerben. Például, ha megad egy ablak amelyben
SetViewPort (GetMaxX div 2, GetMaxY div 2, GetMaxX, GetMaxY, ClipOff);
Munka képe ablakokat lehet megszervezni nélkül SetViewPort eljárást. Ez elegendő ahhoz, hogy csak kis mértékben módosítja funkciók korábban tárgyalt koordináta transzformáció.
Különböztetünk meg a képernyőn, átlós téglalap alakú terület (XWmin, YWmin) - (XWmax, YWmax):
Kompatibilis a régióban matematikai koordináta-rendszerben, mivel a paraméterek xmin. ymin. xmax és ymax. Koordináta konverziós képlet ebben az esetben a következő lenne:
Amikor dolgozik a világ koordinátáit és a használata ennek a módszernek a szervezet grafikus ablakkal, célszerű felvenni a programba a következő mondat leírással:
Bevezetés a programot, és SetWorldCoords SetWindow nem kötelező eljárások, mert tetteik lehet végrehajtani közvetlenül a fő blokk. Szervezésekor több ablakot megjelenítéséhez ezen eljárások alkalmazását megvalósíthatóvá vált, mivel csökkenti a szöveget a program és javítja az olvashatóságot. Sőt, elvei szerint a strukturált programozás, többé-kevésbé egymástól, és a befejezett művelet kívánatos, hogy dolgozzon egy külön alprogramot.
A grafikon a legkézenfekvőbb módja, hogy képviselje a kísérleti adatok megjelenítése állapotának függvényében kapott numerikus szimuláció, stb Ezért az építési különböző menetrendek egyik legfontosabb szakaszában a döntést a sok alkalmazás. A grafikonok különböző: pont, vonal (szaggatott vonal összekötő egyes pontok), sokszögek, a grafika a oszlopdiagram (hisztogram), mint a kördiagram stb
Például, úgy a problémát építésének egy vonalas grafikon, egy tetszőleges függvény egy adott tartományban az érvelés. A bemeneti adatok erre a problémára a következők: a függvény gráf, egy változata az érvelés tartományok és b. és N. a pontok száma megjelenik a grafikonon (vagy ugrásszerű változás dx érv). Ha a probléma megoldásának, kívánatos, hogy tartsák be a következő sorrendben intézkedések:
- belépő az eredeti adatokat;
- táblázatos függvény (a számítás értékeit az érvelés, amikor a változó tól b lépéssel dx);
- meghatározzuk a minimális és maximális értékei funkció előre meghatározott időközönként;
- meghatározása a világ koordináta-rendszer;
- építése a koordináta tengely;
- rajzoló funkciókat.
Tekintsük végrehajtásának egyes ilyen intézkedések, és gondoskodik azok formájában külön eljárások és függvények. A fő program leírja a következő állandók és a változók:
Konstans N meghatározza a megjelenített pontok számát a grafikonon. A tömbök X és Y, tesszük az eredményt táblázatos formában funkciót.
Ezen kívül, azt jelenti, hogy a program tartalmaz egy leírást:
- integer XWmin, XWmax, YWmin és YWmax, meghatározzuk a koordinátákat a kimeneti ablak (lásd fent.);
- reálváltozókhoz xmin, xmax, ymin ymax meghatározására matematikai koordináta-rendszert;
- SetWindow eljárások és SetWorldCoords (lásd fent.);
- két koordináta konverziós függvények Xs és Ys;
- integer és GrDr GRMD, szükséges grafikus inicializálási folyamatot.
F (x. valós). igazi;
kezdődik
F: = függvénykifejezést amelynek grafikonja meg kell építeni;
végén;
Meghatározzuk a minimális és maximális értékeket egy funkciót:
Meghatározása maximális és minimális értékek a funkció ebben az esetben csökken, hogy megtalálják a minimális és maximális Y tömb elem, amely megkapta a táblázatos függvény. Rendezzük a működését az egyes funkciók a minimum és maximum értékek rendre:
tengely:
Az alapja az építési bármely táblázatok és grafikonok a koordináta rendszerben. Az alábbiakban az eljárás az a képernyőn megjelenik egy derékszögű koordinátarendszer fejszékkel és képelrendezés kerülete. Az eljárás két paramétert nx és ny, amelyek meghatározzák a löketek számát a OX és OY tengelyek rendre.
ELJÁRÁS BuildCoords (nx, ny Byte.);
VAR
i. byte;
v. igazi;
s. string;
BEGIN
SetColor (fehér);
Téglalap (XWmin, YWmin, XWmax, YWmax); <область графика>
Vonal (Xs (xmin), Ys (0), Xs (xmax), Ys (0)); <ось ОХ>
Vonal (Xs (0), Ys (ymax), Xs (0), Ys (ymin)); <ось OY>
SetTextStyle (SmallFont, 0,5); <выбор шрифта Small>
SetTextJustify (CenterText, CenterText); <выравнивание текста>
i: = 0 a ny-1 do kezdődik
v: = ymin + (ymax-ymin) / (ny-1) * i;
Str (v: 5: 2, s);
Vonal (XWmin, Ys (v), XWmin-5, Ys (v));
OutTextXY (XWmin-30, Ys (v), s);
végén;
END;
ELJÁRÁS Graphic (Color szó.);
VAR i. integer;
BEGIN
SetColor (színes);
MoveTo (Xs (X [1]), Ys (Y [1]));
Kör (Xs (X [1]), Ys (Y [1]), 2);
Az I: = 2-től n DO kezdődik
LineTo (Xs (X [i]), Ys (Y [i]));
Kör (Xs (X [i]), Ys (Y [i]), 2);
végén;
END;
Grafikus eljárás épül dot vonaldiagramon a pontokat tárolt paraméter az X és Y Szín tömbök meghatározza a színes vonal.
Tehát, tekintettel a fenti rutinok, a program a rajzoló funkciókat fog szerkezete a következő:
PROGRAM Graphic_of_Function;
FELHASZNÁLÁS CRT, Graph;
CONST
N = 50;
VAR
X, Y. array [1..n] valós;
VAR
Leírás változók XWmin, XWmax, YWmin, YWmax;
Leírás változók xmin, xmax, ymin ymax;
Leírás SetWorldCoords eljárások;
Leírás SetWindow eljárások;
Leírás Xs funkció;
Leírás Ys funkció;
Leírás TablFunc eljárások;
Leírás Miny funkció;
Leírás MaxY funkció;
Leírás BuildCoords eljárások;
Grafikus eljárás leírása;
VAR
a, b. igazi;
GrDr, GRMD. integer;
BEGIN
ClrScr;
Write ( 'Add meg az érvelés módosítási korlátokat [a, b]:');
ReadLn (a, b);
TablFunc (a, b);
GrDr: = észlelni;
InitGraph (GrDr, GRMD, a 'C: \ TP7 \ BGI');
SetWindow (100, 50, 500, 400);
SetWorldCoords (a, Miny, b, MaxY);
BuildCoords (5, 5);
Grafikus (sárga);
ReadKey;
CloseGraph;
END.
Ez a program könnyen változtat azon a tényen, hogy ő ábrázoljuk adott pontok szerezhetők, például eredményeként néhány kísérletet. Szigorúan véve nem szükséges megváltoztatni semmit erre. Meg kell írni egy új eljárást kitöltésével tömbök X és Y. Emlékezzünk, hogy mielőtt ezt az eljárást folytató TablFunc. Az eljárás adatbeviteli lehet végrehajtani az alábbiak szerint:
Ezt követően, az eljárás hívása helyett TablFunc főprogram egység kell, hogy egy hívás Olvasás eljárást.
Első pillantásra, a program a fent tárgyalt konstrukció lineáris grafikonjait tűnhet egy kicsit bonyolult (bár ez csak látszólagos összetettsége) és túlterhelt különböző eljárások és függvények. A fő előnye ennek a megközelítésnek és programok viszonylagos rugalmassága: nem számít, hogy mit nem adja meg a funkciót, amit nem adja meg a szórási tartományt az érvelés, a program szükséges, hogy létrejöjjön a kívánt programot. És az összes diagram kép lesz pontosan illeszkednek a kijelölt ablakot. Természetesen a sokoldalúság jön áron, és ebben az esetben a költség bevezetésével a különböző változók és rutinok. De arzenálját ezek a rutinok is ugyanolyan könnyen építeni a képernyőn, mint egy grafikont, és több mint tíz, amelyek mindegyike lesz a tengely. Kívánt esetben, a leírása néhány rutinok (mint például SetWindow, SetWorldCoords, Xs, Ys). valamint változó XWmin, XWmax, YWmin, YWmax, xmin, xmax, ymin és ymax lehet kiadni egy külön modul. Azt is hozzá más típusú eljárás az grafikonok. Mindez további jelentős könnyebb írni programokat grafikon.
4. Ha nincs idő ...
A különböző problémák megoldásában, mint például a kapcsolódó számítógépes modellezés és a különböző folyamatok, gyakran van szükség, hogy megjelenítse a kapott eredményeket grafikusan. Lehetséges, hogy a tervezés biztosítja a minimális követelmények, különösen, ha az eredmények köztes. Ebben az esetben természetesen nem kell írni egy univerzális program ábrázolási és olyan sok dolog, korábban tárgyalt is jelentősen egyszerűsödik.
Vegyük például egy egyszerű probléma:
Követ dobott fel szögben a horizonton a kezdeti arány. Felépítéséhez szükséges képernyőn mozgás pályája a kő különböző értékek a szög a szereposztás.
Az egyenletek a mozgás egy kő koordináták x és y a rögzített referencia képkocka rendszer van formájában:
Egy adott érték és a legnagyobb magassága a kő emelkedik a horizont fölé, és maximális repülési távolság összhangban meghatározott:
A konstrukció a mozgáspályát követ előre meghatározott érték és szükséges, változó a T értéke egy bizonyos lépés. kiszámításához x és y koordinátákat, és megjeleníti őket a képernyőn. Annak érdekében, hogy a képernyő „illik” a pályák különböző szögek esetén a leadott először meg kell határoznia a maximális hatótávolság és emelési magassága egy adott értéket. Nyilvánvaló, hogy a maximális távolság egyenlő (a), és a maximális emelési magasság ().
Mi határozza meg derékszögű koordináta-rendszer (a világ koordináták), amely körül a kő épít pályája a mozgás:
xmin = 0, xmax =, ymin = 0, ymax =.
Mivel az (1) képernyő koordináták fogja meghatározni a következő kifejezések:
ahol a jelölést. és.
Az alábbiakban a megfelelő programot.