ПредишенСледващото

устройство координатна система и светът координатна система
изходен прозорец
Построяване
Когато няма време.

Когато се работи с компютърна графика трябва да се справят с двете координатни системи. Първата система - координати на система на устройството (или екран координатна система). Точка координати в тази система са в съответствие брой пиксели X и ред брой пиксели Y:

0 <= X <= Xmax
0 <= Y <= Ymax

Вторият координатната система - т.нар света или математически. Тя е декартово система (х ш.), Определени от програмист, и е независим от специално графично устройство:

xmin ymin

Параметри, които определят граници на х и у (xmin. Ymin. Xmax. Ymax), определят правоъгълна област в двумерен математически пространство. Тези параметри зависят само за конкретна задача.

Световната координира и координати на устройства свързани помежду си с прости отношения:

Формулата за "екран" координира Y е малко по-различен от формулата за координати X дължи на факта, че в екрана координатна система OY ос е насочена надолу.

За да бъде всеки път, когато има нужда да се трансформират координатите от една система към друга, не пишете тези изрази, е удобно да издаде изчисляване на X и Y като функции. Например:

Разбира се, че присъствието на двете координатните системи не означава, че във всички случаи е необходимо да ги използвате. Просто има ситуации, когато тя е много по-лесно да се работи с глобални координати, не особено мислене за това, колко пиксела на екрана хоризонтално и вертикално.

Проблемът, разгледаме следния пример за използване на координатната функции за преобразуване. В центъра на екрана, за да се покаже определен регион (вж. Фиг.) И една точка, чиито координати са въведени от
клавиатура.

координатни системи

Да приемем за момент, че ние просто трябва да се покаже на координатните оси (без маркиране), както и контурите на дадена област. Това може да стане доста работа директно с координатите на екрана. Да кажем, че разделителната способност на екрана от 640 х 480 пиксела.

координатни системи

За да се построи оси и контури на региона използват процедурите Line и правоъгълник:

<Оси>
Line (0240639240);
Line (320,0,320,479);
<контур>
Line (220240320240);
Line (220240320140);
Line (320140320240);
Правоъгълник (320,240,420,340);

С областта на строителството е имало проблем. Сега да предположим, че искате да се показва на екрана на точка с координати х = 0,6. у = -0.8. С цел да се "достави" до точката, необходимо, за да предизвика екран PutPixe процедурата по л. Но процедурата PutPixel. както и друга графична процедура работи само с координатите на екрана. Екран координира което съответства на точката (0.6, -0.8). Разбира се, те могат да бъдат изчислени:

Но това е много по-удобно в този случай от началото на работа в света координатна система. Ние го определи, например, както следва:

Построява контур площ работа в света координатна система, използването, дефинирано в горните функции Xs (х) и Ys (у).

За да се покаже точка с координатите х = 0.6, у = -0,8 сега е достатъчно да пише:

PutPixel (Xs (0.6), Ys (-0.8), White);

Понякога в изграждането на образа, че е необходимо да се раздели на екрана на няколко правоъгълни области (графика прозорец), така че във всеки един от прозорците, за да изгради своя образ. В ГРАФИКА модул за тази цел има специална процедура SetViewPort:

SetViewPort (X1, Y1, X2, Y2 цяло число ;. ClipMode булева.);

където координати променливи X1, Y1, X2 и Y2 са диагонални прозорци и параметър ClipMode определя дали част от изображението ще се появи класирана извън прозореца, или не. параметър ClipMode може да две стойности. Значение ClipOn (вярно), показва, че част от изображението да се появи извън кутията не трябва да се показва и ClipOff на стойност (фалшиво) показва възможността на изходното изображение има зад прозореца. След извършване на тази процедура графичен екран "компресиран", за да се поберат на прозореца, сегашната местите курсора до горния ляв ъгъл на прозореца и да се премести към един и същ произход. Ако параметърът е равна ClipMode ClipOn. от страна на екрана извън прозореца не е налична.

Цел на графичен прозорец може да се използва, за да се премести в началото на устройството координатна система. Например, ако посочите прозорец наричайки

SetViewPort (GetMaxX DIV 2, GetMaxY DIV 2, GetMaxX, GetMaxY, ClipOff);

Работа с графични прозорци може да се организира без процедура SetViewPort. Достатъчно е да се променят само малко функции, които преди обсъдени координатна трансформация.

Различаваме на екрана с диагонал на правоъгълната зона (XWmin, YWmin) - (XWmax, YWmax):

Съвместим с този регион математическа координатна система, като се има предвид параметри xmin. ymin. Xmax и Ymax. Координатна формула превръщане в този случай ще бъде както следва:

Когато се работи със световните координатите и използването на този метод за организация на графични прозорци, е препоръчително да се включат в програмата на следните блокови описания:

Въведение в програмата и SetWorldCoords SetWindow не е задължителните процедури, защото техните действия може да се прилага директно в основната блок. При организиране на няколко прозореца показване на използването на тези процедури да стане възможно, тъй като намалява текста на програмата и да се подобри неговата четливост. Освен това, в съответствие с принципите на структуриран програмиране, повече или по-малко, освен и завършена операция е желателно да се направи в отделна подпрограма.

Графиката е най-лесния начин да представлява експериментален изображение на данни в зависимост получени чрез цифрова симулация и т.н. Поради това, изграждането на различни графици е един от най-важните етапи на решението на много приложения. Графиките са от различни видове: точка, линия (прекъсната линия, свързваща отделните точки), полигони, графиките в бар графика (хистограма) като кръгова диаграма, и т.н.

Така например, ще обсъдим въпроса за изграждане на линейна графика на произволна функция в даден диапазон на аргумента. входни данни за този проблем са: функция графиката е конструиран, вариант на диапазони аргумент и б. и N. броя точки, показани на графиката (или стъпка промени DX аргумент). При решаването на проблема, е желателно да се придържат към следната последователност от действия:

  1. въвеждане на първоначалните данни;
  2. таблични функция (стойности за изчисляване на аргумента, когато се променя от А към В стъпка с DX);
  3. определяне на минимални и максимални стойности на функцията на предварително определен интервал;
  4. определение на света координатна система;
  5. изграждане на координатните оси;
  6. заговор функции.

Помислете за изпълнението на някои от тези действия, и да ги подредите във формата на отделни процедури и функции. Основната програма ще опише следните константи и променливи:

Постоянно N определя броя на точки, показани на графиката. масиви Х и Y, ние поставяме функцията резултат таблични.

В допълнение към това, ние имаме предвид, че програмата включва описание на:

  • целочислени променливи XWmin, XWmax, YWmin и YWmax, определяне на координатите на прозореца за изход (по-горе.);
  • реалните променливи xmin, Xmax, ymin, Ymax, определяне на математическия координатна система;
  • SetWindow процедури и SetWorldCoords (по-горе.);
  • две координира функциите на преобразуване Xs и Ys;
  • целочислени променливи и GrDr GrMd, необходими за процедурата графики инициализация.

функция F (х. реални). недвижими;
започвам
F: = израз за функцията чиято графика трябва да се изгради;
приключи;

Определяне на минималните и максималните стойности на функция:
Определяне на максимални и минимални стойности на функцията в този случай се намалява до намирането на минималния и максималния елемент масив Y, в която е получено функцията таблица. Подредете действието на отделните функции за минималните и максималните стойности, съответно:

оси:
В основата на конструкцията на всички диаграми и графики е координатната система. По-долу е процедурата за изграждане на екрана на декартова координатна система с оси и оформление на изображението периметър. Процедурата има два параметъра пх и NY, който определя броя на ударите на OX и OY оси, съответно.

ПРОЦЕДУРА BuildCoords (NX, NY байт.);
VAR
аз. Байт;
с. недвижими;
с. низ;
ЗАПОЧНЕТЕ
SetColor (White);
Правоъгълник (XWmin, YWmin, XWmax, YWmax); <область графика>
Линия (Xs (xmin), Ys (0), Xs (Xmax), Ys (0)); <ось ОХ>
Линия (Xs (0), Ys (Ymax), Xs (0), Ys (ymin)); <ось OY>
SetTextStyle (SmallFont, 0,5); <выбор шрифта Small>
SetTextJustify (CenterText, CenterText); <выравнивание текста>

защото: = 0 до NY-1 направи започва
V: = ymin + (Ymax-ymin) / (NY-1) * I;
Ул (обем: 5: 2, т);
Линия (XWmin, Ys (V), XWmin-5, Ys (о));
OutTextXY (XWmin-30, Ys (V), и);
приключи;
END;

ПРОЦЕДУРА Graphic (Color дума.);
VAR аз. цяло число;
ЗАПОЧНЕТЕ
SetColor (Color);
MoveTo (Xs (X [1]), Ys (Y [1]));
Кръг (Xs (X [1]), Ys (Y [1]), 2);
Защото: = 2 до N започвайте
LineTo (Xs (X [Ь]), Ys (Y [Ь]));
Кръг (Xs (X [Ь]), Ys (Y [Ь]), 2);
приключи;
END;

Графичен процедура изгражда и точка графика от точките, съхранявани в параметър X и Y. Цвят масиви определя цвета линия.

По този начин, с оглед на посочените по-горе практики, програмата Построяване функции ще има следната структура:

ПРОГРАМА Graphic_of_Function;
ИЗПОЛЗВАНЕ CRT, Графика;
CONST
N = 50;
VAR
X, Y. масив [1..N] на реално;
VAR
Описание на променливи XWmin, XWmax, YWmin, YWmax;
Описание на променливи xmin, Xmax, ymin, Ymax;
Описание SetWorldCoords процедури;
процедури Описание SetWindow;
Описание Xs функция;
Описание Ys функция;
Описание TablFunc процедури;
Описание MinY функция;
Описание Maxy функция;
Описание BuildCoords процедури;
Графичен описание на процедурата;
VAR
а, б. недвижими;
GrDr, GrMd. цяло число;

ЗАПОЧНЕТЕ
ClrScr;
Напишете ( "Enter граници аргумент за промяна [а, б]: ');
ReadLn (а, Ь);
TablFunc (а, Ь);
GrDr: = откриване;
InitGraph (GrDr, GrMd, "C: \ TP7 \ BGI ');
SetWindow (100, 50, 500, 400);
SetWorldCoords (а, MinY, б, Maxy);
BuildCoords (5, 5);
Graphic (жълт);
ReadKey;
CloseGraph;
END.

Тази програма е лесно да се променя факта, че е заговор за дадени точки, получени, например, в резултат на някакъв експеримент. Строго погледнато, не е необходимо да се промени нищо за това. Трябва да напиша нова процедура за попълване масиви X и Y. Спомнете си, че преди тази процедура е била сгодена TablFunc. Процедурата за въвеждане на данни може да бъде изпълнена, както следва:

След това процедурата вместо да извикат TablFunc основната програма единица трябва да се сложи процедура на повикване ReadDATA.

На пръв поглед, описан по-горе конструкция линейни парцели програмата може да изглежда малко сложно (въпреки че това е само видимата сложност) и претоварени различни процедури и функции. Основното предимство на този подход и програми в тяхната относителна гъвкавост: без значение какво не зададете функция, каквото и да не влиза в обхвата на изменение на аргумента, програмата е необходимо да се изгради желания график. И всичко това на изображението на графиката ще бъде точно за добре в рамките на определеното прозореца. Със сигурност за гъвкавост по отношение на цена, и в този случай, разходите за въвеждане на различни променливи и съчетания. Но с помощта на арсенал от тези съчетания може да бъде също толкова лесно изграждане на екрана като графика, и дори десет, всяка от които ще имат своите оси. Ако се желае, описание на някои съчетания (като SetWindow, SetWorldCoords, Xs, Ys). както и променливи XWmin, XWmax, YWmin, YWmax, xmin, Xmax, ymin и Ymax може да бъде издадена като отделен модул. Можете да добавите и други видове процедура за изграждане на графики. Всичко това ще продължи значително по-лесно да се пишат програми с диаграми.

4. Когато няма време ...

При решаването на различни проблеми, като например тези, свързани с компютърно моделиране на различни методи, често е необходимо да се показва резултатите, получени графично. Възможно е да се проектирането на осигуряването на минималните изисквания, особено ако резултатите са междинни. В този случай, разбира се, не е необходимо да се напише една универсална програма за диаграми, и толкова много неща, обсъдени по-горе, могат да бъдат значително опростени.

Да вземем например един прост проблем:

Стоун се изхвърля нагоре под ъгъл спрямо хоризонта от първоначалния курс. Задължително за изграждане на траекторията на екрана движение на камъка при различни стойности на ъгъла на актьорите.

Уравненията на движение за камък координатите х и у в определена система референтна рамка има следния вид:

За дадена стойност и максималната височина на възхода камък над хоризонта, а максималният полет разстояние определя в съответствие с:

За да се конструира крива движение камък на предварително определени стойности и е необходимо, промяна на стойността на тон с определена стъпка. изчисли координатите х и у, и да ги покаже на екрана. С цел да се екран "подходящи" всички траекториите с различни стойности на ъгъла на актьорския състав, първо трябва да се определи максимален обхват и височина на повдигане на дадена стойност. Очевидно е, че максималният обхват е равна на (в), а максималната височина на повдигане (с).

Ние определяме Декартова координатна система (световната координати), за което камъкът ще изгради траектория на движение:

xmin = 0, = Xmax, ymin = 0, = Ymax.

Като се има предвид формулите (1) координатите на екрана ще се определят от следните изрази:

където знакът. и.

По-долу е на съответната програма.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!