Форум программистов, компьютерный форум CyberForum.ru

Найти координаты, лежащие на окружности, равноудаленные на заданный угол друг от друга - C++

Восстановить пароль Регистрация
 
Predat0r
0 / 0 / 0
Регистрация: 21.08.2012
Сообщений: 53
28.07.2014, 08:02     Найти координаты, лежащие на окружности, равноудаленные на заданный угол друг от друга #1
Здравствуйте.

Нужна помощь с математикой, а именно (если не ошибаюсь) с матрицами.

Вкратце опишу то что хочу.
У меня есть какая то координата(x, y, z). Мне нужно найти другие координаты лежащие на окружности (радиус так же задается) равноудаленные на заданный угол друг от друга.

Кликните здесь для просмотра всего текста
Название: Безымянный.png
Просмотров: 79

Размер: 3.3 Кб


Это я вроде бы сделал, получил синус, косинус соответственно Y и X умножил на радиус после прибавил к реальным координатам, это работает.

Но проблема в том что нужно повернуть эти точки относительно трех углов Эйлера.
Искал в интернете вроде бы как нашел код матрицы вращения:

Кликните здесь для просмотра всего текста

http://www.gamedev.ru/code/articles/...ix_quat?page=4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
A      = cos(angle_x);
B      = sin(angle_x);
C      = cos(angle_y);
D      = sin(angle_y);
E      = cos(angle_z);
F      = sin(angle_z);
 
AD     =   A * D;
BD     =   B * D;
 
mat[0] =   C * E;
mat[1] =  -C * F;
mat[2] =  -D;
mat[4] = -BD * E + A * F;
mat[5] =  BD * F + A * E;
mat[6] =  -B * C;
mat[8] =  AD * E + B * F;
mat[9] = -AD * F + B * E;
mat[10]=   A * C;
 
mat[3] =  mat[7] = mat[11] = mat[12] = mat[13] = mat[14] = 0;
mat[15]=  1;


Теперь сам вопрос: что нужно сделать с данными конечной матрицы что бы имея радиус можно было получить координату x, y, z?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.07.2014, 08:02     Найти координаты, лежащие на окружности, равноудаленные на заданный угол друг от друга
Посмотрите здесь:

найти две наиболее удаленных друг от друга точки (множество точек задано на плоскости) C++
C++ Найти номера наиболее и наименее удаленных друг от друга точек
C++ Динамическая матрица (Найти координаты двух точек, наиболее удалённых друг от друга)
Вычислительная геометрия (Даны координаты центра, R окружности, координаты точки вне окруж-ти. Найти точку пересечения одной из касательных с окруж-ю) C++
4. Найти N первых пар простых чисел, которые отличались бы друг от друга на 2 C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vndtta
66 / 43 / 5
Регистрация: 17.10.2011
Сообщений: 146
Завершенные тесты: 1
28.07.2014, 09:47     Найти координаты, лежащие на окружности, равноудаленные на заданный угол друг от друга #2
если тебе нужно повернуть точку Q вокруг точки P

P' = (P) + ((Q)-(P))*[M]

т.е. перенос начала координат в точку P, затем поворот, и перенос начала координат обратно

но перенос можно реализовать в матрице преобразования М - просто в крайнем правом столбце будут не нули

Добавлено через 18 минут
http://ru.wikipedia.org/wiki/%D0%9C%...BE%D0%B4%D0%B0
вот тут подробно - твой вариант трехмерный
Predat0r
0 / 0 / 0
Регистрация: 21.08.2012
Сообщений: 53
28.07.2014, 10:53  [ТС]     Найти координаты, лежащие на окружности, равноудаленные на заданный угол друг от друга #3
Проблема в том что я ограничен знаниями математики 10 класса.
И сложновато понимать.
Возможно меня не так поняли, есть 3 угла Эйлера которые характеризуют наклон поверхности.
Нужно что бы расстояние каждой точки до поверхности было одинаково то есть что бы они были параллельны.

Добавлено через 6 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
int main()
{
    const float fRadius = 100.0f;
    const float fAngle = 30.0f;
 
    float fCoords[3]; // тут какие то координаты
 
    fCoords[0] += cos(fAngle) * fRadius;
    fCoords[1] += sin(fAngle) * fRadius;
 
    return 0;
}
Так работает, но нужно изменить координаты получившейся точки относительно углов Эйлера.
Ilot
Модератор
Эксперт С++
1767 / 1142 / 223
Регистрация: 16.05.2013
Сообщений: 3,020
Записей в блоге: 5
Завершенные тесты: 1
28.07.2014, 11:10     Найти координаты, лежащие на окружности, равноудаленные на заданный угол друг от друга #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Берете матрицу поворота и множите ее на вектор в начальной системе отсчета. Получаете вектор в системе отсчета заданной углами Эйлера.
R' = MR
Миниатюры
Найти координаты, лежащие на окружности, равноудаленные на заданный угол друг от друга  
Yandex
Объявления
28.07.2014, 11:10     Найти координаты, лежащие на окружности, равноудаленные на заданный угол друг от друга
Ответ Создать тему
Опции темы

Текущее время: 18:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru