gpt4 book ai didi

c++ - 2D 射弹 - 速度和位置 vector

转载 作者:行者123 更新时间:2023-11-30 01:41:20 26 4
gpt4 key购买 nike

我正在构建一个小型物理引擎,以给定的角度和速度发射射弹,并在每个时间间隔跟踪和显示速度/位置 vector ,但我的程序遇到了一些问题。

当我运行我的程序时,它没有循环,并且 position 变量保持为 0。我知道我在某处数学错误,只是不知道在哪里。

这是我的程序:

#include <iostream>

using namespace std;

#define PI 3.14159265359

struct vecVariables {

float v = 0, a = -9.81;
float posNew = 0, posOld = 0;
float x, y;
float theta = 45; // our start angle is 45
float u = 20; // our start velocity is 20
};

int main() {

int deltaT = 0.01;
int test;

vecVariables vars; // creates an object for Variables to be used

while (deltaT <= 1) {

deltaT += 0.01;

vars.v = vars.u + vars.a * deltaT; // gets the velocity V
vars.posNew = vars.posOld + vars.v * deltaT; // gets position D

vars.x = vars.u * cos(vars.theta * PI / 180);
vars.y = vars.u * sin(vars.theta* PI / 180);

cout << "velocity vec = [" << vars.x << " , " << vars.y << "]" << endl; // velocity on x, y

cout << "pos = "<< vars.posNew << endl; // display position

vars.posOld = vars.posNew;

getchar();
}
}

最佳答案

int deltaT = 0.01; 更改为 float deltaT = 0.01f;double deltaT = 0.01;。发生的事情是您的“.01”在转换为整数时被截断了。你想要一个 floatdouble 因为它们告诉编译器期望一个非整数值。现在,您告诉它需要一个整数值,因为它没有得到一个整数,所以它会删除小数点后的所有内容以强制它成为一个整数。

关于c++ - 2D 射弹 - 速度和位置 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41516461/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com