Мой код делает именно то, что должен, но я понятия не имею, почему - PullRequest
0 голосов
/ 30 ноября 2018

должен вычислять координаты снаряда, запущенного по времени (с шагом 100 мс), с помощью линейного уравнения, и он выводит линейные числа, но если я строю это уравнение с CalcMe.com (математический инструмент), он делаетпараболический график

InVel = Double.parseDouble(jTextField1.getText());
    g = Double.parseDouble(jTextField8.getText());

    y = 1;

    while(y >= -1) {
        t += 100;
        x = InVel * TimeUnit.MILLISECONDS.toSeconds(t) * Math.cos(45);
        y = InVel * TimeUnit.MILLISECONDS.toSeconds(t) * Math.sin(45) - (1 / 2) * g * Math.pow(TimeUnit.MILLISECONDS.toSeconds(t), 2);
        //System.out.print(Double.toString(x));
        //System.out.printf(" ");
        System.out.print(Double.toString(y));
        System.out.printf("%n");
    }

    jTextField6.setText(Double.toString(x));

код в java

g является константой (9.8), а invel задается пользователем, поэтому его постоянная тоже g является гравитацией и вписывает начальную скоростьДля снаряда уравнение таково: x=invel*time*cos(45) и y=invel*time*sin(45)-(1/2)*g*t^2

Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 30 ноября 2018

Ваше преобразование значения в миллисекунды в секунду метод TimeUnit.MILLISECONDS.toSeconds (t) является основным фактом.Возвращает значение long , которое вы хотите удвоить.Пожалуйста, посмотрите на код ниже.Вероятно, это ваш ответ.Просто замените жестко запрограммированное значение на jTextField

public static void main(String[] args) {
    double InVel = Double.parseDouble("10.555");
    double g = Double.parseDouble("9.8");

    double y = 1;
    double x=0;
    double t=0;
    while(y >= -1) {
        t += 100;
        double timeInSeconds =  (t / (double)1000) % (double)60;
        x = InVel * timeInSeconds * Math.cos(45);
        y = InVel * timeInSeconds * Math.sin(45) - ((double) 1 / (double) 2) * g * Math.pow(timeInSeconds, 2);
        //System.out.print(Double.toString(x));
        //System.out.printf(" ");
        System.out.println("X = " + x + " Y = " + Double.toString(y));
        System.out.printf("%n");
    }
}
...