ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Графічне програмування на Ms Fortran
         

     

    Інформатика, програмування

    Графічне програмування на Ms Fortran

    Курс лекцій з дисципліни за спеціальністю «ПГС» після технікуму

    Факультет -- будівельний; кафедри - «Металеві та дерев'яні конструкції» і «Залізобетонні та кам'яні конструкції»

    Завдання курсу

    Засвоєння основних принципів розробки інженерних алгоритмів і графічних програм, що реалізовуються в Надалі на різних мовах програмування. Мова Fortran розглядається не як самоціль, а як інструмент навчання програмування.

    Література

    1) Уорд Т., Бромхед Е. Фортран і мистецтво програмування персональних ЕОМ. - М.: Радіо і зв'язок, 1993.-352с.

    2) Програмування на Фортране 77/Дж. Ашкрофт, Р. Елдрідж и др. - М.: Радіо і зв'язок, 1990.-272с.

    3) БАРТЕНЄВ О.В. Фортран для студентів. - М.: "Диалог-МИФИ", 1999.-400с.

    4) Рижиков Ю.І. Програмування на Фортране Pоwer Statiоn для інженерів. Практич. рук-во. - СПб.: КОРОНАпрінт, 1999.-160с.

    5) Н.А Рак, В.И Сміх, С.Б. Щербак Програмування інженерних задач на FORTRANе: Уч. методич. допомогу з дисц. "Вич. Техн. І программир." - Мн.: БГПА, 1998.-45с.

    6) Соловйов П.В. FORTRAN для персонального комп'ютера: Справ. посібник. - М.: Аріст, 1991.-224с.

    7) Н.А Рак, В.И Сміх, С.Б. Щербак Графічне програмування: Уч. методич. пособие по дисц. "Вич. техн. і программир. "- Мн.: БГПА, 1997.-40с.

    8) БАРТЕНЄВ О.В. Графіка OрenGL: програмування на Фортране. М.: ДИАЛОГ-МИФИ, 2000.-368с.

    Етапи розробки графічних програм

    Для розробки графічних програм на Fortran необхідно мати на наявність бібліотеки графічних процедур, що містяться у файлі Graphics.lib.

    Розробка графічних програм складається з наступних етапів:

    Підключення графічної бібліотеки

    Установка відеорежиму

    Установка середовища зображення

    Створення і управління графікою

    Відновлення первісної конфігурації перед виходом з програми

    Графічні процедури полягають функції і підпрограми. Кожна програма, що використовує графічну бібліотеку повинна ЯВНО оголосити процедури. Окрему використовувану графічну процедуру можна оголосити, написавши її інтерфейс (дивись довідку NORTON GUIDE). Одразу всі графічні процедури можна описати, включивши в програму файли FGRAPH.FI і FGRAPH.FD. FGRAPH.FI - містить оголошення процедур в операторах INTERFACE (див. далі).

    Оператор INTERFACE оголошує ім'я процедури (функції), її атрибути і типи формальних параметрів. Оператор використовується для забезпечення коректності викликів п/п. Компілятор виконує перевірку числа і типів параметрів у виклику п/п з параметрами, зазначеними в інтерфейсі.

    Приклад:

    INTERFACE TO INTEGER FUNCTION Func (p, d, q)

    Integer * 2 p

    Real d типи параметрів

    Real * 8q

    END

    де: INTEGER - тип функції; FUNCTION - функція; Func - Ім'я функції; p, d, q -- формальні параметри.

    Тут оголошена ціла функція (яка повертає ціле значення) Func з трьома вхідними параметрами p, d, q. Виклик цієї функції звичайний:

    K = Func (p, d, q)

    INTERFACE TO ________________ SUBROUTINE Mix (a, b, c) - оголошує п/п (знаходиться в бібліотечному файлі з розширенням. LIB), що знаходиться в іншому файлі.

    Виклик п/п звичайний CALL MIX (a, b, c)

    Файл FGRAPH.FD містить оголошення структурних і символічних констант і оголошень операторів EXTERNAL для графічних процедур.

    Приклад, коду файл FGRAPH.FD:

     ім'я структури

    STRUCTURE/videoconfig/

     Integer * 2 numxpixels елементи структури

    а) Integer * 2 numypixels

    ... ... ... ... ... ... ... ... .... оператори оголошення типів і/або RECORD.

    END STRUCTURE

    б) INTEGER * 2 setvideomode [extern] PARAMETER ($ YELLOW = # 153f3f)

    в) EXTERNAL getvideoconfig PARAMETER ($ BRIGHTWHITE = # 3f3f3f)

    г) INTEGER * 4 $ YELLOW, $ BRIGHTWHITE

    а) Визначення складеного типу змінної (структури).

    Звернутися до елементу структури (для присвоєння або отримання значення) можна в такий спосіб:

    X = videoconfig.numxpixels

                                   

    ім'я структури елемент структури

    Структури можуть вкладатися одне в одного з використанням оператора RECORD - оголошує структуру для імен, що визначаються користувачем.

    Приклад:

    STRUCTURE/full_adress / ! оголошення структури

    RECORD / full_name/personsname! вкладення структури full_name під ім'ям personsname.

    INTEGER * 1 age

    INTEGER * 4 phone

    END STRUCTURE

    Структура full_name може мати такий вигляд:

    STRUCTURE/full_name/

    Character * 15 first_name

    Character * 20 last_name

    END STRUCTURE

    Звернення до елементів структури може бути здійснено наступним так:

    WRITE (5, *) 'ім'я:', full_adress.personsname.first_name

    WRITE (5, *) 'вік:' full_adress.age

    б) Оголошення цілої функції setvideomode.

    Атрибут EXTERN вказує, що мінлива (в даному випадку є ім'ям функції) розміщується в іншому вихідному файлі. Взагалі атрибут дозволяє визначити для змінної, типу змінної, п/п або формальних параметрів п/п деяку додаткову інформацію. Атрибут полягає у квадратні дужки [].

    Раніше розглядався приклад з атрибутом ALLOCATABLE, що вказує, що масив є динамічним ( "розміщених ").

    в) Оголошення призначеного для користувача імені як зовнішньої п/п getvideoconfig.

    г) Оголошення символічних констант. У даному випадку, задаються значення кольорів (в шестнадцатірічное вигляді) двом цілим констант.

    Вказані файли містять оголошення, необхідні для використання графічних процедур.

    Файл FGRAPH.FI включається в початок кожного файлу з вихідними текстами програми, а FGRAPH.FD в кожну п/п, яка містить графічну процедуру. Включення проводиться оператором include - вставка вмісту вказаного файлу в позиції оператора include.

    Приклад:

    include 'fgraph.fi'! вставка тексту файла fgraph.fi

    ... ... ... ... ... ... ....

    program LINE

    ... ... ... ... ... ... ....

    include 'fgraph.fd'

    ... ... ... ... ... ... .... символічна константа

    I2 = setvideomode ($ MAXRESMODE)! графічна функція установки відеорежиму

    ... ... ... ... ... ... ....

    end

    2. Установка відеорежиму

    Установка відеорежиму необхідна для виконання графічних процедур. Під видеорежимов мається на увазі:

    тип монітора і відеокарти;

    дозвіл екрану;

    використання кольорового або монохромного зображення;

    кількість відображуваних кольорів, яке визначається кількістю пам'яті виділяється під колір. Так "чотирьох бітний колір" відповідає шістнадцяти квітам, восьми бітовий - 256 (тобто два у восьмому ступені) і т.д.

    В даний час зазвичай використовується 16 і 24 бітні кольори.

    Іноді до установки відеорежиму для запобігання можливим проблем несумісності необхідно отримати інформацію про поточну відеосистеми.

    Отримання такої інформації:

    Record/videoconfig/Myvideoconf! включення структури videoconfig під ім'ям Myvideoconf

    ... ... ... ... ... ... ... ... ..

    call getvideoconfig (Myvideoconf)! виклик п/п визначення відеоконфігураціі

    Елементи структури videoconfig описані у файлі fgraph.fd. Даною п/п можна дізнатися дозвіл екрану, можливе кількість квітів і т.д. Значення повертаються через елементи структури.

    Встановити графічний режим відео можна функцією setvideomode.

    Приклад:

    dum = setvideomode ($ MAXRESMODE)

    В функцію передається ідентифікатор (номер) відеорежиму. У даному випадку передається символічна константа цілого типу $ MAXRESMODE (= - 3), визначена у файлі FGRAPH.FD і визначає, що вибирається і встановлюється режим відео з максимальною роздільною здатністю.

    У разі виникнення помилки функція повертає значення 0.

    3. Установка середовища зображення.

    Перед безпосереднім висновком зображення необхідно зробити деякі попередні налаштування.

    Встановлення курсору.

    Функція displaycursor дозволяє включити або вимкнути зображення курсору.

    Приклад:

    I2 = displaycursor (1)! включення курсору, 0 - вимикання. Можна використовувати символічні константи $ GCURSOROFF і $ GCURSORON.

    3.2 Встановлення палітри.

    Кожному кольору на екрані ставиться у відповідність індекс кольору, за яким він викликається. Звичайно є 16 індексів, яким відповідають 16 стандартних квітів, хоча самих квітів може бути більше.

    Для асоціювання кольору конкретному індексу використовуються процедури: remappallpalette, remappalette і selctpalette.

    Значення кольору визначається цілим числом, що складається з чотирьох байт (32 бітів). Колір задається вказівкою рівня інтенсивності для кожного значення червоного, зеленого та блакитного кольорів (RGB модель).

    Значення кольору в двійковому вигляді:

    zzzzzzzz zzBBBBBB zzGGGGGG zzRRRRRR, де z це 0, а B, G і R -- значення бітів для відповідних кольорів різної інтенсивності. 1 (двійкові 00000001) відповідає мінімальній інтенсивності, а 63 (двійкове 00111111) максимальною. Чисто жовтого кольору (100% зеленого і червоного 100%) відповідають значення:

    (00000000 00000000 00111111 00111111) 2 = (1392447) 10 = (153f3f) 16

    білому (усього за 100%): (4144959) 10 = (3f3f3f) 16

    Приклад:

    i2 = Remapalette (1 # 153f3f)! Присвоєння індексу 1 жовтого кольору

    аналогічно

    i2 = remapalette (1,1392447)

    аналогічно

    i2 = Remapalette (1, $ YELOW)! Де $ YELOW - константа, відповідна жовтому кольору (визначена у файлі Fgraph.fd)

    Функція remappallpalette виконує одночасне перепризначення всіх індексів кольору. В функцію передається масив значень кольорів.

    Установка координатних систем

    Текстові координати.

    Текстові координати служать для відображення тексту шрифтом фіксованого розміру. Координати тексту задаються в рядках і стовпцях. У звичайному текстовому режимі: 25 рядків і 80 стовпців. Установка текстових координат здійснюється графічної п/п settextposition.

    Приклад:

    call settextposition (10, 50, rc)

    10, 50-координати початку тексту; rc - локальне ім'я структури rccoord (див. fgraph.fd) за допомогою якої повертається і передається в п/п попередня текстова координата для її перерозміщенні в нову. Координата (1,1) знаходиться в лівому верхньому кутку.

    Фізичні координати.

    Фізичні координати є фіксованими і визначаються технічними засобами (відкритий і монітором). Початок координат знаходиться в лівому верхньому кутку, якщо не використовується п/п setvieworg. Дозволи 640 * 480; 800 * 600. Фізичні координати є цілочисельними.

    Приклад: перенесення початку координат в точку (50, 100)

    CALL setvieworg (50, 100, xy)

    Тепер координата x змінюється від 50, до. numxpixels-50, а y, від 100 до. numypixels-100, де numxpixels і numypixels - елементи структури videoconfig, що містять Максимальна кількість пікселів по осях OX та OY. Перевстановлення початку координат вплине на всі графічні процедури.

    Використовуючи фізичні координати можна встановити невидиму координатну область - "область кліпу". Малювання в цьому випадку проводиться тільки в цій області, спроба малювання поза областю ігнорується.

    Приклад:

    call setcliprgn (10,10,100,100) - установка квадратної "області кліпу". Процедура setcliprgn не змінює систему координат.

    3.3.3 Координати порту перегляду

    "Порт перегляду" ( "viewport") - прямокутна ділянка екрану в якій здійснюється малювання. "Порт перегляду" встановлюється процедурою setviewport. Дія цієї процедури аналогічно процедурі setcliprgn, але з перенесенням початку координат в лівий верхній кут області. При використанні "віконних" координат необхідно створити "порт перегляду ".

    Приклад:

    Call SetViewPort (20,20,200,200)

    Аналогічно:

    Call SetClipRgn (20,20,200,200)

    Call SetViewOrg (20,20)

    Віконні координати.

    Віконні координати використовуються для масштабування зображення. Вони встановлюються для поточного порту перегляду. Всі функції роботи з вікнами закінчуються символом "-w". Значення віконних координат мають не цілочисельний тип Integer (як звичайно), а матеріальний тип Real * 8.

    Приклад:

    dum = SetWindow (. TRUE., -200., -56,3., 500., 400.) -- установка віконних координат цього "порту перегляду"

    . TRUE. - Збільшення по осі ординат знизу вгору

    . FALSE. - Збільшення по осі ординат зверху вниз        

            

    На малюнку в круглих   дужках () показані фізичні координати, в квадратних [] віконні   координати. На кожний фізичний піксель по ДГ доводиться віконних pixel та   по OY 1.91.   

    При нульових розмірах   вікна функція не виконується. При успішному виконанні функція setwindow повертає нульове значення.     

    Приклад роботи з координатними системами. Наведено стандартна головний програма і п/п.

    $ DEBUG! Виробляє додаткові перевірки при компіляції

    include 'fgraph.fi'! Включення графічних інтерфейсів

    interface to function getch ()

    integer getch [C, alias: '_getch']

    end

    program graph_examples

    implicit NONE! Заборонити неявне оголошення типів

    integer * 2 dum! Фіктивна мінлива

    integer getch [EXTERN]

    include 'fgraph.fd'! Оголошення типів графічних функцій

    dum = setvideomode ($ MAXRESMODE)! Встановити режим відео з максимальною роздільною здатністю

    call graph_win ()

    dum = getch ()! Затримка до натискання будь-якої клавіші

    dum = setvideomode ($ DEFAULTMODE)! Встановити попередній відеорежим

    end

    subroutine graph_win ()

    include 'fgraph.fd'

    integer * 2 dum

    ! DOUBLE PRECISION dg, dv, maxdim, xcen, ycen

    real * 4 dg, dv, maxdim, xcen, ycen

    record/xycoord/xy

    record/videoconfig/vc

    ! Переміщення початку координат в точку (50,100)

    call setvieworg (50,100, xy)

    ! Малювання діагональної лінії

    call getvideoconfig (vc)! визначення відеоконфігураціі

    dum = setcolor (2)

    call moveto (-50, -100, xy)

    dum = lineto (vc.numxpixels-50, vc.numypixels-100)

    read *

    call setviewport (100,100,200,200)! вікно перегляду, координати - фізичні

    dum = floodfill (1,1,3)! заповнення області (вікна перегляду) поточним кольором

    ! за відсутності вікна перегляду заповнюється весь екран

    read *

    ! Малювання та масштабування еліпса в квадратному вікні перегляду

    call clearscreen ($ gclearscreen)

    write (5, *) 'Введіть діаметри еліпса по горизонталі і вертикалі'

    read (5, *) dg, dv

    call setviewport (100,100,300,300)! вікно перегляду, координати -- фізичні

    dum = rectangle ($ gborder, 1,1,199,199)! рамка вікна

    maxdim = max (dg, dv)! Максимальний габарит малюнка

    dum = setwindow (. false., 0., 0., maxdim, maxdim)

    if (dum.eq.0) write (5, *) 'Помилка установки вікна'

    ! Малювання, масштабування еліпса і його центровка

    xcen = 0.5 * (maxdim-dg)

    ycen = 0.5 * (maxdim-dv)

    dum = ellipse_w ($ gfillinterior, xcen, ycen, xcen + dg, ycen + dv)

    end

    На малюнку в круглих дужках () показані фізичні координати, в квадратних [] координати порту перегляду, в фігурних () віконні координати.

    3.4. Установка атрибутів фігур.

    Під атрибутами малювання розуміється:

    установка поточного фону малювання

    установка поточного кольору малювання

    установка поточного способу зображення лінії (типу)

    установка поточної маски заповнення кольором (штрихування)

    Установка кольору фону з індексом 2:

    dum = setbcolor (2). За замовчуванням індекс 2 відповідає зеленому кольору.

    Аналогічно dum = SetBkColor ($ green). $ green - Символічна константа, вказана у файлі fgraph.fd.

    Toже кольору малювання.

    dum = setcolor (2)

    У випадку неуспішного виконання повертається значення -1.

    Установка шаблону для малювання лінії

    Call SetLineStyle (center), де center - ім'я 16-ти бітної змінної. Біт 1 вказує на малювання відповідного пікселя поточним кольором, 0 на відсутність змін кольору відповідного пікселя. Шаблон повторюється по всій довжині ліній.

    Приклад завдання змінної center.

    $ NODEBUG

    integer * 2 center/2 # 1111111100011000 /! штріхпунктірная лінія - '-' - '-

    $ DEBUG

    Установка шаблону штрихування.

    Call SetFillMask (shad), де shad - 64-х бітний масив 8 * 8 біт, де кожен біт являє собою піксель.

    Приклад завдання shad:

    $ NODEBUG

    integer * 1 shading (8)/
    > 2 # 00000001,
    > 2 # 00000010,
    > 2 # 00000100,
    > 2 # 00001000,
    > 2 # 00010000,
    > 2 # 00100000,
    > 2 # 01000000,
    > 2 # 10000000/

    $ DEBUG

    ! File: ins_pic.for

    ! Програма демонстрації виводу малюнка з файлу на екран

    ! ?? Закоментувати рядка 156,157 файлу gxlib.for

    ! Компіляція проводиться з підключенням бібліотек gx_cl.lib, pcx_cl.lib

    ! (fl ins_pic.for gx_cl.lib pcx_cl.lib)

    $ DEBUG! Виробляє додаткові перевірки при компіляції

    $ STORAGE: 2! Змінні і константи цілого типу :2-х байтові

    $ INCLUDE: 'gxint.for'! Підключення бібліотечних файлів

    $ INCLUDE: 'pcxint.for'

    $ include: 'fgraph.fi'! Включення графічних інтерфейсів ф-цій

    program InsertPcxImage! Оголошення головний програми

    implicit NONE! Заборонити неявне оголошення типів

    include 'fgraph.fd'! Оголошення типів графічних функцій

    include 'gxlib.for'

    include 'pcxlib.for'

    integer * 2 i2 ! Фіктивна мінлива

    integer * 2 pcxType

    character * 20 pcxImage

    parameter (pcxType = gxVGA_12)! см. стор.178 файл gxlib.for

    ! parameter (pcxType = gxVGA_11)! см. стор.178 файл gxlib.for

    parameter (pcxImage = 'bpaexp.pcx' C)! Файл малюнка

    record/videoconfig/vc

    i2 = gxSetDisplay (pcxType) ! Визначення використовуваного типу монітора і режиму

    i2 = gxSetMode (gxGRAPHICS)

    i2 = setvideomode ($ MAXRESMODE)! Встановити режим відео з роздільною здатністю max

    call getvideoconfig (vc)

    i2 = pcxFileDisplay (pcxImage, 100,100,0)! Вставка малюнка

    read *

    i2 = setvideomode ($ DEFAULTMODE)! Встановити попередній режим відео

    end

    Формат файлу PCX

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

    Заголовок кілька змінено в новій версії пакету. У нього додані три нових поля: PALINFO, SHRES і SVRES. Поле palinfo визначає, чи є зображення кольоровим (palinfo = 1) або у відтінках сірого (palinfo = 2). Коли програма PC Paintbrush завантажує зображення, і вона бачить, що це сіре зображення, програма встановлює палітру як свою власну внутрішню сіру палітру. Пакет не обробляє палітри подібним способом (поточна палітра ЗАВЖДИ зберігається РАЗОМ із зображенням), тому він ігнорує це поле. Однак, з метою сумісності, пакет встановлює прапор palinfo для позначення кольору.

    Два інші поля, shres і svres, призначені для зберігання дозволу розгортки (сканера). Вони були створені для того, щоб не плутати заміну дозволу екрану на дозвіл розгортки (сканера) у полях hres і vres. Колишні користувачі помітять, що це було б показано як 'Дозвіл дисплея: 75 х 75 'при використанні утиліти pcxHdr. Тепер поля hres і vres будуть містити екранне дозвіл створює пристрої, у всіх майбутніх версіях Paintbrush (1.62 і вище).

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

    Деякі пов'язані з графіку терміни

    Bitmap-Спосіб кодування зображення піксель за піксель.

    Buffer-буфер. Область тимчасового зберігання даних, часто використовується для компенсації різниці в швидкості роботи різних компонентів системи. Часто, як буфер використовується додаткова пам'ять, зарезервований для тимчасового зберігання даних, які передаються між центральним процесором системи і периферією (так

         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status