На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! правила раздела Алгоритмы
1. Помните, что название темы должно хоть как-то отражать ее содержимое (не создавайте темы с заголовком ПОМОГИТЕ, HELP и т.д.). Злоупотребление заглавными буквами в заголовках тем ЗАПРЕЩЕНО.
2. При создании темы постарайтесь, как можно более точно описать проблему, а не ограничиваться общими понятиями и определениями.
3. Приводимые фрагменты исходного кода старайтесь выделять тегами code.../code
4. Помните, чем подробнее Вы опишете свою проблему, тем быстрее получите вразумительный совет
5. Запрещено поднимать неактуальные темы (ПРИМЕР: запрещено отвечать на вопрос из серии "срочно надо", заданный в 2003 году)
6. И не забывайте о кнопочках TRANSLIT и РУССКАЯ КЛАВИАТУРА, если не можете писать в русской раскладке :)
Модераторы: Akina, shadeofgray
  
> Поворот точки вокруг прямой
    помогите плиз. Есть прямая, заданная двумя точками. надо повернуть точку вокруг этой прямой на заданный угол. Как это можно сделать побыстрее? Может у кого исходничек есть?

    З.Ы. в поиске вроде ничего не нашел (может искал плохо?).
      имеется в виду трехмерное пространство?
        да
          Не очень понял вопрос - ты имеешь в виду, повернуть точку относительно другой точки? Как можно точку повернуть относительно прямой? Т.е. - какая у тебя задача?
            последовательность аффинных преобразований:
            1) переводящее данную прямую в прямую, совпадающую с осью, скажем, X - например, первую точку в (0,0,0), а вторую - в (1,0,0)
            2) поворот вокруг оси X
            3) обратное 1)

            произведение этих трех матриц вычисляешь и применяешь к координатам точки
              Да, все хорошо в этом алгоритме, единственная проблема - он довольно медленный. Спасибо и на этом. :)
                Цитата Shiru_Otaku, 17.03.03, 04:14:22
                Не очень понял вопрос - ты имеешь в виду, повернуть точку относительно другой точки? Как можно точку повернуть относительно прямой? Т.е. - какая у тебя задача?

                Здесь вращение вокруг прямой ничем не отличается от вращения вокруг координатной оси за исключением того, что прямая не совпадает с осью. У меня появилась идея насчет использования опенгл. Он-то вроде умеет поворачивать вокруг заданных прямых. Всвязи с этим вопрос: а можно как-то у него отнять матрицу поворота, когда делаешь Glrotate??
                  Как-то можно. А вот как - не помню:( Ищи в инете, или в эхе fido7.ru.opengl (через http://groups.google.com, например) - я где-то точно видел...
                    Цитата PropellerMan, 16.03.03, 17:08:50
                    помогите плиз. Есть прямая, заданная двумя точками. надо повернуть точку вокруг этой прямой на заданный угол. Как это можно сделать побыстрее? Может у кого исходничек есть?

                    З.Ы. в поиске вроде ничего не нашел (может искал плохо?).

                    Берешь лист бумаги и карандаш.
                    1. По двум A и B точкам пишешь уравнение прямой.
                    2. Находишь координаты т. D проеции своей точки C на прямую.
                    3. Пишешь систему уравнений, что
                       (AB,DC')=0
                       (DC,DC')=|DC|^2*cos(alpha)
                    4. решаешь ее, и находишь две пары координат своей новой точки.
                      несколько замечаний:
                      1) пространство не 2-мерное, а 3-мерное. Честное слово, я себе мало представляю поворот точки вокруг прямой и все это на плоскости.
                      2) уравнений два, должно быть три. В голову мне сразу напросилось уравнение равенства длин DC'=DC. Вместе с предыдущими уравнениями - хорошая система, только как ее решать, точнее в общем виде имхо не получится.
                         Напрашивается такое решение. Если есть проекция точки на прямую, то строишь эллипс в точке проекции и по нему поворачиваешь точку. Правда там углы нужно будет переводить из проекционнных в истиные.
                          Цитата kardinal, 24.03.03, 02:01:23
                            строишь эллипс в точке проекции и по нему поворачиваешь точку
                          Не понял, а для чего эллипс - то.

                          Достаточно найти проекцию-P' точки P на прямую (задача школьного курса геометрии 11 класса). Строим сферу с центром P' и радиусом P'P. Таким образом получаем точку P на поверхности сферы.... теперь гоняйте и вращайте эту точку по всей сфере.... ;D ;D ;D
                            2GrAnd: я что-то все-таки недогоняю. Вот у меня есть уравнение сферы, есть точка и отрезок. Что делать дальше (всмысле, как гонять эту точку по сфере) не пойму.
                              Все, тему можно считать закрытой. Решение найдено.
                              Кому интересно, смотрите http://www.gamedev.ru/coding/10805.shtml
                              Все считается быстро и без проблем.
                              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                              0 пользователей:


                              Рейтинг@Mail.ru
                              [ Script execution time: 0,0284 ]   [ 15 queries used ]   [ Generated: 18.06.24, 10:16 GMT ]