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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Predat0r
0 / 0 / 0
Регистрация: 21.08.2012
Сообщений: 53
#1

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

28.07.2014, 08:02. Просмотров 604. Ответов 3
Метки нет (Все метки)

Здравствуйте.

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

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

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

Размер: 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++ Динамическая матрица (Найти координаты двух точек, наиболее удалённых друг от друга)
Найти N первых пар простых чисел, которые отличались бы друг от друга на 2 C++
C++ Определить, пересекаются ли окружности, касаются друг друга или не имеют общих точек
C++ Найти координаты центра окружности
C++ Найти две наиболее удаленных друг от друга точки
Найти наименее удаленные друг от друга точки на плоскости C++
Найти максимальное произведение элементов массива, отстоящих друг от друга на расстоянии больше или равном 8 C++
Нарисовать заданное количество точек окружности, равноудалённых друг от друга C++
C++ Найти заданный угол треугольника, зная две его стороны и периметр
Найти элементы массива наименее отличающиеся друг от друга C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vndtta
70 / 47 / 5
Регистрация: 17.10.2011
Сообщений: 151
Завершенные тесты: 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
Модератор
Эксперт С++
1780 / 1155 / 223
Регистрация: 16.05.2013
Сообщений: 3,042
Записей в блоге: 5
Завершенные тесты: 1
28.07.2014, 11:10     Найти координаты, лежащие на окружности, равноудаленные на заданный угол друг от друга #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Берете матрицу поворота и множите ее на вектор в начальной системе отсчета. Получаете вектор в системе отсчета заданной углами Эйлера.
R' = MR
Миниатюры
Найти координаты, лежащие на окружности, равноудаленные на заданный угол друг от друга  
Yandex
Объявления
28.07.2014, 11:10     Найти координаты, лежащие на окружности, равноудаленные на заданный угол друг от друга
Ответ Создать тему
Опции темы

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