Машинные координаты
Графические функции
GetMaxX - определяет максимальный размер экрана по оси x.
GetMaxY - определяет максимальный размер экрана по оси y.
GetX - координата текущей позиции курсора по оси x.
GetY - координата текущей позиции курсора по оси y.
Начало машинной системы координат, направление осей, а также максимальные значения координат монитора показаны на рисунке
На рисунке приведена также машинная (xm, ym) и физическая (x,y) системы координат. Для изображения на экране точки с физическими координатами (x,y) необходимо определить ее машинные координаты (xm, ym). Расчетные формулы имеют следующий вид (попробуйте самостоятельно получить эти формулы):
xm=x0+x*Mx ,
ym=y0-y*My,
где Mx, My-масштабы соответственно по осям x и y, которые показывают число пикселей в одной физической единице,
x, y- физические координаты точки,
xm, ym- машинные координаты точки,
x0, y0- машинные координаты начала физической системы координат.
Пример. Нарисовать через весь экран горизонтальную и вертикальную линии, пересекающиеся в центре монитора.
Этапы разработки программы сведены в таблицу.
Таблица
N | Этапы программирования | Выполнение |
1. | Постановка задачи | Нарисовать через весь экран горизонтальную и вертикальную линии, пересекающиеся в центре монитора. |
2. | Математическое описание | Изобразим вид экрана с указанием координат требуемых линий |
3. | Разработка структограммы | |
4. | Написание программы | Program P5; Uses graph; {подключение граф.модуля} Var gd,gm:integer; Begin gd:=detect;{определение граф. драйвера} InitGraph(gd,gm,’ ‘);{инициализация графики} Line(0, round(GetMaxY/2), GetMaxX, Round(GetMaxY/2));{гориз. лин.} Line(round(GetMaxX/2), 0, Round(GetMaxX/2), GetMaxY); {вертик. лин.} Readln; {пустой ввод} CloseGraph;{закрытие графики} End. |
Пример. Написать программу построения графика функции y=x2 для x∈[-1;1].
Этапы разработки программы сведены в таблицу.
Таблица
N | Этапы программирования | Выполнение |
1. | Постановка задачи | Построить график функции y=x2 для x∈[-1;1]. |
2. | Математическое описание | Изобразим вид экрана, который мы хотели бы получить после выполнения программы. |
3. | Разработка структограммы | |
4. | Написание программы | Program P6; Uses graph; Var gd,gm:integer; x,y:real; x0,y0,xm,ym,Mx,My:integer; begin gd:=detect; InitGraph(gd,gm,’ ‘); Mx:=300; x0:=320; My:=440; y0:=460; {выбраны для монитора 640×480 пикс.} For xm:=20 to 620 do Begin x:=(xm-x0)/Mx; y:=sqr(x); ym:=round(y0-y*My); PutPixel(xm,ym,1); End; Readln; CloseGraph; End. |