КАТЕГОРИИ: Архитектура-(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.
Дата добавления: 2015-05-10; Просмотров: 228; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |