69106

Побудова графіків функцій. Претворення координат і об’єктів

Лекция

Информатика, кибернетика и программирование

Для зображення графіка слід перевести логічні координати його точок у їх екранні еквіваленти. 3 урахуванням того що центр логічної системи координат збігається із центром екрана а також того що напрям екранної вісі ординат є зворотним до напряму логічної вісі ординат отримаемо таку формулу...

Украинкский

2014-09-30

63 KB

0 чел.

Лекція 15.Тема: Побудова графіків функцій. Претворення координат і об’єктів.

План:

1. Зображення текстової інформації у графічному режимі

2. Побудова графіків функцій

3. Перетворення координат і об'єктів

1. Зображення текстової інформації у графічному режимі

Текст у графічному режимі виводиться з використанням шрифтів, що зберігаються у файлах із розширенням chr. Параметрами шрифтів визначається розмір літер, напрям та спосіб вирівнювання тексту тощо. Значенням цих параметрів зіставлені такі константи:

Const {типи шрифтів}

DefaultFont=0; TriplexFont=1;  SmallFont=2; SansSerifFont=3; GothicFont=4;

Const {напрям тексту}

HorizDir=0; {зліва направо}

VertDir=1; {знизу догори}

Const {вирівнювання тексту}

LeftText=0; CenterText=1; RightText=2; {горизонтальне}

BottomText=0; CenterText=1; TopText=2; {вертикальне}

 

Усі шрифти, крім шрифту DefaultFont, є векторними, тобто їх елементи формуються як сукупність векторів, що характеризуються напрямом і довжиною. Жоден шрифт, крім зазначеного, не підтримує кирилиці - для виведення її символів шрифти слід модифікувати. Власне виведення тексту виконують процедури OutText i OutTextXY, які було наведено в табл. 5.1.

2. Побудова графіків функцій

Технологію побудови графіків функцій продемонструємо на прикладі функції f(x)=|sin x|+|cos x|. Графік функції побудуємо за точками (x, f(x)): циклічно задамо ряд значень абсциси {xi}, обчислимо відповідні значення ординати y=f(xi) і зобразимо серію відрізків, що з'єднуватимуть точки (xi-1, yi-1) із точками (xi, yi).

Для зображення графіка слід перевести логічні координати його точок у їх екранні еквіваленти. Область визначення розглядуваної функції — це вся вісь абсцис, а область значень — відрізок [-2, 2]. Відрізок логічної вісі ординат завдовжки 4 сід розтягнути у вертикальний екранний відрізок більшої довжини, тобто домножити на коефіцієнт, що його називатимемо масштабом. Вважатимемо, шо масштаб є цілим числом від 20 до 100. 3 урахуванням того, що центр логічної системи координат збігається із центром екрана, а також того, що напрям екранної вісі ординат є зворотним до напряму логічної вісі ординат, отримаемо таку формулу для обчислення екранної ординати у_екрана за логічною ординатою f(x):

у_екрана:=у_центра_екрана-масштаб*f(x);

Яким чином визначати логічні абсциси? Найкраща якість зображення графіка досягається тоді, коли кожній екранній абсцисі відповідає логічна абсцисса. Наприклад, якщо вісь абсцис проходитиме посередині екрана, який містить 480 точок по вертикалі, то екранний піксел (0,240) буде зіставлений з логічною точкою (х1, 0), піксел (1, 240) - з точкою (х2,0). Такої відповідності легко досягти, якщо перерахувати екранну координату х_екрана у відповідну логічну координату х. це можливо зробити за такою формулаю:

х:=(х_екрана-х_центра_екрана)/масштаб;

Приклад 5.3.

Програма ех5_2 будує графік функції f(x)=|sin x|+cos |x|. Значення масштабу вводиться до змінної scale, а координати центра екрана на початку роботи програми присвоюються змінним сх і су. Графік будується процедурою build_graph. Дві інші процедури зображують координатні вісі і розмічають їх. При розмітці осей координат використовуються рядки тексту, обробка яких детально розглядатиметься в розділі 7.3. Результати роботи програми наведено на рис. 5.2.

