Недавно добавленные исходники

•  TDictionary Custom Sort  536

•  Fast Watermark Sources  902

•  3D Designer  1 830

•  Sik Screen Capture  1 477

•  Patch Maker  1 484

•  Айболит (remote control)  1 407

•  ListBox Drag & Drop  1 175

•  Доска для игры Реверси  21 856

•  Графические эффекты  1 356

•  Рисование по маске  1 296

•  Перетаскивание изображений  1 096

•  Canvas Drawing  969

•  Рисование Луны  814

•  Поворот изображения  770

•  Рисование стержней  815

•  Paint on Shape  493

•  Генератор кроссвордов  762

•  Головоломка Paletto  667

•  Теорема Монжа об окружностях  855

•  Пазл Numbrix  618

 

 

Архив исходников

   
  Базы данных
  Графика & Мультимедиа
  Сети & Интернет
  Система
  Разное
   

Ссылки и Баннеры ...

 

Delphi Sources

Delphi Sources

 




 

ИСХОДНИК ПРОГРАММЫ

 

. : Где моя тень : .

 

Delphi - Программа отображает отбрасываемые тени, когда солнце находится на заданном азимуте и высоте

Исходник программы, показывающей пример отображения отбрасываемой тени от вертикального стержня, когда солнце находится на заданном азимуте и высоте.

Можно изменять точку обзора, регулируя азимут, высоту и расстояние от основания стержня.

Немного позднее была добавлена возможность построить «аналемму» - фигуру, представляющую путь солнца, наблюдаемый из фиксированного места и времени суток в течение всего года. Поскольку земля наклонена относительно пути вокруг Солнца, и поскольку его путь немного эллиптический, аналемма или ее теневая версия отображает кривую фигуру 8. Точки азимута и высоты можно вводить индивидуально и нажимать кнопку «Построить точку тени». Лучшим методом является создание текстового файла значений азимута и высоты, по одной паре на строку, и использование кнопки «Загрузить аналемму» для загрузки и построения данных. Файл «Образец Analemma.txt», включенный в загрузку, содержит 24 значения полудня 1 и 15 числа каждого месяца для моего родного города.

Заметки для программистов

Я хотел бы дать вам краткий анализ математики, лежащей в основе рисования трехмерного теневого вида, но факт в том, что для рисования изображений было много проб и ошибок. Всего существует шесть параметров: азимут и высота определяют направление солнца от определенного места на земной поверхности в «горизонтальной системе координат». Азимут - это угол по часовой стрелке от севера, а высота - это угол над горизонтом. Третий параметр, влияющий на истинное положение кончика тени вертикального стержня (или человека) - это высота стержня. Для заданной высоты и высоты стержня (R) длину тени (L) можно получить, рассматривая прямоугольный треугольник, образованный стержнем, его тенью и солнечным лучом. Касательная (высота) = R / L, по которой мы можем определить круг с радиусом L, на котором будет лежать кончик тени. Азимутальный угол определяет, где именно на окружности лежит точка. Процедура RecalcBaseCircle делает это каждый раз, когда изменяется один из трех параметров позиции.

Базовый круг представляет точки кончика тени, как если бы мы стояли прямо над стержнем и смотрели прямо вниз. Когда мы удаляемся от стержня в заданном направлении на заданное расстояние с нашим глазом на заданной высоте, видимое положение тени изменяется. Эти три параметра «Глаз» определяют видимое расположение кончика тени на эллипсе. Этот набор точек рассчитывается процедурой RecalcVisualCircle. Он вызывается при изменении положения глаз или при изменении базовой окружности.

Третий набор тригонометрических вычислений явился результатом моего, возможно, глупого решения отображать буквы направления N, E, W, S, обозначающие положение нашего глаза по пеленгу (направлению) от стержня. Поскольку на самом деле мы не можем повернуть экран монитора, когда мы обходим стержень, мы должны вращать круг обзора и эти буквы на экране. Чтобы буквы выглядели так, как если бы они были нарисованы на земле, я решил вращать их, когда они движутся по кругу, концентрическому с кругом обзора, так, чтобы основание буквы всегда было обращено к стержню. Это выполняется процедурой SetFontAngle. Код для рисования букв содержится в процедуре PaintFigure, которая перерисовывает все изображение.

Просмотры: 354
Дата: 06.07.2021, Автор: Gary Darby
Написать сообщение:
 

 

Скачать (9 Кб)   ↓ 4   Регистрация >>

 

© 2004-2022 "DS"

Соглашение пользователя / Реклама / Карта сайта             Created by BrokenByte Software