Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Rectangle (x1, y1, x2, y2:integer ),
де x1, y1 – координати лівого верхнього кута, x2, y2 - координати правого нижнього кута прямокутника. Область всередині прямокутника не зафарбована і співпадає за кольором з фоном. Більш ефектні для сприйняття прямокутники можна будувати за допомогою процедури Bar (x1, y1, x2, y2:integer), яка малює зафарбований прямокутник. Колір зафарбовування встановлюється за допомогою SetFillStyle. Ще одна ефектна процедура: Bar3D (x1, y1, x2,y2, d: integer, а:boolean) викреслює тривимірний закрашений прямокутник (паралелепіпед). При цьому використовуються тип і колір зафарбовування, встановлений за допомогою SetFillStyle. Параметр d є числом пікселів, задаючих глибину тривимірного контура. Частіше всього його значення рівне четверті ширини прямокутника (d:=(x2-x1)div4). Параметр а визначає, будувати над прямокутником вершину (а:=True) чи ні (а:=False). Приклади використовування: 1. SetColor(Green); Rectangle (200, 100, 250,300); 2. SetFillStyle(1,3); Bar(10,10,50,100); 3. SetFillStyle(1,3); Bar3D(10,10,50,100,10,True);
Побудова багатокутників. Багатокутники можна малювати самими різними способами, наприклад за допомогою процедури Line. Проте в Турбо Паскалі є процедура DrawPoly, яка дозволяє будувати будь-які багатокутники лінією поточного кольору, стилю і товщини. Вона має формат DrawPoly(а: word, var PolyPoints). Параметр PolyPoints є параметром, який містить координати кожного перетину в багатокутнику, що не типізується. Параметр а задає число координат в PolyPoints. Необхідно пам'ятати, що для креслення замкнутої фігури з N вершинами потрібно передати при зверненні до процедури DrawPoly N+1 координату, де координата вершини з номером N буде рівна координаті вершини з номером 1. Проілюструємо на прикладі: Pogram tr; {Програма креслить всередині екрану трикутник червоною лінією} uses crt, graph; var gd, gm: integer; pp: array[1..4] PointType; xm, ym, xmaxD4, ymaxD4:word; Begin gd:= detect; Initgraph(gd, gm, ‘ с/bp’); xm:=GetmaxX; ym:=GetmaxY; xmaxD4:=xm div 4; ymaxD4:= ym div 4; {визначення координат вершин} pp[1].x:= xmaxD4; pp[1].y:= ymaxD4; pp[2].x:= xm - xmaxD4; pp[2].y:= ymaxD4; pp[3].x:= xm div 2; pp[3].y:= ym - ymaxD4; pp[4]:=pp[1]; SetColor(4); {колір для креслення} DrawPoly(4,pp); {4 – кількість перетинів +1} readln; CloseGraph End. В результаті роботи програми на екрані з'явиться червоний трикутник на чорному фоні. Змінити фон усередині трикутника можна за допомогою процедури FillPoly(а: word, var PolyPoints).
Значення параметрів ті ж, що і в процедурі DrawPоly. Дія теж аналогічна, але фон усередині багатокутника зафарбовується. Як приклад намалюємо в лівій верхній частині екрану чотирикутну зірку зеленого кольору: program g; uses crt, graph; Const Star:array[1..18]integer=(75,0,100,50,150,75,100,100,75,150,50,100,0,75,50,50,75,0); Var gd, gm: integer; Begin gd:= detect; initgraph(gd, gm, ‘ с/bp’); SetFillStyle(1,2); FillPoly(9,Star); {9 – кількість перетинів + 1} CloseGraph; End. Побудова дуг і кіл. Процедура креслення кола поточним кольором має наступний формат: Cicrle(x, у, r: word), де x, у – координати центру кола, r – її радіус. Наприклад, фрагмент програми забезпечить виведення яскраво-зеленого кола з радіусом 50 пікселів і центром в точці (450,100): SetColor(LightGreen); Circle(450, 100, 50); Дуги можна креслити за допомогою процедури Arc(x, у: integer, а, b, R:integer), де x, y- центр кола, а, b - початковий і кінцевий кути в градусах, R – радіус. Для задання кутів використовується полярна система координат. Колір для креслення встановлюється процедурою SetColor. У разі a=0 і b=360, креслимо повне коло. Наприклад, виведемо дугу червоного кольору від 0 до 90° в уже накресленій за допомогою Circle(450, 100, 50) кола: SetColor(Red); Arc(450, 100, 0, 90,50); Для побудови еліптичних дуг призначена процедура Ellipse (x, у: integer, а, b, Rx, Ry: integer), де x, у – центр еліпса, Rx, Ry - горизонтальна і вертикальна вісі. У разі a=0 і b=360 креслимо повний еліпс. Наприклад побудуємо голубий еліпс: SetColor(9); Ellipse(100, 100, 0, 360, 50,50); Фон всередині еліпса співпадає з фоном екрану. Щоб створити зафарбований еліпс, використовується спеціальна процедура FillEllipse (x, у: integer, Rx, Ry: integer). Зафарбовування еліпса здійснюється за допомогою процедури SetFillStyle (а, b: word) де а – стиль зафарбовування (таблиця 4), b – колір зафарбовування (таблиця 1). Наприклад, намалюємо яскраво-червоний еліпс, заповнений рідко точками зеленого кольору: SetFillStyle(WideDotFill, Green); { установка стилю заповнення} SetColor(12); {колір креслення еліпса} FillEllipse(300, 150, 50, 50); Таблиця 7.5 Стандартні стилі заповнення
Для побудови секторів можна використовувати наступні процедури: 1) PieSlice (x, у: integer, а, b, R: word), яка малює і заповнює сектор круга. Координати x, у – центр кола, сектор малюється від початкового кута а до кінцевого кута b, а зафарбовування відбувається при використовуванні спеціальних процедур; 2) Sector (x, у: integer, а, b, Rx, Ry: word), яка створює і заповнює сектор в еліпсі. Координати x, у – центр, b, Rx, Ry – горизонтальний і вертикальний радіуси, і сектор креслиться від початкового кута а до кінцевого кута b. Приклад використовування PieSlice: SetFillStyle(10, 10); {установка стилю} SetColor(12); {колір викреслювання} PieSlice(100, 100, 0, 90, 50); Приклад використовування Sector: SetFillStyle(11, 9); {установка стилю} SetColor(LightMagenta); {колір викреслювання} Sector(300, 150, 180, 135, 60, 70);
Робота з текстом. Виведення тексту. Зображення, що виводяться на екран, краще всього супроводжувати текстом пояснення. В графічному режимі для цього використовуються процедури OutText і OutTextXY. Процедура OutText(Textst: string) виводить рядок тексту, починаючи з поточного положенням покажчика. Наприклад, OutText(‘натисніть будь-яку клавішу”); Недолік цієї процедури – не можна вказати довільну точку початку виведення. В цьому випадку зручніше користуватися процедурою OutTextXY(x, у: integer, Textst: string), де x, у – координати точки початку виведення тексту, Textst – константа або змінна типа String. Наприклад, OutTextXY(60, 100, ‘натисніть будь-яку клавішу”)
Виведення чисельних значень. В модулі Graph немає процедур, призначених для виведення чисельних даних. Тому для виведення чисел спочатку потрібно перетворити їх в рядок за допомогою процедури Str, а потім підключити за допомогою ‘+’ до рядка, що виводиться. Наприклад: Max:=34.56; Str(Max:6:2,Smax) ;{результат перетворення знаходиться в Smax} OutTextXY(400, 40, ‘Максимум=’ + Smax); Для зручності перетворення цілочисельних і дійсних типів даних в рядок краще здійснювати спеціалізованими призначеними для користувача функціями IntSt і RealSt: 1) function IntSt(Int: integer): string; var Buf: string[10]; Begin Str(Int, Buf); IntSt:= Buf; end; 2) function RealSt(R: real, Dig, Dec: integer): string; var Buf: string[20]; Begin Str(R: Dig: Dec, Buf); RealSt:= Buf; end; Ці функції вказуються як параметри в процедурах OutText і OutTextXY. Наприклад: x:= 5.295643871; OutTextXY(20, 20, ‘x=’+RealSt(x,11,9)); В результаті на екрані з'явиться x=5.29564443871
Шрифти. Виведення тексту в графічному режимі може здійснюватися різними стандартними (таб. 7.6) і призначеними для користувача шрифтами. Розрізняють два типи шрифтів: растрові і векторні. Растровий шрифт задається матрицею точок, а векторний – рядом векторів, що становлять символ.
За замовчуванням після ініціалізації графічного режиму встановлюється растровий шрифт DefaultFont, який, як правило, є шрифтом, драйвером клавіатури, що використовується. Більшість стандартних шрифтів не містить російських символів. Розробка ж власних шрифтів – досить складний і трудомісткий процес. Він може бути прискорений, якщо скористатися спеціалізованими пакетами TurboFont, BgiToolKit. Встановити потрібний шрифт можна процедурою SetTextStyle(Font,d,c:word), де Font – вибраний шрифт, d – напрям (горизонтальне або вертикальне), с – розмір символів, що виводяться. Можливі значення двох перших параметрів представлені в Таблиці 7.6. Таблиця 7.6 Стандартні шрифти
При організації вертикального виведення необхідно враховувати, що якщо не встановити точку початку виведення за допомогою MoveTo, то текст починається з нижнього рядка екрану і продовжується вгору. Величина символів встановлюється коефіцієнтом с. Якщо с=1, то символ будується в матриці 8х8, якщо с= 2, то матриця 16х16 і т.д. до 10-кратного збільшення. Наприклад виведемо 2 рядки (вертикальний і горизонтальний) шрифтом DefaultFont різної величини: SetTextStyle(0,11); {букви стандартної величини} OutTextXY(200,200, ‘Вертикальний рядок’); SetTextStyle(0,0,2); {розмір букв збільшений} OutTextXY(200,220, ‘Горизонтальний рядок’); Вирівнювання тексту. В деяких випадках потрібно в межах одного рядка виводити символи вище або нижче один за одного. Вирівнювання тексту виконується за допомогою процедури SetTextJustify(Horiz, Vert: word) як по вертикалі, так і по горизонталі за допомогою задання параметрів Horiz і Vert (можливі значення в таб.і 7.7. Таблиця 7.7 Параметри вирівнювання.
Як приклад виведемо x2: SetTextJustify(1, 1); OutTextXY(100,100, ‘X’); SetTextJustify(1, 0); OutTextXY(108,100, ‘2’); Побудова графіків функцій. Для побудови графіків функцій за допомогою графічного режиму передбачається вільне володіння учнями поняттям функції, її графічним і аналітичним представленням. Необхідно також використовувати оператори циклу, які допоможуть уникнути одноманітної праці по обчисленню ординати кожної крапки.
Дотепер при створенні малюнків використовували тільки перший квадрант системи координат. Для побудови більшості функцій в необхідному інтервалі зміни необхідно працювати хоча б в двох квадрантах. В загальному випадку корисно зображати систему координат в будь-якій частині площини, але найбільш наочно розташовувати її в центрі екрану. В таких випадках, встановивши початок координат в точці (x0, y0) на екрані, можна координати (x, у) довільної точки кривої визначати різницею (x-x0, y-y0). Після цього в програмі можна вживати не тільки позитивні, але і від’ємні значення. Малюнок виходить маленьким, тому вимагається збільшити масштаб зображення. Якщо для функції буде використаний весь екран, треба збільшити малюнок по x і по у залежно від вибраного екрану. Вибрати масштаб збільшення можна таким чином: - визначити горизонтальний і вертикальний розміри графіка (для цього вводяться межі області значень і визначаються максимальне і мінімальне значення функції на заданій області визначення, потім обчислюються різниці максимального і мінімального значень аргументів і функції, які і є горизонтальними і вертикальними розмірами графіка відповідно); - визначити масштаб (спочатку визначаються масштаби зображення по горизонталі і вертикалі з врахуванням розмірів вибраного екрану по формулі: масштаб(г/в)= розмір екрану (по г/в) / розмір графіка (по г/в), потім з них вибирається менший, який і приймається за необхідний масштаб. В нашому випадку графічний екран має розміри 640 на 480. У будь-якому випадку, щоб висвітити на екрані точку, треба узяти x, обчислити по даній абсцисі у і виконати малювання точки. Оскільки на екрані можна одержати лише обмежену кількість значень х, то їх перебираємо за допомогою циклу. Приклад. Побудувати графік функції y=x2 Варіант 1 program f; uses graph; var gd, gm: integer; x, у: real; Begin gd:= detect; initgraph(gd, gm, ‘c/ bp’); SetColor(5); Line(0, 240, 640, 240); Line(320, 0, 320, 480); x:= -20; While x<=20 do Begin у:= -Sqr(x); PutPixel(x *5 + 320, y*5 +240, 15); x:=x + 0.01; end; end. Варіант 2 program f; uses graph, crt; var gd, gm: integer; x, у, mx, my, m,x1, x2, y1, y2,h: real; function f(x:real): real; Begin f:= Sqr(x); end; clrscr; Write(‘ Введіть межі відрізка’ ); Read(x1, x2); y1:=f(x1); y2:=f(x2); mx:=640 /(x2 –x1); my:=480 / (y2 – y1); If mx< my Then m:=mx else m:= my; h:= 1/m; x:=x1; gd:= detect; initgraph(gd, gm, ‘c/ bp’); SetColor (5); Line(0, 240, 640, 240); Line(320, 0, 320, 480); While x<= x2 do Begin у:= -f(x); PutPixel(x *m +320, y*m +240, 15); x:= x+ h; end; End. Розглянемо побудову графіка функції, заданої параметрично. На відміну від функції, заданої в явному виді y=f(x), параметр х в цьому випадку також є функцією, залежною від деякого значення. Приклад. Побудувати графік функції (кардіоїда). x = а cos t (1+ cost), у = а sin t(1+cost), а > 0, t I [0, 2p) Приведемо фрагмент програми: SetColor (5); Line(0, 240, 640, 240); Line(320, 0, 320, 480); t:=0; а:=3; While t<= 3.1415 do Begin x:=a*cos(t)*(1+cos(t)); у:= - а sin(t)*(1+cos(t)); PutPixel(x*5 +320, y*5 +240, 15); x:= x+ 0.01; end;
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-04-26; просмотров: 86; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.117.158.47 (0.087 с.) |