Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

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

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

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

Размер: 3.3 Кб


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

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

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

http://www.gamedev.ru/code/articles/faq_matrix_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?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.07.2014, 08:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти координаты, лежащие на окружности, равноудаленные на заданный угол друг от друга (C++):

Динамическая матрица (Найти координаты двух точек, наиболее удалённых друг от друга) - C++
Дана динамическая матрица размера N*2 (N вводится). Каждая строка матрицы содержит значения координат X и Y одной точки на плоскости,...

Нарисовать заданное количество точек окружности, равноудалённых друг от друга - C++
Ребят, помогите! Делаю исследовательскую работу по математике и встал в ступор при первой же проблеме! Юзаю GLUT. Нужно нарисовать n точек...

Определить, пересекаются ли окружности, касаются друг друга или не имеют общих точек - C++
Задача 2. Две окружности заданы координатами центра и радиусами. Определить, пересекаются ли они, касаются друг друга или не имеют общих...

Найти две наиболее удаленных друг от друга точки - C++
Структуры: I. Решить задачу, используя структуру point для хранения координат точки: Множество точек задано в пространстве. Найти две...

Найти элементы массива наименее отличающиеся друг от друга - C++
Доброго времени суток, помогите пожалуйста реализовать программу: Дан целочисленный массив из 30 элементов. Элементы массива могут...

Найти наименее удаленные друг от друга точки на плоскости - C++
Приветствую ребята! Нужна помощь, помогите решить задачу на С++, Заранее благодарен. В файле содержатся координаты нескольких точек...

3
vndtta
90 / 67 / 13
Регистрация: 17.10.2011
Сообщений: 235
Завершенные тесты: 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
вот тут подробно - твой вариант трехмерный
1
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;
}
Так работает, но нужно изменить координаты получившейся точки относительно углов Эйлера.
0
Ilot
Модератор
Эксперт С++
1823 / 1181 / 232
Регистрация: 16.05.2013
Сообщений: 3,118
Записей в блоге: 5
Завершенные тесты: 1
28.07.2014, 11:10 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Берете матрицу поворота и множите ее на вектор в начальной системе отсчета. Получаете вектор в системе отсчета заданной углами Эйлера.
R' = MR
1
Миниатюры
Найти координаты, лежащие на окружности, равноудаленные на заданный угол друг от друга  
28.07.2014, 11:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.07.2014, 11:10
Привет! Вот еще темы с ответами:

Найти номера наиболее и наименее удаленных друг от друга точек - C++
В одномерном массиве с четным количеством элементов (2N) находятся координаты N точек плоскости. Они располагаются в следующем порядке: x1,...

Найти N первых пар простых чисел, которые отличались бы друг от друга на 2 - C++
Не могу понять, почему не делается проверка числа на простоту. #include "StdAfx.h" #include <iostream> #include <cmath> using...

Вычислительная геометрия (Даны координаты центра, R окружности, координаты точки вне окруж-ти. Найти точку пересечения одной из касательных с окруж-ю) - C++
Даны координаты центра (xc,yc) и радиус R окружности, координаты точки (x,y) вне окружности. Найти точку пересечения одной из касательных с...

найти две наиболее удаленных друг от друга точки (множество точек задано на плоскости) - C++
Помогите, пожалуйста, написать программу на С++, используя структуру point для хранения координат точки: следует найти две наиболее...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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