Program ех5_2;      {графік функції у=|sin x|+cos |x|}

uses crt, graph;

var dr, mode: integer;      {графічний драйвер і режим}

  scale: real;       {масштаб}

  cx, cy: integer;      {координати центра екрана}

{------------------------аналітична функція, графік якої будується -------------------------}

function f(x: real): real;

begin

  f:=abs(sin(x))+cos(abs(x));

end;

{--------------------------------- виведення вісей координат ---------------------------------}

procedure axes;

begin

  SetColor(1);

  Line (cx, 0, cx GetMaxY);      {вісь У}

  Line (0, cy, GetMaxX, cy);      {вісь Х}

{стрілки на вісі Х }

  Line (GetMaxX-10, (cy)-5, GetMaxX, cy);

  Line (GetMaxX-10, (cy)+5, GetMaxX, cy);

{стрілки на вісі У}

  Line (cx, 0, (cx)-5, 10);

  Line (cx, 0, (cx)+5, 10);

        {написи на вісях}

  outtextxy (GetMaxX-10, cy+20, ‘X’);

  outtextxy (cx+10, 10, ‘Y’);

end;

{--------------------------------- розмітка вісей координат ---------------------------------}

procedure graduir;

var i, j: real;        {позначки на вісях}

  s:string[7];      {рядок для виведення позначки на вісях}

begin

  SetColor(1);

  j:=0;        {позначка ‘0’ в центрі координат}

{--------------------------------- розмітити вісь Х ---------------------------------}

{позначки у вигляді вертикальних рисок}

  repeat

     i:=cx+(-j)*scale;

     line (round(i), cy-5, round(i), cy+5);

     if j<>0 then     {не виводити повторно позначку ‘0’ }

     begin

        str (-j:6:2, s);  {перетворити числову позначку на текстову і відобразити її на екрані}

        OutTextXY (round(i)-10, cy+10, s);

     end;

{зобразити позначки на горизонтальні вісі}

     i:=cx+j*scale;

     Line (round(i), cy-5, round(i), cy+5);

     if j<>0 then

     begin

        str (j:6:2, s);     {перетворення числа на рядок}

        OutTextXY (round(i)-10, cy+10, s);

     end;

     j:=j+pi;

  until j=8*pi;       {позначки вичерпано}

{--------------------------------- розмітити вісь У ---------------------------------}

  j:=0;

  repeat

     i:=cy-j*scale;      {розташування позначки на вісі У}

     line (cx+3, round(i), cx-3, round(i));

     if j<>0 then

     begin

        str (j:4:1, s);      {перетворення числа на рядок}

{вивести значення, відповідне позначці на вертикальній вісі в межах від 0 до 2}

        OutTextXY (cx+15, round(i)-2, s);

     end;

     i:=cy+j*scale;

     line (cx+3, round(i), cx-3, round(i));

     if j<>0 then

     begin

        str (-j:4:1, s);      {перетворення числа на рядок}

{вивести позначки на вертикальній вісі в межах від -2 до 0}

        OutTextXY (cx+15, round(i)-2, s);

     end;

     j:=j+0.5;

{розмітити вертикальну вісь через кожні 0.5 ділень}

  until j+2;      {діапазон позначок: від -2 до 2}

end;

{--------------------------------- побудова графіка ---------------------------------}

procedure build_graph;

var

  x0, y0, x1, y1: integer;   {екранні координати кінців відрізка графіка}

  x: real;

begin

  for x0:=0 to GetMaxX do     {вибір екранної абсциси}

  begin

     x:=(x0-cx)/scale;  {перерахувати пік селі екрана в логічні координати абсциси графіка}

     y0:=round (cy-scale*f(x));

     if x0>0 then

        line (x0, y0, x1, y1);     {зобразити відрізок графіка}

     x1:=x0;       {зберегти координати кінця

     y1:=y0;        попереднього відрізку}

  end;

end;

{--------------------------------- основна програма ---------------------------------}

begin

  dr:=Detect;       {визначити графічний драйвер}

  InitGraph (dr, mode, ‘d:\bp\bgi’);    {ініціалізувати графічний драйвер}

  cx:= GetMaxX div 2;     {визначити координати}

  cy:= GetMaxY div 2;     {центра екрана}

  SetBkColor(15);      {визначити колір фону}

  SetColor(1);       {визначити колір ліній}

  OutText (‘input scale (20…100):’);

  gotoxy(27, 1);

  read (scale);       {увести масштаб зображення}

  ClearDevice;      {очистити екран}

  axes;        {зобразити вісі координат}

  graduir;       {розмітити вісі}

  OutTextXY (10, 30, ‘y=|sin(x)|+cos|x|’);   {вивести напис}

  build graph;       {зобразити графік}

end.

3. Перетворення координат і об'єктів

У комп’ютерній графіці перетворення координат застосовують для зміни масштабу зображення, отримання симетричних частин графічних об’єктів, дублювання частин зображення тощо. Перетворення координат об’єкта – це їх пере обчислення за певними формулами. У подальшому розглядатимемо лише лінійні перетворення координат на площині, під час яких зберігаються такі геометричні властивості обкатів: прямі лінії залишаються прямими, зберігається паралельність прямих, а також відношення площ геометричних фігур. Основними лінійними перетвореннями є паралельне перенесення, розтягування (стискання) і поворот геометричних об’єктів.

Припустимо, що у декартовій системі координат задана плоска геометрична фігура, (х, у) – координати одієї з її точок. Нехай (х1, у1) - координати тієї самої точки фігури після їх перетворення. Наведемо формули паралельного перенесення геометричної фігури на dx одиниць уздовж осі X і на dy одиниць уздовж осі У (формула а), розтягування уздовж осі X у kx разів і вздовж осі У у ky разів (формула б) і повороту навколо початку координат на кут α (формула в).

Лінійні перетворення проілюстровано на рис. 5.3. Необідно зазначити, що будь-яке перетворення координат об'єкта можна розглядати як перетворення координатних осей.

а)   б)   в)

Приклад 5.4.

Розробимо програму обертання відрізка навколо одного зі своїх кінців. Вважатимемо, що початок логічних координат збігається із нерухомим кінцем відрізка, а довжина відрізка дорівнює r. Тоді рухомий кінець відрізка матиме спочатку координати (r,0), а після обертання на кут α — координати:

(r соs α + 0*sin α, - r sin α + 0*соs α) = (r соs α, - r sin α). Нерухомим кінцем відрізка вважатимемо центр екрана, і з урахуванням того, що до цієї точки було перенесено початок координат, а також того, що екранна вісь ординат спрямована донизу, отримаємо такі формули координат рухомого кінця: (xc+r cos α, r sin α), де (xc, yc) - координати центра екрана.

Program ех5_3;

uses crt, graph;

var d, m,      {графічний драйвер і графічний режим}

     x, y,      {координати рухомого кінця}

     r: integer;      {довжина відрізка}

     a: real;      {кут повороту відрізка}

begin

  d:=detect;      {ініціалізація графічного режиму}

  initgraph (d, m, ‘d:\bp\bgi’);

  r:=100;      {ініціалізувати довжину відрізка}

  setbkcolor (15);       {колір фону}

  setcolor (3);        {колір літер та ліній}

  settextstyle (0, 0, 1);      {стиль літер}

  outtextxy (100, 50, ‘Rotational displacement of line’);

  outtextxy (100, 80, ‘Press any key to exit’);

  a:=0;

  repeat

     x:=320+round(cos(a)*r);     {перетворення координат}

     y:=240+round(sin(a)*r);     {рухомого кінця}

     setcolor (5);      {відображення відрізка}

     line (320, 240, x, y);

     delay (2000);      {затримка}

     setcolor (15);      {затирання відрізка}

     line (320, 240, x, y);

     a:=a+pi/36;      {збільшення кута повороту}

  until keypressed;

end.

Контрольні питання

1. Зображення текстової інформації у графічному режимі

2. Побудова графіків функцій

3. Перетворення координат і об'єктів


 

А также другие работы, которые могут Вас заинтересовать

