Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые обзорные » Програмування в Pascal. Моделювання 3D-об'єктів

Реферат Програмування в Pascal. Моделювання 3D-об'єктів





щоб побудувати грань потрібно знати, чи є вона видимою, і згодом розташувати її по центру екрана. p> Для перевірки видимості введемо невелику функцію перевірки грані:

TestGran (a, b, c: d3d): boolean; v1, w2, v2, w1, n: real;: = ax-cx;

v2: = ay-cy;: = bx-cx;: = by-cy;: = v1 * w2-v2 * w1; n> 0 then: = true {грань видна}: = false; {грані не видна};


Тут виконується побудова нормалі щодо грані, заданої трьома крапками. Грань можна представити у вигляді трикутника для спрощення розрахунків, як відомо прямокутник можна розбити на два трикутника. Єдиним обмеженням буде тільки те, що прямокутник повинен бути опуклим, в іншому випадку можуть виникнути В«артефактиВ» при отрісовке граней. Впоследствие виконується перевірка орієнтації нормалі у відповідність з доданим способом. Основний нюанс полягає в тому, що всі крапки в вершинах граней задаються в одному напрямку - за годинниковою або проти годинникової стрілки. Напрямок обходу вкрай важливо дотримуватися, інакше існує певна ймовірність, як зазначалося раніше, отримати невірний напрямок нормалі відносно площини. Нормаль до трикутника - це векторне твір сторін-векторів, утворених вершинами. Нормаль буде розташовуватися зовні у всіх граней, і за знаком нормалі можна судити, чи ми бачимо лицьову сторону або виворіт. Якщо скалярний твір вектора зору на нормаль площині (трикутника в площині) менше або дорівнює 0, значить площину (трикутник) повернутий до спостерігача або виворітного стороною, або ребром, і відображати його немає необхідності. p> Далі якщо грань видна, залишається вивести її на екран. Для цих цілей застосовна вбудована в модуль мови Паскаль процедура FillPoly, якій можна передати заздалегідь підготовлені координати на екрані і формат заливки. Процедура FillPoly обчислює всі горизонтальні перетину, а потім зафарбовує багатокутник, використовуючи поточний стиль і колір зафарбування, визначені за допомогою супутніх процедур SetFillStyle і SetFillPattern. Контур багатокутника виділяється поточним кольором і типом лінії, встановленими при зверненні до процедур SetLineStyle і SetColor. Так як спочатку координати задані відносно початку координат, необхідно задати деякий прирощення для розташування об'єкта у видимій частині екрана. У даному випадку об'єкт буде відображений строго по центру екрана, враховуючи що встановлена ​​роздільна здатність становить 640х480 пікселів:

(1, col); {визначаємо тип заповнення

Так як площину відображення двомірна, для відтворення проекції на екрані досить скористатися тільки двома координатами - х та у, z нам потрібна тільки для визначення положення грані - виходить вона на передній план чи ні. Розраховувати і відмальовувати програмно її мало сенс тільки при побудові В«дротяної моделіВ». Згодом залишається перевірити чи є одержана грань трикутником або чотирикутником і відобразити її:

if (zar [1]. x = zar [4]. x) and (zar [1]. y = zar [4]. y) fillpoly (3, zar) fillpoly (4, zar); <...


Назад | сторінка 11 з 16 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Анексія Криму, як можна вірішіті Конфлікт України с Россией чі можна его ві ...
  • Реферат на тему: Коли працювати можна менше ...
  • Реферат на тему: Українська модель суспільства: чи буде вона ліберальної?
  • Реферат на тему: Медіани трикутника
  • Реферат на тему: Далі - тільки зірки (про політ "Вояджера-2")