Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2003.06.05;
Скачать: [xml.tar.bz2];

Вниз

Вращение 3D фигур   Найти похожие ветки 

 
Матвеев Андрей   (2003-02-18 17:14) [0]

Получил задание по графике, рисование, вражение фигур, удаление невидимых граней. В связи с этим возникло два вопроса:
1) Подскажите алгоритм вращения от движения мыши (зависимость dxy,dxz,dyz от координа мыши)
2) Каждая точка зранит 3 координаты и 3 поля для хранения номера точки с которой необходимо ее соеденить. Так как по заданию дальше требуется удалить невидимые грани, и закрасить грани с учетом освещенности, хотел бы спросить как более разумно рисовать фигуру?


 
pasha676   (2003-02-18 17:50) [1]

Не фига себе задание по графике. Я балдю. Особенно "закрасить грани с учетом освещенности". При хорошей постановке задачи, это тянет на очень много баксов.

1) А как сделаешь так и будет. Честно говоря вращал только в директе и опенгл, но по мыши вращал не фигуру, а камеру.
Но если отрешиться от директов и жл, то чтобы повернуть точку вокруг оси, надо координаты точки умножить на матрицу поворота. Матрицы поворота найдешь в учебнике. Или вон у меня книжка на столе тусуется Краснова "ДиректХ графика в проектах Дельфи", там есть например тоже. Перемещение мыши. Нажимаешь на кнопку мыши. Запоминаешь координаты. Тянешь мышь. Разность текущих координат мыши и запомненных (и по х и по у) даст тебе угол поворота по осям х и у соответственно. Именно этот угол (по деленный на коэффицент, все таки в радианах все и скорость поворота можно отрегулировать под удобную) и подставляешь в матрицу поворота.

2) Тут собственно три вопроса.
Я бы рисовал так (фиксированная камера как я понимаю):
Находил проекции точек на экран (канвас).
Потом соединял бы линиями. Тут можно придумать оптимальный алгоритм перебора точек и линий, но я бы забил на это. По крайнер мере вначале надо просто перебрать все точки, потом все соединения и отчертить линии.
Насчет удаления невидимых граней не помню. Хотя алгоритмы конечно есть и даже я книжки какие то читал на эту тему. Но ничего не помню :(
Насчет освещенности - это вообще помоему сложно. Особенно если учесть что надо тип освещенности, тип поверхности, направление и характер лучей и т.д. То есть это тяжело. Мож преподаватель какие-нибудь граничные условия поставит.


 
MBo   (2003-02-18 17:53) [2]

http://delphigfx.mastak.ru/


 
Mihey   (2003-02-19 00:05) [3]

http://www.enlight.ru:8000/faq3d/main.htm


 
i-C3H7OH   (2003-02-19 14:05) [4]

как нужно делать? с ОпенГЛ можно или все самому ручками?

в ОпенГЛ просто - там Z-Buffer-тест, вычисления нормалей и проч. делается автоматически. см документацию или к-н пример на http://delphigfx.mastak.ru/

если ручками, в кладовке была(точно была) прога которая как раз все это и делает (правда я ее там не нашел).


 
Landgraph   (2003-02-20 19:01) [5]

Если потом надо будет предъявлять исходники в доказательство - тогда уже сейчас готовь мыло и веревку, т.к. при написании всего вышеперечисленного ручками - у тебя уйдет или не одна сотня лет... или ты повесишься =)
А если нет - используй OpenGL - там вся эта хренотень считается на автопилоте. Тебе остается только грани рисовать и усё (оптимистично...) =)



Страницы: 1 вся ветка

Форум: "Media";
Текущий архив: 2003.06.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.008 c
1-13118
Aleksei85
2003-05-25 15:54
2003.06.05
как вызвать СТАНДАРТНЫЙ виндовсий диалог выбора директории


1-13238
kruzoman
2003-05-27 14:25
2003.06.05
как получить параметры


1-13192
wera
2003-05-23 12:25
2003.06.05
не работает length


1-13124
.::D.e.M.o.N.i.X::.
2003-05-25 20:27
2003.06.05
Вопрос к знатокам в конвертации строк


6-13359
Is
2003-03-13 18:35
2003.06.05
Кто подскажет ф-цию аналог команды net send





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский