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

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

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

Вращение координаты вокруг точки - C++

01.08.2015, 07:56. Просмотров 264. Ответов 0
Метки нет (Все метки)

на входе x, y координаты точки которую нужно вращать и x, y координаты точки во круг которой происходит вращение, также есть угол в градусах ( диапазон от -180* до 180* )
есть форма 300 на 300

нужно чтобы точка во круг которой происходит вращение находилась в центре формы ( 150, 150 ), а остальные точки вращались относительно нее

получаю точку во круг которой нужно вращать( диапазан от -2000 до 2000 )
class MyPlayer
C++
1
2
_x = _processRw.Read( addressX, sizeof( float ) ).ToFloat();
_y = _processRw.Read( addressY, sizeof( float ) ).ToFloat();
получаю точку которую нужно вращать( диапазан от -2000 до 2000 )
class Player
C++
1
2
_x = _processRw.Read( addressPlayer + Addresses.OffsetX, sizeof( float ) ).ToFloat();
_y = _processRw.Read( addressPlayer + Addresses.OffsetY, sizeof( float ) ).ToFloat();
получаю смещение от точки во круг которой происходит вращение до центра
C++
1
2
float offsetX = playersStatistics.MyPlayer.X - Width / 2 * _zoom;
float offsetY = playersStatistics.MyPlayer.Y - Height / 2 * _zoom;
преобразую угол в радианы 0 - 6,28
C++
1
2
3
_yaw = _processRw.Read( addressYaw, sizeof( float ) ).ToFloat();
_yaw += 180;
_yaw = ( float )( Math.PI / 180F * _yaw );
тут вращаю координату вокруг точки и рисую
C++
1
2
3
4
5
6
7
8
9
10
float playerX = ( float )( playersStatistics.MyPlayer.X + ( player.X - playersStatistics.MyPlayer.X ) * Math.Cos( playersStatistics.MyPlayer.Yaw ) - ( player.Y - playersStatistics.MyPlayer.Y ) * Math.Sin( playersStatistics.MyPlayer.Yaw ) );
float playerY = ( float )( playersStatistics.MyPlayer.Y + ( player.Y - playersStatistics.MyPlayer.Y ) * Math.Cos( playersStatistics.MyPlayer.Yaw ) + ( player.X - playersStatistics.MyPlayer.X ) * Math.Sin( playersStatistics.MyPlayer.Yaw ) );
 
playerX -= offsetX;
playerY -= offsetY;
 
playerX /= _zoom;
playerY /= _zoom;
 
g.DrawRectangle( new Pen( Color.Red ), playerX - 2, playerY - 2, 4, 4 );
_zoom ( диапазон от 1 - до 100 ) для увеличения/уменьшения видимости

в общем все вращается как надо, но есть инверсия т.е. если координата перемещается влево, на форме показывается что перемещается вправо и по y также
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.08.2015, 07:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вращение координаты вокруг точки (C++):

Вращение прямоугольника вокруг оси - C++
Программа должна вращать прямоугольник с заданными параметрами длины и ширины, вокруг оси. Общий алгоритм приведен ниже. Вопрос: как...

Вращение кубика вокруг начала координат - C++
В общем следующая проблема: кубик должен крутиться вокруг начала координат, но он странно искажается и "убегает". Помогите пожалуйста....

Вращение окружностей вокруг определенного центра - C++
Всем доброго времени и суток! Как сделать вращающиеся окружности вокруг центра? Рисунок есть. Не могу понять как задать цикл...

Вращение объекта вокруг оси. Матрицы поворота. - C++
добрый день, нужно сделать программу вращение куба вокруг оси z. Применил матрицу поворота к точкам и они далеко отошли От заданных. Не...

Даны координаты вершин треугольника и координаты некоторой точки внутри него - C++
Даны координаты вершин треугольника и координаты некоторой точки внутри него. Найти расстояние от данной точки до ближайшей стороны...

Заданы координаты точки подвеса математического маятника A(xa, ya, za) и координаты одной из точек его наивысшего подъема B(xb, yb, zb). Найти координ - C++
помогите написать программу на с++ Добавлено через 37 секунд вот задача:Заданы координаты точки подвеса математического маятника...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.08.2015, 07:56
Привет! Вот еще темы с ответами:

Как найти координаты точки на прямой удаленной от заданной точки на х - C++
Добрый день! Помогите мне пожалуйста со следующей задачей. Дано 3 точки с координатами A(x1,y1), B(x2,y2), C(x3,y3) Нужно найти...

Найти координаты самой низкой точки траектории и другой наивысшей точки подъема - C++
помогите решить пожуйста очень надо...не используя некакие циклы и ветвленее..они тока на алгоритмы линейные задачки 1.Заданы...

Вращение относительно точки - C++
Всем здрасьте ! Наверное я не совсем в тот раздел пишу, но я не знаю куда, извините заранее. Тут недавно создавал тему о том, как...

Осуществить "вращение" квадрата вокруг его центра - C++
вот есть не сложная задачка для Си: Осуществить "вращение" квадрата вокруг его центра. кто сможет сделать такое,буду очень...


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

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

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