Вниз  C / C++
- 7.07.2012 / 20:42
ScRoLiS
  Пользователь

ScRoLiS 
Сейчас: Offline
Freddy, Он наверное просто для теста так сделал.
__________________
 Чпок... Добрый вечер!
- 10.07.2012 / 09:38
Bobrosoft
  Пользователь

Bobrosoft 
Сейчас: Offline
Помогите разобраться с кодом. Пишу на XNA, конкретно - разбираюсь с примером из книги. Описывается механизм столкновения астероидов asteroid1 и asteroid2. У каждого есть векторы, определяющие скорость (Velocity) и координаты центра (Center) астероида (принимаем его за квадрат).

  1. private void BounceAsteroids(Sprite asteroid1, Sprite asteroid2)
  2. {
  3.     Vector2 cOfMass = (asteroid1.Velocity + asteroid2.Velocity) / 2;
  4.     Vector2 normal1 = asteroid2.Center - asteroid1.Center;
  5.     normal1.Normalize();
  6.     Vector2 normal2 = asteroid1.Center - asteroid2.Center;
  7.     normal2.Normalize();
  8.     asteroid1.Velocity -= cOfMass;
  9.     asteroid1.Velocity = Vector2.Reflect(asteroid1.Velocity, normal1);
  10.     asteroid1.Velocity += cOfMass;
  11.     asteroid2.Velocity -= cOfMass;
  12.     asteroid2.Velocity = Vector2.Reflect(asteroid2.Velocity, normal2);
  13.     asteroid2.Velocity += cOfMass;
  14. }

Проблема в том, что я плохо понимаю векторы, можете мне разжевать?

Изменено Bobrosoft (10.07 / 09:41) (всего 3 раза)
- 11.07.2012 / 20:36
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
Bobrosoft, да, можем http://habrahabr.ru/post/131931/
__________________
 let live
- 11.07.2012 / 20:41
Bobrosoft
  Пользователь

Bobrosoft 
Сейчас: Offline
aNNiMON, вау, спасибо большое, это именно то, что я так долго искал! :)
еще и про матрицы, вот это кайф!
- 12.07.2012 / 00:06
Serzhant
  Пользователь

Serzhant 
Сейчас: Offline
я реально задолбался уже, как компилировать 1.cpp в 1.exe. у меня Borland C++ установлен...
- 12.07.2012 / 03:49
dzanis
  Пользователь

dzanis 
Сейчас: Offline
Serzhant Удали его.Лучше Dev-C++ скачай.Но я на CodeBlocks сижу,хотя есть Visual Studio и этот Borland тоже есть,ешё неразмагнитился :-D .
В CodeBlocks покрасивей подсветка и курсор на ошибку показывает.

Анимон вот забыл сказать спасибо. :)
А самый простой вариант вызова методов из другого класа:
  1. // Maint.cpp
  2. #include "Other.cpp"
  3.  
  4. Other other;
  5.  
  6. int main(){
  7. other.start();
  8. }

В Other.cpp должны быть опубликованы статичные методы:

  1. //Other.cpp
  2. #include <cstdio.> // нужен для printf
  3. class Other{
  4. public:
  5. static void start(){
  6.     printf("Other.start()");
  7. }
  8.  
  9. };


Изменено dzanis (12.07 / 03:52) (всего 2 раза)
- 12.07.2012 / 06:58
mrEDitor
  Пользователь

mrEDitor 
Сейчас: Offline
Будет же двойное объявление метода. Наверное, лучше структуру объявить в заголовочном файле, а метод реализовать в CPP.

А ещё я за Qt Creator, но весит под Windows он...

Изменено mrEDitor (12.07 / 07:00) (всего 1 раз)
- 12.07.2012 / 09:11
Bobrosoft
  Пользователь

Bobrosoft 
Сейчас: Offline
mrEDitor, я занимался кьютом, довольно интересная штука, но че-то перешел на С# (кажется, из-за XNA)
и Visual Studio мне нравится больше...

Изменено Bobrosoft (12.07 / 09:12) (всего 1 раз)
- 12.07.2012 / 10:31
dzanis
  Пользователь

dzanis 
Сейчас: Offline
mrEDitor (12.07.2012/06:58)
Будет же двойное объявление метода
Т.е. двойное? Заметил что с других класов Other я немогу использовать,хотя мне и ненадо.
А как лучше?
- 12.07.2012 / 10:58
Bobrosoft
  Пользователь

Bobrosoft 
Сейчас: Offline
aNNiMON, прочитал, разобрался с механизмом, если кому-то интересно - могу добавить в код комментарии. Только с cOfMass не очень понятно, это, видимо, из физики. Надо будет перечитать-таки объяснение этого алгоритма
Наверх  Всего сообщений: 2777
Фильтровать сообщения
Поиск по теме
Файлы топика (111)