Lehrer Nussbaumer - JAVA (eine kleine Einführung ;)

Grundlagen

GUI

Eingabe

Ausgabe

Applikationen

  1. Wurfbahnen
  2. Satellitenbahnen
  3. Interaktion
  4. Notizzettel
  5. Typkonvertierung
  6. Rechner
  7. Mandelbrot-Menge
  8. Julia-Menge

Applets

Servlets

Beispiele

Spiele

IDEs

Skriptum

JAVA-DOCS


-----------------
letzte Änderung:
09 December 2021
-----------------
Lehrer Nussbaumers Seite

... in Arbeit ...

Wurfbahnen

Die Verwendung von Rechenanlagen hat sich seit langem für die numerische Behandlung von (mehr oder weniger einfachen) Fragestellungen aus der Physik bewährt. An dieser Stelle sollen Bahnkurven von Körpern dargestellt werden - die Wurfparabel eines auf der Erdoberfläche horizontal geworfenen Körpers soll näherungsweise "Punkt für Punkt" berechnet und gezeichnet werden.

Beispiel:

Aus der bekannten Anfangsgeschwindigkeit und der bekannten Fallbeschleunigung lässt sich für jeden Zeitschritt (hier 0.5) die neue Geschwindigkeit vneu = valt + a*dt berechnen. Kennt man die Geschwindigkeit so lässt sich aus der aktuellen Position des Körpers der im Zeitschritt zurückgelegte Weg berechnen: Die alte und die neue Position werden mit einer Linie verbunden - auf diese Weise erhält man die Bahnkurve des Körpers...


Code:

import java.awt.*;
import java.awt.event.*;

public class wurfbahn extends Frame {

    wurfbahn() {
        super("Horizontaler Wurf");
    }

    public static void main (String[] arguments) {
        wurfbahn proggi = new wurfbahn();
        WindowListener wl = new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        };
        proggi.addWindowListener(wl);
	proggi.setLocation(100,100);
        proggi.setSize(400,400);
        proggi.show();
    }

    public void paint (Graphics g) {
	double xalt,yalt,x,y,vx,vy,ax,ay,dt;

	dt=0.5;
	xalt=0;
	yalt=40;
	x=0;
	y=40;
	vx=40;
	vy=0;
	ax=0;
	ay=9.81;

	do {
	    vx=vx+ax*dt;
	    vy=vy+ay*dt;
	    x=x+vx*dt;
	    y=y+vy*dt;
	    g.drawLine((int)xalt,(int)yalt,(int)x,(int)y);
	    xalt=x;
	    yalt=y;

	} while ((x<400) && (y<400) && (x>=0) && (y>=01));
	g.drawString("hallo",10,10);

    }
}

Kommentar:

Da die Methode drawLine(xalt, yalt, xneu, yneu) nur ganze Zahlen als Parameter akzeptiert, werden die Rechenergebnisse der reellen Zahlen in ganzzahlige Ergebnisse umgewandelt: Dies geschieht hier durch einfache Typenkonversion durch das vorangestellte "(int)".


Aufgabe:

Erweitere die obige Applikation mit Eingabeflächen zu vx und vy!


© Alfred Nussbaumer, Weblog "MiniNuss"