- •Текстовый и графический режимы.
- •Графические координаты.
- •Переключение между текстовым и графическим режимами.
- •Установка цвета линии, типа линии и закраски.
- •Точки на экране
- •Линии и прямоугольники
- •Окружности, эллипсы, дуги.
- •Многоугольники
- •Вывод изображений в относительных координатах.
- •Работа с текстами в графическом режиме.
- •Графические окна.
- •Графики функций Задача 1.
- •Программы построения кривых на плоскости.
- •Задача 2.
- •Программы, использующие случайные числа и рекурсию Задача 3.
- •Задача 5.
- •Занимательная графика
- •Задача 8.
- •Трехмерные иллюзии.
- •Литература.
Графики функций Задача 1.
Построить графики функций в декартовой системе координат:
Решение.
Чтобы система координат имела более удобный для построения графиков вид, определим графическое окно
SetViewPort(320,240,520,440,ClipOff).
В нем начало координат совпадает с центром экрана и возможна адресация отрицательных координат. Значение ClipOff указывает на то, что графики не обрезаются по границам окна. Величины MaxX и MaxY, которые могут быть и различными, вводятся и используются далее для вычисления коэффициентов масштабирования kx и ky вдоль осей координат. Шаг изменения абсциссы (константа step) влияет на вид и скорость построения графика.
Program Examp_25;
Uses crt, graph;
Const step=0.05;
Var
MaxX, MaxY,i,j,kx,ky:Integer;
x,y,x0:Real;
z:String[1];
Procedure Graphinterface;
Var
driver, mode, error:Integer;
s:String;
Begin
driver:=detect;
s:=' ';
Initgraph(driver,mode,s);
error:=GraphResult;
if error<>GrOk then
begin
writeln(GraphErrorMsg(Error));
Halt(error)
end
end;
Begin
Graphinterface;
SetViewPort(320,240,520,440,ClipOff);
Setcolor(10);
TextColor(10);
Repeat
OutTextXY(-265,-235,'Введите
MaxX и MaxY __');
GoToXY(30,1); Readln(MaxX,MaxY);
kx:=200 div MaxX; ky:=200 div MaxY;
{Коэффициенты масштабирования}
ClearDevice; SetColor(2);SetLineStyle(0,1,3);
{оси координат}
Line(0,-225,0,225); Line(0,-225,-4,-220);
Line(0,-225,4,-220);
Line(-270,0,270,0); Line(270,0,260,4);
Line(270,0,260,-4);
{Единичные отрезки и надписи на осях
координат}
SetColor(10);SetLineStyle(0,0,2);
for i:=-MaxX to MaxX do
Line(i*kx,2,i*kx,-2);
For j:=-MaxY to MaxY do
Line(2,j*ky,-2,j*ky);
Str(MaxX,z); OutTextXY(195,8,z);
OutTextXY(260,10,'X');
Str(MaxY,z); OutTextXY(-15,-202,z);
OutTextXY(-15,-225,'Y');
x0:=-220;
Repeat
x:=x0/kx;
{-----------Формулы---------}
{1} {y:=sin(x);}
{2} {y:=cos(x-1)+abs(x);}
{3} (*if abs(x-2)>step then y:=(x+3)/(x-2);
{вертикальная и горизонтальная
асимптоты}
PutPixel((2)*kx,Round(x0),7);
PutPixel(Round(x0),-Round(1*ky),7);*)
{4} (*y:=0.5*x-1;
{наклонная и вертикальная асимптоты}
PutPixel(Round(x0),-Round(y*ky),7);
PutPixel((-1)*kx,Round(x0),7);
if abs(x+1)>step then
y:=x*x*x/sqr(x+1)/2; *)
{5} y:=x*(x*x-3);
PutPixel(-Round(y*ky),Round(x0),10);
PutPixel(Round(x0),-Round(y*ky),14);
if Keypressed then Exit else x0:=x0+step
{шаг}
Until x0>220;
Readln;
for i:=-MaxX to MaxX do
{целочисленная решетка}
for j:=-MaxY to MaxY do
PutPixel(i*kx,j*ky,15);
SetColor(10); {выход или продолжение}
OutTextXY(-265,230,'Esc - выход,
Enter - изменить масштаб')
Until ReadKey=#27;
CloseGraph;
End.
В блоках операторов {1}-{4} строятся графики заданных в условии функций. Первые две функции определены всюду, а две последующие требуют учета области определения. В блоках операторов {3} и {4} изображаются также имеющиеся асиптоты графиков функций. Блок операторов {5} "демонстрирует" все 9 пар решений системы
Приведенную программу можно использовать не только для построения графиков функций, но и для приближенного решения систем уравнений, изучения координатных преобразований графиков функций и других приложений.