Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Задание. Построить график кривой, заданной параметрически: X=(2+0.5cos(8t))cos(t), Y=(2+0.5cos(8t))sin(t) для интервала t от 0 до 2π






Построить график кривой, заданной параметрически: X=(2+0.5cos(8t))cos(t), Y=(2+0.5cos(8t))sin(t) для интервала t от 0 до 2π, нанести на график размеченные оси координат и сделать подпись.

Дополнительные требования: график изобразить тонкой сплошной линией красного цвета на белом фоне, координатные оси (толстая линия) и разметка (тонкая линия) – черного (темно-серого) цвета, подпись – синего цвета под графиком посередине.

Программу составить для EGA и VGA адаптеров (универсальную). Драйвер графического адаптера (с именем EGAVGA.BGI) находится в каталоге D: \TP6\BGI.

Условия, принятые из соображений дизайна:

График будет занимать 60% ширины и высоты экрана. Разметку проводим через 0.5 по Х и Y. График рисуем процедурой LineTo, для 400 точек.

Program Graph_work2;

{ Программа Лабораторной работы N 8

Вариант N 32.

Построение кривой, заданной параметрически.

А.Я.Умненькая, ст. гр. Я-007 }

Uses Graph, Crt; { Print - только при наличии принтера для печати графика с экрана на бумагу }

TYPE

mas=array[0..400] of real;

Var

X, Y: mas; { текущие значения переменных Х и Y }

Xmin, Xmax, t, tmin, tmax, { минимальное и максимальное значения Х на графике }

Ymin, Ymax, { минимальное и максимальное значения Y на графике }

DeltaX, DeltaY, { диапазоны изменения X и Y в пределах рисунка }

Dt, R, { шаг построения графика по t }

Xj, Yi,

Dxs, Dys, { Шаги разметки осей по Х и по Y }

Part, Pole, { Доля экрана, занятая рисунком и доля чистого поля с каждой стороны }

Mx, My {Коэффициенты пересчета Х в J и Y в I}

: real;

Imin, Imax, { координаты экрана, соответствующие Ymin и Ymax }

Jmin, Jmax, { координаты экрана, соответствующие Xmin и Xmax }

J, I, N, k, { текущие значения переменных координат экрана }

JAll, IAll, {Максимальные размеры экрана (в пикселях) по X и Y}

J0, I0, {Координаты на экране точки пересечения осей графика }

DeltaJ, DeltaI { Экранные размеры рисунка по Х и Y в пикселях}

: integer;

Riska: String[5]; { Строка для вывода чисел у рисок осей }

GraphDrv, { Тип графического драйвера }

GraphMode: integer; { Устанавливаемый графический режим }

Code: word; { Код завершения инициализации графики }

BEGIN { Начало программы }

{1.Задание констант, стандартных значений }

tmin: =0; tmax: =2.0*Pi;

Dxs: =0.5; Dys: =0.5;

Part: =0.6; N: =401;

{4.Расчет характеристик функций }

Dt: =(tmax-tmin)/(N-1);

Xmax: =-100;

Xmin: =100;

Ymax: =-100;

Ymin: =100;

For k: =0 to N-1 do

begin

t: =tmin+Dt*k;

R: =2.0+0.5*cos(8.0*t);

X[k]: =R*cos(t);

Y[k]: =R*sin(t);

if X[k]> Xmax then Xmax: =X[k];

if X[k]< Xmin then Xmin: =X[k];

if Y[k]> Ymax then Ymax: =Y[k];

if Y[k]< Ymin then Ymin: =Y[k];

end;

DeltaX: =Xmax-Xmin;

DeltaY: =Ymax-Ymin;

{5.Открытие графики с проверкой правильности срабатывания}

GraphDrv: =0; {пусть определяет режим сам }

InitGraph(GraphDrv, GraphMode, 'C: \voronov\STUD\TP\BGI');

Code: =GraphResult;

if Code< > 0 then {если завершение с кодом не 0 - закончить программу}

Begin

writeln('Ошибка открытия графики с кодом: ', Code);

Halt; { Останов программы }

End;

{6.Настройка фона}

SetBkColor(15); {Фон белый }

ClearDevice; {Очистка экрана}

{7.Расчет параметров графика на экране}

JAll: =GetMaxX;

IAll: =GetMaxY;

Pole: =(1.0-Part)/2.0;

Jmin: =Round(Pole*JAll);

Jmax: =Round((1.0-Pole)*JAll);

Imin: =Round((1.0-Pole)*IAll);

Imax: =Round(Pole*IAll); { Imin > Imax!!! }

DeltaJ: =Jmax-Jmin;

DeltaI: =Imax-Imin;

{8.Расчет масштабных коэффициентов перехода от X к J и от Y к I}

Mx: =DeltaJ/DeltaX;

My: =DeltaI/DeltaY;

{9.Построение графика функции}

{9.1.Задание характеристик линии}

SetColor(4); { цвет красный }

SetLineStyle(0, 0, 2);

{9.2.Начальная точка графика}

J: =Jmin+Round((X[0]-Xmin)*Mx);

I: =Imin+Round((Y[0]-Ymin)*My);

MoveTo (J, I);

{9.3.Цикл расчета экранных координат графика (X-> J, Y-> I) и проведения отрезков}

for k: =1 to N-1 do

Begin

J: =Jmin+Round((X[k]-Xmin)*Mx);

I: =Imin+Round((Y[k]-Ymin)*My);

LineTo(J, I);

End;

{10.Построение осей координат }

SetColor(8); { цвет темно-серый }

SetLineStyle(0, 0, 3); { сплошная толстая }

J0: =Jmin+Round((0-Xmin)*Mx);

I0: =Imin+Round((0-Ymin)*My);

Line(J0, Imin, J0, Imax); {Построение оси Y (где X=0)}

Line(Jmin, I0, Jmax, I0); {Построение оси Х (где Y=0)}

{11.Разметка осей}

SetLineStyle(0, 0, 0); { сплошная тонкая }

SetTextStyle(0, 0, 0); { шрифт стандартный, подпись горизонтальна }

SetTextJustify(1, 2); {Размещение текста симметрично, относительно заданной

точки по горизонтали и ниже точки по вертикали}

J: =J0;

Xj: =0;

while J< =Jmax+1 do {от начала координат - вправо }

begin

Line(J, Imin, J, Imax);

Str(Xj: 3: 1, Riska);

OutTextXY(J, I0+5, Riska);

Xj: =Xj+Dxs;

J: =Jmin+Round((Xj-Xmin)*Mx);

end;

J: =J0;

Xj: =0;

while J> =Jmin do {от начала координат - влево }

begin

Line(J, Imin, J, Imax);

Str(Xj: 3: 1, Riska);

OutTextXY(J, I0+5, Riska);

Xj: =Xj-Dxs;

J: =Jmin+Round((Xj-Xmin)*Mx);

end;

SetTextJustify(2, 1); {Размещение текста симметрично, относительно заданной

точки по вертикали и левее точки по горизонтали }

I: =I0;

Yi: =0;

while I> =Imax-1 do {от начала координат - вверх }

begin

Line(Jmin, I, Jmax, I);

Str(Yi: 3: 1, Riska);

OutTextXY(J0-10, I, Riska);

Yi: =Yi+Dxs;

I: =Imin+Round((Yi-Ymin)*My);

end;

I: =I0;

Yi: =0;

while I< =Imin do {от начала координат - вниз }

begin

Line(Jmin, I, Jmax, I);

Str(Yi: 3: 1, Riska);

OutTextXY(J0-10, I, Riska);

Yi: =Yi-Dxs;

I: =Imin+Round((Yi-Ymin)*My);

end;

{12.Подпись графика}

SetColor(1); { цвет синий }

SetTextJustify(1, 1); {Размещение текста симметрично, относительно заданной

точки по горизонтали и по вертикали}

I: =Round(IAll*(1-Pole/2)); {середина нижнего поля}

OutTextXY(JAll div 2, I, 'X=(2+0.5cos(8t))cos(t), Y=(2+0.5cos(8t))sin(t)');

{13.Задержка графика на экране }

while Not KeyPressed do;

{14. Вывод графика на печать (на принтер) - только если он подключен }

{Pr; }

{14.Закрытие графического режима }

CloseGraph;

END.

Рисунок 11. Результат работы программы 32-го варианта

Варианты заданий

Таблица 29. Варианты заданий лабораторной работы N9

  N вар Функция или параметрическое уравнение Аргумент и его диапазон   Цвет
текста/ фона графика/ осей координат
  Парабола Y=1.3*X2-1.8 X [-1.2, 1.2] голубой белый зеленый голубой
  Окружность X=0.5+2*cos(t) Y=0.2+2*sin(t) t [0, 2p] красный темно-серый светло-красный коричневый
  Степенная функция Y=X3-2* X2+X X [-1, 3] розовый темно-серый светло-зеленый светло-серый
  Эллипс x=3*cos(t), y=15*sin(t) t [0, 2p] синий светло-серый светло-синий темно-серый
  Конхоида Никомеда X=A+B*cos(f) Y=A*tg(f)+B*sin(f) f [1.5, 4.5] A=1, B=2 светло-красный темно-серый светло-зеленый красный
  Кардиоида X=4*cos(t)*(1+cos(t)) Y=4*sin(t)*(1+cos (t)) t [0, 2p] розовый красный синий розовый
  Дробно-рациональная функция Y=(1.5*X+3)/(X-2) X [-4.2, 1.9] светло-серый розовый голубой желтый
  Декартов лист X=3*A*t/(1+t3) Y=3*A*t*t/(1+t3) t [-0.5, 10] A=2 синий белый светло-синий светло-зеленый
  Функция синус Y=2.5*sin(X)+0.5 X [-2p, 2p] белый зеленый желтый коричневый
  Циссоида X=5*t2/(1+t2), Y=5*t3/(1+t2), t=tg(f) f [-p/4, p/4]   розовый черный зеленый белый
  Тригонометрическая функция Y=сos(X2) X [-2p, 2p] светло-зеленый светло-синий белый розовый
  Строфоида X=4*(t2-1)/(t2+1), Y=4*t*(t2-1)/(t2+1) t=tg(f) f [-p/2.5, p/2.5] темно-серый голубой белый желтый
  Тригонометрическая функция Y=tg(X)-2*X X [-p/2.5, p/2.5] зеленый синий фиолетовый черный
  Астроида X=3.5*cos3(t), Y=3.5*sin3(t) t [0, 2p] голубой белый светло-зеленый зеленый
  Арксинус Y=arcsin(0.5*X) X [-2, 2] темно-серый голубой светло-зеленый зеленый
  Эпициклоида X=(a+b)cos(t)-a*cos((a+b)*t/a), Y=(a+b)sin(t)-a*sin((a+b)*t/a) t [0, 2p] a=6, b=9 розовый фиолетовый голубой синий
  Логарифм Y=ln(X+2) X [-1.5, 5] зеленый красный желтый светло-зеленый
  Гипоциклоида X=2a*cos(f)+a*cos(2f) Y=2a*sin(f)-a*sin(2f) f [-p, p] a=1 белый розовый темно-серый голубой
  Арктангенс Y=3*arctg(X) X [-5, 5] светло-зеленый голубой синий светло-синий
  Эвольвента окружности X=a*cos(f)+a*f*sin(f) Y=a*sin(f)-a*f*cos(f) f [-9p, 9p] a=1.5 зеленый синий голубой черный
  Дробно-рациональная нелинейная функция Y = A + B/X + C/X2 X [0.18, 3] A=1, B=2, C=-0.5 темно-серый белый фиолетовый красный
  Леминиската X=r*cos(f) Y=r*sin(f) r=a*sqrt(2*cos(2f)) f [-p, p] светло-зеленый фиолетовый синий белый
  Локон Аньези Y=A3/(X2 + A2) X [-5, 5] A=2 зеленый белый темно-серый светло-зеленый
  Архимедова спираль X=r*cos(f) Y=r*sin(f) r=A*f f [-6p, 6p] A=1.5 розовый желтый синий светло-красный
  Трохоида(удлинненая циклоида) X=A*(f-B*sin(f)) Y=A*(1-B*cos(f)) f [-2p, 4p] A=1.5, B=1.3 темно-серый белый светло-красный фиолетовый
  Гиперболическая спираль X=(A*cos(f))/f Y=(A*sin(f))/f f [0.1, 10] A=3 фиолетовый зеленый светло-зеленый розовый
  Удлиненная эпициклоида X=5*cos(f)-2*cos(5f) Y=5*sin(f)-2*sin(5f) f [-p, p] светло-серый синий светло-синий красный
  Логарифмическая спираль X=r*cos(f) Y=r*sin(f) r=A*exp(B*f) f [0, 4] A=1.3, B=0.5 светло-зеленый синий белый зеленый
  Удлиненная гипоциклоида X=4*cos(f)+2*cos(4f) Y=4*sin(f)-2*sin(4f) f [0, 2p] темно-серый белый синий зеленый
  Улитка Паскаля X=2cos2(t)+3cos(t), Y=2*cos(t)sin(t)+3sin t t [0, 2p] коричневый желтый зеленый синий
  Показательная функция Y=exp(X2) X [-1, 2] белый красный красный темно-серый
  X=(2+0.5cos(8t))cos(t), Y=(2+0.5cos(8t))sin(t) t [0 до 2π ] синий белый красный темно-серый

Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.011 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал