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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C# Импорт функции из DLL написанной на С++ http://www.cyberforum.ru/cpp-beginners/thread1508084.html
Есть dll файл написанный на С++ (Visual Studio) Работал с этой библиотекой в Autoit (скриптовый язык). Сейчас хочу сделать вызов из Visual Studio (C#) Сигнатуры функций в AutoIt: DllCall($scrapeDll, "int:cdecl", "OpenTablemap", "str", $name) DllCall($scrapeDll, "none:cdecl", "GetRegionPos", "str", $name, "int*", $posl, "int*", $post, "int*", $posr, "int*", $posb) DllCall($scrapeDll,...
C++ Синхронизация потоков Есть статический класс к которому я хочу обращаться из разных потоков static class MyLog { public: static int log(std::string, int type); }; Внутри написал так http://www.cyberforum.ru/cpp-beginners/thread1508057.html
C++ Отправить POST запрос
Помогите уже, реально задолбался, 2 дня уже ищу рабочий код который бы отправлял пост запрос но никак не могу найти. Везде какие-то либы или паки исходников которые нужно проинсталлить, но даже после инсталла вроде бы код рабочий, но при компиляции выдает кучу ошибок а-ля "ссылка на неразрешенный внешний символ и т.п." Нашел для GET запроса - http://www.cyberforum.ru/post4743606.html . Автор...
CMenu::InsertMenu - обработка сообщения C++
Привет всем, Подскажите, пожалуйста, как обработать сообщение CMenu::InsertMenu посылаемое из внешнего приложения? Resource.h #define ID_EXPCATXML 100 Plugin.h
C++ Как обратится к обьекту класса, являющегося наследником абстрактного класса http://www.cyberforum.ru/cpp-beginners/thread1508041.html
Здравствуйте! У меня есть 4 класса: один виртуальный, следующие 2 - наследуют виртуальный класс и последний класс содержит указатель на виртуальный класс (динамический массив, который растет от методов buildCar и buildTruck). eFuel - это также класс, который содержит еще класс, но в данном вопросе они не принимают участия. Вопрос: как через указатель четвертого класса доступится к наследующим...
C++ Линейный поиск в массиве структуры Нужно с помощью линейного поиска искать в готовом массиве структуры значение вводимое с клавиатуры. Напишите шаблон , по которому это можно реализовать. Спасибо. подробнее

Показать сообщение отдельно
Lorise
0 / 0 / 0
Регистрация: 02.06.2013
Сообщений: 20

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

01.08.2015, 07:56. Просмотров 235. Ответов 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 также
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru