Траектория полета ядра
|
|
ilgamer | Дата: Суббота, 08 Сентября 2012, 10:10 | Сообщение # 1 |
Needle Games
Сейчас нет на сайте
| Code for(int i=0; i<100; i+=1) { x = V0*cos(mouseAngle)*i-g*i*i/2; y = V0*sin(mouseAngle)*i;
DrawSprite(L"dot.png",x,y); }
Вот такой код у меня получается если использовать формулы из учебника.
Дело в том, что в учебнике рассматривается создание этого проекта в Delphi, где систему координат преображают в математическую. Как сделать чтобы траектория отрисовывалась из левого нижнего угла (0,600)?
Заранее спасибо!
Сообщение отредактировал ilgamer - Суббота, 08 Сентября 2012, 10:10 |
|
| |
Archido | Дата: Суббота, 08 Сентября 2012, 10:58 | Сообщение # 2 |
Сэнсэй
Сейчас нет на сайте
| ilgamer Гм, может как-то так?:
Code for(int i=0; i<100; i+=1) { const int X0 = 0; const int Y0 = 600;
x = X0 + V0*cos(mouseAngle)*i-g*i*i/2; y = Y0 + V0*sin(mouseAngle)*i;
DrawSprite(L"dot.png",x,y); }
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
Сообщение отредактировал Archido - Суббота, 08 Сентября 2012, 10:58 |
|
| |
ilgamer | Дата: Суббота, 08 Сентября 2012, 11:51 | Сообщение # 3 |
Needle Games
Сейчас нет на сайте
| Изменил код: Code for(int i=0; i<100; i+=1) { t = x/V0*cos(-mouseAngle); x = (V0*cos(-mouseAngle))*i; y = Y0+(V0*sin(-mouseAngle))*i-g*t*t/2;
DrawSprite(L"dot.png",x,y); }
Результат
Сообщение отредактировал ilgamer - Суббота, 08 Сентября 2012, 13:37 |
|
| |
TovTripleZ | Дата: Суббота, 08 Сентября 2012, 13:59 | Сообщение # 4 |
Злая ящерка >:3
Сейчас нет на сайте
| ilgamer, а оно так и должно - в небо падать? Или ядро падает с высоты? Или оно летит вверх, а потом опускается?
Бледные дрыщекролики следят за вами
|
|
| |
ilgamer | Дата: Суббота, 08 Сентября 2012, 15:16 | Сообщение # 5 |
Needle Games
Сейчас нет на сайте
| Ядро в любом случае опускактся. Мне и нужно чтобы траектория была дугообразной и оба ее конца были направленны вниз
|
|
| |
Archido | Дата: Суббота, 08 Сентября 2012, 15:59 | Сообщение # 6 |
Сэнсэй
Сейчас нет на сайте
| В формуле ты там чего-то наворотил лишнего, попробуй сделать так: Code const float X0 = 0.0f; const float Y0 = 600.0f;
float t = 0.0f; float Angle = mouseAngle * PI / 180; //угол должен быть в радианах
x = X0 + V0 * cos(Angle) * t; y = Y0 + V0 * sin(Angle) * t - g*t*t / 2;
...
//а далее в какой-нить ф-ции Update делаем что-нить типа:
t += 0.05f; //коэффициент зависит от того, сколько раз в секунду вызывается данный код
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
Сообщение отредактировал Archido - Суббота, 08 Сентября 2012, 16:01 |
|
| |
ilgamer | Дата: Воскресенье, 09 Сентября 2012, 03:43 | Сообщение # 7 |
Needle Games
Сейчас нет на сайте
| Ничего не изменилось
|
|
| |
Archido | Дата: Воскресенье, 09 Сентября 2012, 04:43 | Сообщение # 8 |
Сэнсэй
Сейчас нет на сайте
| ilgamer А вообще сама траектория похожа на правду? Еще дело может быть в V0 и в mouseAngle, как получаешь этот угол?
Вот простой примерчик наваял (курсор мыши задает угол, левая кнопка "запускает" спрайт), посмотри.
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
Сообщение отредактировал Archido - Воскресенье, 09 Сентября 2012, 06:22 |
|
| |
ilgamer | Дата: Воскресенье, 09 Сентября 2012, 10:26 | Сообщение # 9 |
Needle Games
Сейчас нет на сайте
| На правду то похожа. Даже дальность полета верно просчитывается.
Получаю угол так: Code double mouseAngle = atan2(mouseX-600,mouseX)
Спасибо за пример!
Сообщение отредактировал ilgamer - Воскресенье, 09 Сентября 2012, 10:30 |
|
| |