Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Алгоритмы > Вот решил поделится открытием :) |
Автор: cardinal 29.4.2004, 23:10 |
Блин... Пишу это сообщение второй раз потому, что мой компер ёкнулся ![]() Вот решил поделится: до меня наконец-то доперло как повернуть объект вокруг "наклонённой оси". Как поворачивать объекты вокруг x, y и z осей я давно уже научился, а вот как поворачивать объект вокруг "наклонённой оси" я чего-то понять не мог. А тут понял. Как всегда все прочто, когда знаешь как ![]() ![]() У меня была уже давно нарисована сфера средствами VB (и немного математики ![]() ![]() |
Автор: Georg4 29.4.2004, 23:55 |
нУ и откровения блин посещают![]() Это ты на чем делал? Я на делфи это делал и очень долго думал что вращается объект, окатывается вункция вращает не объект а камеру ![]() |
Автор: cardinal 30.4.2004, 00:39 | ||||
да бывает у меня... ![]()
Все сделано чисто на VB. Никаких камер и всяких там DirectX, OpenGL'ов. Все функции написал сам. Правда прикольно? ![]() |
Автор: foRaver 30.4.2004, 03:03 |
А можешь поделиться примерами кода в учебных целяx, если это конечно не затрудняет, пожалуйста ? |
Автор: Secandr 30.4.2004, 09:07 |
шиза, я помнится на паскале такие трёхмерные объекты рисовал, правда до анимации дело не доходило ![]() |
Автор: cardinal 30.4.2004, 11:24 | ||
Secandr, рисовать - это одно, а вот анимация - это даааа... ![]()
Конечно могу, только вот кину я это прямо сюда, т.к. так как все там понаписано показывать кому стыдно ![]() |
Автор: cardinal 30.4.2004, 11:50 | ||||||||||||||||||
Ввел понятия точка
и объект
Открыл справочник по математике Корна и написал процедуру, которая мне create'ует сфера из точек.
Написал процедуры для вращения точек! на такой-то угол по отношению к такой-то оси, координаты которой нам дает точка center.
Потом есть процедура вращения всех точек объекта вокруг такой-то оси.
Вот так выглядит потом обработка нажатия Command1:
Использовались также процедуры:
Может чего-то я и забыл. Вобщем как уже сказал тут еще до фига всего над чем можно поработать, но так принцип понятен. Весь проект пока не хочу делать public потому, что "идет стройка". Может когда нибудь сделаю короткий проект и засуну его в FAQ, но пока такого не намечается. |
Автор: maxim1000 30.4.2004, 12:54 |
насколько я понял, тут происходит сначала поворот на нужный угол, а потом - "установка" объекта вдоль прямой а если нужно просто повернуть объект вокруг прямой, что нужно сначала поворачивать его так, чтобы установить на ось, потом вращать, а потом поворачивать назад? если да, то есть алгоритм проще, если чего-то недопонял - звиняйте... |
Автор: cardinal 30.4.2004, 13:26 | ||||
это в смысле если объект повернут? и нам надо его крутить вокруг определенной линии? если так, то получается как раз то что ты сказал. А сейчас у меня происходит след.
как уже говорил. |
Автор: GoodBoy 30.4.2004, 14:06 |
А у нас в универе по компьютерной графике лаба была - вращается трехмерный куб, а в некоторой точке экрана источник света. И куб, кроме того, что произвольно вращается еще и освещается по законам физики, в зависимости от угла падения света на его грань - ярче или тусклее... Да, и писали это на Паскале, безо всяких Опенов и Директов... :-)))))))))))))))))) З.Ы. А вам слабо? :-)))))))))))))))))))))))))))))) |
Автор: cardinal 30.4.2004, 14:14 |
Конечно же не слабо ![]() http://forum.vingrad.ru/index.php?showforum=61 |
Автор: maxim1000 30.4.2004, 15:22 | ||
тогда можно предложить что-нибудь вроде такого: есть прямая a, точка A, нужно повернуть точку A на угол alpha вокруг прямой a 1. находим точку B - проекция A на прямую 2. берем вектор x=BA (его мы и будем поворачивать) 3. берем вектор y, перпендикулярный x и a (например, с помощью векторного произведения) и умножаем на такую константу, чтобы по длине он был как x 4. делаем новый вектор z=x*cos(alpha)+y*sin(alpha) - это и есть нужный вектор BC, где C - искомая точка насчет реализации: пусть прямая задана одной из своих точек (O) и нормированным направляющим вектором ® [*,*] - векторное произведение x=[r , A-O] B=A-x y=[r , x] z=x*cos(alpha)+y*sin(alpha) C=B+z |
Автор: cardinal 30.4.2004, 15:30 |
хмм... интересно. Надо будет подумать, но не сейчас ![]() |
Автор: javastic 6.10.2005, 10:03 | ||
Круто! Молодец. Люблю людей которые добиваются всего сами. ![]() |
Автор: cardinal 6.10.2005, 12:23 |
Да, было дело... ![]() И как народ на такие старые темы натыкается только? ![]() |
Автор: takedo 14.10.2005, 14:08 |
cardinal Я чего-то не понял, если ты вращаешь свободно вокруг оси x,y,z чем тебе прямая то не ось? Взял да повернул координаты, визуализировал в новой СК и обратно(что-то типа того). Я и вдаваться то толком не хочу в эту тему - яйца она выыыеденнооого не стоит! ![]() ![]() |
Автор: cardinal 14.10.2005, 19:31 | ||||||
Чего, чего, а его она стоит!
Может быть. Тензорным анализом, когда я это намудрил еще и не пахло, а теперь меня больше интересуют проблемы глобального коммунизма! ![]()
И она имеется... ![]() |
Автор: takedo 17.10.2005, 06:21 |
cardinal так я смотрю, для глобализации коммунизма у тебя все есть и яйца ![]() ![]() |
Автор: Elfet 5.6.2007, 12:55 | ||
|
Автор: cardinal 5.6.2007, 21:16 |
Elfet, хехе, тема старовата... ![]() Ну может кому и интересно будет это встроить. |
Автор: Elfet 5.6.2007, 21:27 |
Ну, да нужно в faq или куда там постнуть ![]() |
Автор: cardinal 19.2.2010, 01:07 |
Подниму как я тему, которой почти три года... ![]() |