Архив исходников программ, модулей и компонентов на Delphi


Начальная страница

Поиск по базе



Операционная система
Настройка приложения
Взаимодействия приложений
Файлы и директории
Строки и символы
Математика
Базы данных
Интернет и сеть
Мультимедиа
Аппаратная часть
VCL
Другие разделы [0]
 

Количество записей в базе - 537
Сегодня добавлено – 0

Вычисления



Вернуться к списку функций
 Преобразование 3D-координат точки в 2D-координаты в перспективе

 Прислал: Dimka Maslov (Санкт-Петербург) ( 29 апреля 2002 г. )
©  Dimka Maslov, 1995
 Описание:
Процедура преобразует 3D-координаты точки в 2D-координаты на "картинной
плоскости" в перспективе. В качестве параметров процедура принимает
координаты точки в пространстве (X - горизонтальная перпендикулярно лучу зрения, Y - горизонтальная вдоль луча зрения, Z - вертикальная) начало координат - точка пересечения луча зрения с картинной плоскостью; Height - высоту наблюдателя;
Basis - расстояние от наблюдателя до картинной плоскости;
результаты вычисления записываются в переменные XP и YP - координаты
точки на картинной плоскости.

 Зависимости:
нет

 Исходный текст:
{ **** UBPFD *********** by http://kladovka.net.ru/delphibase/ ****
>> Преобразование 3D-координат точки в 2D-координаты в перспективе

Процедура преобразует 3D-координаты точки в 2D-координаты на "картинной
плоскости" в перспективе. В качестве параметров процедура принимает
координаты точки в пространстве (X - горизонтальная перпендикулярно лучу зрения, Y - горизонтальная вдоль луча зрения, Z - вертикальная) начало координат - точка пересечения луча зрения с картинной плоскостью; Height - высоту наблюдателя;
Basis - расстояние от наблюдателя до картинной плоскости;
результаты вычисления записываются в переменные XP и YP - координаты
точки на картинной плоскости.

Зависимости: нет
Автор:       Dimka Maslov, mainbox@endimus.ru, ICQ:148442121, Санкт-Петербург
Copyright:   Dimka Maslov, 1995
Дата:        29 апреля 2002 г.
***************************************************************** }

procedure Perspective(const X, Y, Z, Height, Basis: Double;
  var XP, YP: Double);
var
 Den: Double;
begin
 Den:=Y+Basis;
 if Abs(Den)<1e-100 then Den:=1e-100;
 XP:=Basis*X/Den;
 YP:=(Basis*Z+Height*Y)/Den;
end;

 Пример использования:

Вернуться к списку функций

Наверх ▲