33569. Сущность, признаки и природа государства 49.5 KB
  Сущность признаки и природа государства Понятие сущность и природа возникновения государства. Сущность государства категория раскрывающая то кем и в чьих интересах осуществляется государственная власть. Природа государства и государственного управления заключается в том что государство возникает на основе общественных потребностей которые обусловлены потребностями людей: физическими социальными интеллектуальнодуховными. Функции государства.
33570. Основные понятия в системе государственного управления 108 KB
  Основные понятия в системе государственного управления Государственное управление это практическое организующее и регулирующее воздействие государства через систему своих структур на общественную и частную жизнедеятельность людей в целях ее упорядочения сохранения или преобразования опирающееся на его властную силу Природа государственного управления: необходимость общественная обусловленность и целевая направленность Наиболее общая причина возникновения необходимость регулирования отношений в коллективе. Государство это...
33571. Государственная власть и государственное управление 54 KB
  Признаки государственной власти: суверенитет верховенство и общеобязательность решений на данной территории; власть государства распространяется на все сферы общественной жизни; государство обладает полномочиями на применение насилия; государственная власть обладает публичностью и гласностью; легитимность признание населения действующей власти; Государственное управление целенаправленное воздействие согласующее и мобилизующее деятельность населения территории органов власти органов местного самоуправления организаций...
33572. Статус и полномочия Президента Российской Федерации 41.5 KB
  Статус и полномочия Президента Российской Федерации Конституционный статус и полномочия Президента Российской Федерации как высшего должностного лица государства. Функции Президента Российской Федерации. Президент Российской Федерации является главой государства. Президент Российской Федерации является гарантом Конституции Российской Федерации прав и свобод человека и гражданина.
33573. Система органов исполнительной власти Российской Федерации 44 KB
  Система органов исполнительной власти Российской Федерации Система и функции федеральных органов исполнительной власти. Функции органов исполнительной власти субъекта Российской Федерации. Правительство Российской Федерации состоит из Председателя Правительства Российской Федерации заместителей Председателя Правительства Российской Федерации и федеральных министров Правительство Российской Федерации: а разрабатывает и представляет Государственной Думе федеральный бюджет и обеспечивает его исполнение; представляет Государственной Думе...
33574. Социальное государство. Управление социальной сферой 34.5 KB
  Социальное государство. Изменение роли государства: инструмент политической власти ночной сторож институт макроэкономического регулирования социальное государство эффективное умное государство. Ночной сторож Выражение государство ночной сторож о функциях государства соответствует итальянскому выражению государствокарабинер и должно обозначать государство чьи функции ограничиваются охраной общественного порядка и гарантированием соблюдения законов. Противоположностью такому государству должны служить этическое...
33575. Государственное регулирование экономики, Уровень и качество жизни населения и национальная безопасность 114 KB
  Национальная безопасность Российской Федерации это гарантированная конституционными законодательными и практическими мерами защищенность и обеспеченность ее национальных интересов. Компетенция Счетной палаты РФ Формирование и принципы работы Счетной...
33576. Субъект Федерации: особенности государственного устройства и органы государственного управления 39 KB
  ассиметричность равные по конституции РФ субъекты имеют разные госправовые статусы В наст время 83 субъекта РФ .из них 21 республика 6краев 49 областей 2 города федерального значения 1 автономная область 10 автономных округовмуниципальные образования Полномочные представители Президента в федеральных округах призваны обеспечить реализацию принципов федерализма Полномочия субъекта РФ согласно Конституции РФ 1993 года: В совместном ведении РФ и субъекта РФ: 1 обеспечение соответствия конституции и законов субъектов РФконституции и...
33577. Формирование современной государственной политики и ее реализация 88.5 KB
  Интересы России в международных отношенияхКаково отношение России к политической и правовой позиции США в международных отношениях Совпадают ли интересы России с интересами западных стран в том числе США Чисто гипотетически политика России по отношению к Западу в той же сфере МЭО могла бы находиться в диапазоне между двумя крайними âточкамиâ:1 полностью принять стратегию Запада и присоединиться к ней; сознательно âпристроитьâ экономику России к экономике западных государств сначала в качестве сырьевого придатка рынка сбыта а...