QB64 - QuickBasicSviluppo

Movimento Particella in QBasic con Gravità

In questo articolo, ti mostrerò come utilizzare QBasic per simulare il movimento di una particella in un campo di forze gravitazionali.

Per prima cosa, definiamo la particella e il campo di forze gravitazionali. La particella ha una posizione, una velocità e un’accelerazione iniziali, mentre il campo di forze gravitazionali ha una posizione e una forza gravitazionale associata. Utilizzando le leggi della fisica, possiamo calcolare la posizione, la velocità e l’accelerazione della particella in ogni istante di tempo.

In QBasic, possiamo definire la particella e il campo di forze gravitazionali come variabili. Utilizzando un loop, possiamo calcolare la posizione, la velocità e l’accelerazione della particella in ogni istante di tempo, aggiornando le variabili in base ai calcoli effettuati.

Ecco un esempio di codice QBasic che simula il movimento di una particella in un campo di forze gravitazionali:

Screen 12

Const G = 0.001
Const DT = 0.1

Dim X(100), Y(100)
Dim VX(100), VY(100)
Dim AX(100), AY(100)
Dim M(100)
Dim Fx(100), Fy(100)

For i = 1 To 100
    X(i) = Rnd * 640
    Y(i) = Rnd * 480
    VX(i) = (Rnd - 0.5) * 10
    VY(i) = (Rnd - 0.5) * 10
    M(i) = Rnd * 10
Next i

Do    
    For i = 1 To 100
        Fx(i) = 0
        Fy(i) = 0
        For j = 1 To 100
            If i <> j Then
                dx = X(j) - X(i)
                dy = Y(j) - Y(i)
                r = Sqr(dx ^ 2 + dy ^ 2)
                F = G * M(i) * M(j) / (r ^ 2)
                Fx(i) = Fx(i) + F * dx / r
                Fy(i) = Fy(i) + F * dy / r
            End If
        Next j
    Next i

    For i = 1 To 100
        AX(i) = Fx(i) / M(i)
        AY(i) = Fy(i) / M(i)
        VX(i) = VX(i) + AX(i) * DT
        VY(i) = VY(i) + AY(i) * DT
    Next i

    For i = 1 To 100
        X(i) = X(i) + VX(i) * DT
        Y(i) = Y(i) + VY(i) * DT
        If X(i) < 0 Or X(i) > 640 Then VX(i) = -VX(i)
        If Y(i) < 0 Or Y(i) > 480 Then VY(i) = -VY(i)
    Next i

    Cls
    For i = 1 To 100
        Circle (X(i), Y(i)), 5, 1
    Next i
    _Limit 30
Loop While InKey$ = ""
/ 5
Grazie per aver votato!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *