7.07.2012 / 20:42 | |
ScRoLiS Пользователь Сейчас: Offline
Регистрация: 28.06.2010
| Freddy, Он наверное просто для теста так сделал.
__________________
Чпок... Добрый вечер! |
10.07.2012 / 09:38 | |
Bobrosoft Пользователь Сейчас: Offline
Имя: Pablo Регистрация: 20.08.2011
| Помогите разобраться с кодом. Пишу на XNA, конкретно - разбираюсь с примером из книги. Описывается механизм столкновения астероидов asteroid1 и asteroid2. У каждого есть векторы, определяющие скорость (Velocity) и координаты центра (Center) астероида (принимаем его за квадрат). private void BounceAsteroids(Sprite asteroid1, Sprite asteroid2)
{
Vector2 cOfMass = (asteroid1.Velocity + asteroid2.Velocity) / 2;
Vector2 normal1 = asteroid2.Center - asteroid1.Center;
normal1.Normalize();
Vector2 normal2 = asteroid1.Center - asteroid2.Center;
normal2.Normalize();
asteroid1.Velocity -= cOfMass;
asteroid1.Velocity = Vector2.Reflect(asteroid1.Velocity, normal1);
asteroid1.Velocity += cOfMass;
asteroid2.Velocity -= cOfMass;
asteroid2.Velocity = Vector2.Reflect(asteroid2.Velocity, normal2);
asteroid2.Velocity += cOfMass;
}
Проблема в том, что я плохо понимаю векторы, можете мне разжевать? Изменено Bobrosoft (10.07 / 09:41) (всего 3 раза) |
11.07.2012 / 20:41 | |
Bobrosoft Пользователь Сейчас: Offline
Имя: Pablo Регистрация: 20.08.2011
| aNNiMON, вау, спасибо большое, это именно то, что я так долго искал! еще и про матрицы, вот это кайф! |
12.07.2012 / 00:06 | |
Serzhant Пользователь Сейчас: Offline
Имя: Сергей Откуда: Астрахань Регистрация: 28.01.2012
| я реально задолбался уже, как компилировать 1.cpp в 1.exe. у меня Borland C++ установлен...
|
12.07.2012 / 03:49 | |
dzanis Пользователь Сейчас: Offline
Имя: Жаник Откуда: Rezekne Регистрация: 18.11.2010
| Serzhant Удали его.Лучше Dev-C++ скачай.Но я на CodeBlocks сижу,хотя есть Visual Studio и этот Borland тоже есть,ешё неразмагнитился . В CodeBlocks покрасивей подсветка и курсор на ошибку показывает. Анимон вот забыл сказать спасибо. А самый простой вариант вызова методов из другого класа: // Maint.cpp
#include "Other.cpp"
Other other;
int main(){
other.start();
}
В Other.cpp должны быть опубликованы статичные методы: //Other.cpp
#include <cstdio.> // нужен для printf
class Other{
public:
static void start(){
printf("Other.start()");
}
};
Изменено dzanis (12.07 / 03:52) (всего 2 раза) |
12.07.2012 / 06:58 | |
mrEDitor Пользователь Сейчас: Offline
Имя: Эдуард Откуда: Новороссийск » Таганрог Регистрация: 13.03.2011
| Будет же двойное объявление метода. Наверное, лучше структуру объявить в заголовочном файле, а метод реализовать в CPP.
А ещё я за Qt Creator, но весит под Windows он...
Изменено mrEDitor (12.07 / 07:00) (всего 1 раз) |
12.07.2012 / 09:11 | |
Bobrosoft Пользователь Сейчас: Offline
Имя: Pablo Регистрация: 20.08.2011
| mrEDitor, я занимался кьютом, довольно интересная штука, но че-то перешел на С# (кажется, из-за XNA) и Visual Studio мне нравится больше...
Изменено Bobrosoft (12.07 / 09:12) (всего 1 раз) |
12.07.2012 / 10:31 | |
dzanis Пользователь Сейчас: Offline
Имя: Жаник Откуда: Rezekne Регистрация: 18.11.2010
| mrEDitor (12.07.2012/06:58) Будет же двойное объявление методаТ.е. двойное? Заметил что с других класов Other я немогу использовать,хотя мне и ненадо. А как лучше?
|
12.07.2012 / 10:58 | |
Bobrosoft Пользователь Сейчас: Offline
Имя: Pablo Регистрация: 20.08.2011
| aNNiMON, прочитал, разобрался с механизмом, если кому-то интересно - могу добавить в код комментарии. Только с cOfMass не очень понятно, это, видимо, из физики. Надо будет перечитать-таки объяснение этого алгоритма
|