Текущий архив: 2003.06.05;
Скачать: CL | DM;
Вниз
Вращение 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 вся ветка
Текущий архив: 2003.06.05;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.01 c