Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Язык Паскаль

Язык Паскаль.

Язык Паскаль

{Построение графика функции y=sin (x)}

uses graph, crt;

Const

PrW=70; {процент использования ширины экрана}

PrH=70; {процент использования высоты экрана}

StX=5; {шаг угла x}

PATH=’’; {ФАЙЛЫ *. BGI находятся в рабочем каталоге}

Var

W, H, gd, gm, x, Xc, Yc, XcMax: integer;

Mx, My: real; {масштабы по осям Х и Y}

y: real;

{Переход от центральных координат к экранным}

procedure WH (var W, H: integer); {ширина и высота экрана}

begin

{Функции GetMaxX и GetMay возвращают максимальные значения соответствующих экранных координат}

W:=(GetMaxX+1); {ширина}

H:=(GetMaxY+1); {высота}

end;

Function Xscr (X: Integer): Integer;

Begin Xscr:=X + W div 2 end;

Function Yscr (Y: Integer): Integer;

Begin Yscr:=H div 2 – Y end;

BEGIN

gd: =DETECT;

initgraph (gd, gm, path);

WH (W, H); {определяем ширину и высоту экрана}

{Интервал изменения угла х от –180 до 180 градусов}

Mx: =PrW/100*W/360;

{Интервал изменения sin от-1 до 1}

My: =PrH/100*H/2;

XcMax: =round (Mx*180); {Максимальная центральная координата по Х}

YcMax: =round (My); {Максимальная центральная координата по Y}

SetColor (Yellow); {Цвет – желтый}

Line (Xscr (-XcMax), Yscr (0), Xscr (XcMax), Yscr (0)); {ось X}

Line (Xscr (0), Yscr (-YcMax), Xscr (0), Yscr (YcMax)); {ось X}

X: = -180; {начальное значение х. Sin(-180) =0}

{Ставим курсор в начальную точку на графике}

MoveTo (Xscr (-XcMax), Yscr (0));

Repeat {цикл графика}

x: =x + StX; {новое значение угла x}

y: =sin (x*Pi/180); {значение функции}

Xc: =round (Mx*x); {центральная координата по X}

Yc: =round (My*y); {центральная координата по Y}

{Проводим отрезок от старой до новой точки на графике}

LineTo (Xscr (Xc), Yscr (Yc));

until x>=180; {цикл графика}

repeat until keypressed;{Выход – нажатием любой клавиши}

CloseGraph; {Переход в текстовой режим}

END.

{Программа построения перспективы улицы}

uses Graph;

{SI grtool. Pas}

{SI transfor. Pas}

{SI picture. Pas}

const

Angle=30; {Угол наклона в градусах}

LO=100; {Начальная длина сдвига}

kO=0.93; {Начальный коэффициент «растяжения»}

var

dx, dy: integer; L, k: real;

BEGIN

Gd:=DETECT;

InitGraph (Gs, Gm, Path); {Переход в графический режим}

WH (W, H); {находим ширину и высоту экрана}

aP: =aPhouse; L: =LO; k: =kO;

Displ (Nhouse, aP, -70, -70); {Сдвиг дома влево и вниз}

DrawPicture (Nhouse, aP, HouseMatrix, White); {Первый дом}

readln;

repeat {Цикл улицы}

dx: =round (L*cos (Angle/180*Pi));

dy: =round (L*sin (Angle/180*Pi));

Displ (Nhouse, aP, dx, dy); {Сдвиг дома}

PO: =aP [1]; {Первая вершина – центра сжатия}

Strain (Nhouse, aP, PO, k); {Сжатие дома}

if Inside (Nhouse, aP) then begin {Очередной дом}

DrawPicture (Nhouse, aP, HouseMatrix, White);

{Пересчет длины сдвига и коэффициента сжатия}

L; =L*0.83; k: =k*ko;

readln;

end; {Очередной дом}

until Not Inside (Nhouse, aP); {Цикл улицы}

closegraph; {Переход в текстовой режим}

END.

 

{изображение последовательности правильных многоугольников}

Uses Greph, Crt;

Tupe

tPoint=record {Тип точки}

x,y: integer; {экранные координаты точки}

end;

Const

PATH=’’; {файлы *. BGI находятся в рабочем каталоге}

PrD=70; {диаметр описанной окружности в от высоты экрана}

N=6; {число сторон многоугольника}

Nmax=50; {максимальное число сторон многоугольника}

g:real=4; {отношение, в котором делятся стороны}

Ns=20; {число изображаемых многоугольников}

Var

Gd, Gm, W, H, R, i, j: Integer;

Angie: real;

aPold, aPnew: array [0.. Nmax] of tPoint;

{Переход от центральных координат к экранам}

procedure WH (var W, H: integer); {ширина и высота экрана}

begin

{Функции GetMaxX и GetMaxY возвращают максимальные значения

соответствующих экранных координат}

W:= (GetMaxX+1); {ширина}

H:= (GetMaxY+1); {высота}

end;

Function Xscr (X: Integer): Integer;

Begin Xscr:=X + W div 2 end;

Function Yscr (Y: Integer): Integer;

Begin Yscr: =H div 2 – Y end;

procedure DrawPolygon; {Изображение многоугольника}

var

i: byte;

xb, yb, xe, ye: integer;

begin

SetColor (Yellow); {цвет – желтый}

for i; =0 to N-1 do begin

{находим экранные координаты концов очередной стороны и рисуем ее}

xb: =Xscr (aPold [i].x); yb: =Yscr (aPold [i].y);

xe: =Xscr (aPold [i+1].x); ye: =Yscr(aPold [i=1].y);

Line (xb, yb, xe, ye);

end;

end;

BEGIN

Gd: =DETECT;

InitGraph (Gd, Gm, Path); {Переход в графический режим}

WH (W,H); {находим ширину и высоту экрана}

R: =round (PrD*0. ½*H); {радиус описанной окружности}

Angle: =2*Pi/N; {центральный угол стороны}

for i: =0 to N do begin {вершины исходного многоугольника}

aPold [i]. x: =round (R*cos (Angle*i));

aPold [i]. y: =rjund (R*sin (Angle*i));

end;

DrawPolygon; {рисуем исходный многоугольник}

for j: =1 to Ns do begin {цикл многоугольников}

for i: =0 to N-1do begin {вершины очередного многоугольника}

aPnew [i]. x: =round ((aPold [i]. x=q*aPold [i=1].x) / (1+q));

aPnew [i]. y: =round ((aPold [i]. y=q*aPold [i=1].y) / (1+q));

end; {вершины очередного многоугольника}

aPnew [N]: =aPnew [0]; {первая и последняя вершины совпадают}

{переносим вершины из массива aPnew в aPold}

for i: =0 to N do aPold [i]: =apnew [i];

DrawPolygon; {рисуем очередной многоугольник}

end; {цикл многоугольников}

repeat until KeyPressed; {Прерывание – нажатием любой клавишей}

CloseGraph; {Переход в текстовой режим }

END.

 

 

 

<== предыдущая лекция | следующая лекция ==>
БИЛЕТ № 16 | Общие правила организации судебных органов, пронизывающие регламентацию всех стадий судопроизводства, называются
Поделиться с друзьями:


Дата добавления: 2015-05-10; Просмотров: 210; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.081 сек.