V
Vieta
Gast
Hallo zusammen!
Ich habe bereits euer Board durchsucht und auch bei Google geschaut, jedoch nichts gefunden...
Es geht um folgendes:
Bei meinem Programm (gegenseitige Anziehung von Körpern) habe ich eine EIngabe, um Werte zu ändern, jedenfalls kann man so Sachen eingeben und das Programm zeicnet dann. Ist es aber fertig mit zeichnen, so möchte ich den Vorgang mit den gleichen Zahlen nochmals starten können (auf Verlangen). Nun habe ich aber keine Ahnung wie das geht. Habe gelesen, dass es eine Möglichkeit gibt das ganze Programm neuzustarten, wobei in diesem Fall aber meine eingegebenen Werte nicht mehr vorhanden wären.
Hat jemand eine Idee??
Hier noch mein Programm...(Entschuldigung, falls ich nicht das ganze Programm hätte posten sollen, da ziemlich lang)
Am Schluss habe ich eben diesen "Neustart" versucht ....
Liebe Grüsse
Vieta
Ich habe bereits euer Board durchsucht und auch bei Google geschaut, jedoch nichts gefunden...
Es geht um folgendes:
Bei meinem Programm (gegenseitige Anziehung von Körpern) habe ich eine EIngabe, um Werte zu ändern, jedenfalls kann man so Sachen eingeben und das Programm zeicnet dann. Ist es aber fertig mit zeichnen, so möchte ich den Vorgang mit den gleichen Zahlen nochmals starten können (auf Verlangen). Nun habe ich aber keine Ahnung wie das geht. Habe gelesen, dass es eine Möglichkeit gibt das ganze Programm neuzustarten, wobei in diesem Fall aber meine eingegebenen Werte nicht mehr vorhanden wären.
Hat jemand eine Idee??
Hier noch mein Programm...(Entschuldigung, falls ich nicht das ganze Programm hätte posten sollen, da ziemlich lang)
Code:
/**
* @(#)bewegung.java
*
*
* @author
* @version 1.00 2007/2/16
*/
import java.awt.*;
import java.io.*;
import java.util.*;
public class bewegung
extends java.applet.Applet {
/** Initialization method that will be called after the applet is loaded
* into the browser.
*/
static GrafikFrame f;
public static void main (String[] args )
{
//Grafikframe
f = new GrafikFrame ("Fenster", 1200, 750);
f.setUserCoordinates(-10,10,-10,10);
f.erase(new Color(0x000077));
// Definieren
double[] ax = new double [12];
double[] ay = new double [12];
double[] az = new double [12];
double[] vx = new double [12];
double[] vy = new double [12];
double[] vz = new double [12];
double[] rx = new double [12];
double[] ry = new double [12];
double[] rz = new double [12];
double[] m = new double [12];
double G = 4*Math.PI*Math.PI;
double d = 0;
double tstop = 10;
double tdelta = 0.005;
double t = 0;
double M = 0;
double q = 1;
int n = 11;
int i = 0;
int k = 0;
int j = 11;
int ändern = 1;
int s = 1;
int p = 0;
int mark = 1;
//Standardwerte
rx[0]=0;
ry[0]=0;
rz[0]=0;
rx[1]=-1;
ry[1]=2;
rz[1]=2;
rx[2]=5;
ry[2]=1;
rz[2]=-5;
rx[3]=1;
ry[3]=3;
rz[3]=1;
rx[4]=5;
ry[4]=-5;
rz[4]=4;
rx[5]=-1;
ry[5]=-3;
rz[5]=1;
rx[6]=5;
ry[6]=7;
rz[6]=5;
rx[7]=3;
ry[7]=2;
rz[7]=4;
rx[8]=-7;
ry[8]=-3;
rz[8]=1;
rx[9]=6;
ry[9]=7;
rz[9]=2;
rx[10]=-7;
ry[10]=5;
rz[10]=4;
rx[11]=0;
ry[11]=0;
rz[11]=0;
vx[0]=0;
vy[0]=0;
vz[0]=0;
vx[1]=2;
vy[1]=1;
vz[1]=2;
vx[2]=-1;
vy[2]=0;
vz[2]=0.5;
vx[3]=0;
vy[3]=-2;
vz[3]=3;
vx[4]=1;
vy[4]=0.5;
vz[4]=4;
vx[5]=-2;
vy[5]=3;
vz[5]=-4;
vx[6]=1;
vy[6]=2;
vz[6]=1.5;
vx[7]=-4;
vy[7]=-2;
vz[7]=2;
vx[8]=2;
vy[8]=3;
vz[8]=4;
vx[9]=1;
vy[9]=2;
vz[9]=5;
vx[10]=-4;
vy[10]=-2;
vz[10]=2;
vx[11]=0;
vy[11]=0;
vz[11]=0;
m[0]=0;
m[1]=1;
m[2]=0.5;
m[3]=0.3;
m[4]=1;
m[5]=1;
m[6]=1.5;
m[7]=1.3;
m[8]=1;
m[9]=0.4;
m[10]=1.7;
m[11]=0;
//Eingabe der Daten
try{
StringTokenizer tok;// tok unten wenn nicht läuft
BufferedReader in = new BufferedReader(new InputStreamReader(System.in) );
//Standardwerte verändern?
System.out.print("Wollen Sie die Standardwerte ändern?(Drücken Sie für Ja:1 Nein:0) ");
ändern = Integer.parseInt(in.readLine());
if (ändern==1) {
//Anzahl der Körper
System.out.print("Wollen Sie die Anzahl Körper ändern?");
ändern = Integer.parseInt(in.readLine());
if (ändern==1) {
System.out.print("Anzahl Körper: ");
n = Integer.parseInt(in.readLine()); }
//Eigenschaften der Körper
System.out.print("Wollen Sie die Eigenschaften eines Körpers ändern?");
ändern = Integer.parseInt(in.readLine());
if (ändern==1) {
for(k=1;k<=n;k++){
System.out.print("Wollen Sie die Eigenschaften von Körper "+String.valueOf(k)+" ändern?");
ändern = Integer.parseInt(in.readLine());
if (ändern==1) {
System.out.print("Neue Masse (in Sonnenmassen 1,989·10^30 kg): ");
tok = new StringTokenizer(in.readLine()," ");
m[k] = Double.parseDouble(tok.nextToken());
System.out.print("Ort in aE (Eingabe: x y z): ");
tok = new StringTokenizer(in.readLine()," ");
rx[k] = Double.parseDouble(tok.nextToken());
ry[k] = Double.parseDouble(tok.nextToken());
rz[k] = Double.parseDouble(tok.nextToken());
System.out.print("Geschwindigkeit (Eingabe: x y z): ");
tok = new StringTokenizer(in.readLine()," ");
vx[k] = Double.parseDouble(tok.nextToken());
vy[k] = Double.parseDouble(tok.nextToken());
vz[k] = Double.parseDouble(tok.nextToken()); }}}
//Zeitraum
System.out.print("Wollen Sie den Zeitraum verändern?");
ändern = Integer.parseInt(in.readLine());
if (ändern==1) {
System.out.print("Neuer Zeitraum in Jahren (aktuell: 10): ");
tok = new StringTokenizer(in.readLine()," ");
tstop = Double.parseDouble(tok.nextToken());}
//Wahl von tdelta
System.out.print("Wollen Sie den Zeitschritt tdelta verändern?: ");
ändern = Integer.parseInt(in.readLine());
if (ändern==1) {
System.out.print("tdelta neu in Tagen (aktuell: 0.005): ");
tok = new StringTokenizer(in.readLine()," ");
tdelta = Double.parseDouble(tok.nextToken()); }
//Wahl des festzuhaltenden Körpers
System.out.print("Welchen Körper wollen Sie festhalten? Nummer des Körpers drücken (wobei 0:Schwerpunkt, 11:Ursprung): ");
j = Integer.parseInt(in.readLine());
//Schwerpunkt einzeichnen?
System.out.print("Soll der Schwerpunkt gezeichnet werden? (wird rot gezeichnet) ");
s = Integer.parseInt(in.readLine());
//Markierung
System.out.print("Wollen Sie die Aufenthalte der Körper markieren?: ");
mark = Integer.parseInt(in.readLine());
if (mark==1) {
//Intervall
System.out.print("In welchem Intervall sollen die Körper markiert werden? (in Jahren): ");
tok = new StringTokenizer(in.readLine()," ");
q = Double.parseDouble(tok.nextToken()); }
//Wahl der Darstellungsform
System.out.print("Welche Darstellungsform wünschen Sie? 0=Grundriss, 1= Aufriss : ");
p = Integer.parseInt(in.readLine());
ändern=1;}
if (ändern==0){
//Wahl des festzuhaltenden Körpers
System.out.print("Welchen Körper wollen Sie festhalten? Nummer des Körpers drücken (wobei 0:Schwerpunkt, 11:Ursprung): ");
j = Integer.parseInt(in.readLine());
//Schwerpunkt einzeichnen?
System.out.print("Soll der Schwerpunkt gezeichnet werden? (wird rot gezeichnet) ");
s = Integer.parseInt(in.readLine());
//Markierung
System.out.print("Wollen Sie die Aufenthalte der Körper markieren?: ");
mark = Integer.parseInt(in.readLine());
if (mark==1) {
//Intervall
System.out.print("In welchem Intervall sollen die Körper markiert werden? (in Jahren): ");
tok = new StringTokenizer(in.readLine()," ");
q = Double.parseDouble(tok.nextToken()); }
//Wahl der Darstellungsform
System.out.print("Welche Darstellungsform wünschen Sie? 0=Grundriss, 1= Aufriss : ");
p = Integer.parseInt(in.readLine());}
}catch(Exception e){}
M=0;
tdelta = tdelta/365.25;
double tm = tdelta;
for (k=0; k<=n; k++){
M = M + m[k];}
while (t<=tstop){
t = t + tdelta;
for (k=1; k<=n; k++) {
ax[k]=0;
ay[k]=0;
az[k]=0;
for (i=1; i<=n; i++){
if (i!=k) {
d = Math.sqrt(((rx[i]-rx[k])*(rx[i]-rx[k])) + (ry[i]-ry[k])*(ry[i]-ry[k]) + (rz[i]-rz[k])*(rz[i]-rz[k]));
//Beschleunigungsänderung
ax[k] = ax[k] + ((G*m[i])/(d*d*d))*(rx[i]-rx[k]);
ay[k] = ay[k] + ((G*m[i])/(d*d*d))*(ry[i]-ry[k]);
az[k] = az[k] + ((G*m[i])/(d*d*d))*(rz[i]-rz[k]); } } }
for (k=1; k<=n; k++){
//Geschwindigkeitsänderung
vx[k] = vx[k] + ax[k]*tdelta;
vy[k] = vy[k] + ay[k]*tdelta;
vz[k] = vz[k] + az[k]*tdelta;
//Ortsänderung
rx[k] = rx[k] + vx[k]*tdelta + ax[k]*tdelta*tdelta/2;
ry[k] = ry[k] + vy[k]*tdelta + ay[k]*tdelta*tdelta/2;
rz[k] = rz[k] + vz[k]*tdelta + az[k]*tdelta*tdelta/2; }
//Schwerpunkt
rx[0]=0;
ry[0]=0;
rz[0]=0;
for(k=1;k<=n;k++){
rx[0] =rx[0]+(m[k]*rx[k])/M;
ry[0] =ry[0]+(m[k]*ry[k])/M;
rz[0] =rz[0]+(m[k]*rz[k])/M; }
////Zeichnen, Farbzuordnung
///im Grundriss
if (p==0){
//Schwerpunkt
if (s==1) {f.drawPoint ((ry[0]-ry[j]),-(rx[0]-rx[j]),Color.red);}
//Körper
if (n>=1) {f.drawPoint((ry[1]-ry[j]),-(rx[1]-rx[j]),new Color(0xff1493));}
if (n>=2) {f.drawPoint((ry[2]-ry[j]),-(rx[2]-rx[j]),Color.white);}
if (n>=3) {f.drawPoint((ry[3]-ry[j]),-(rx[3]-rx[j]),new Color(0x9400D3));}
if (n>=4) {f.drawPoint((ry[4]-ry[j]),-(rx[4]-rx[j]),Color.green);}
if (n>=5) {f.drawPoint((ry[5]-ry[j]),-(rx[5]-rx[j]),Color.gray);}
if (n>=6) {f.drawPoint((ry[6]-ry[j]),-(rx[6]-rx[j]),Color.yellow);}
if (n>=7) {f.drawPoint((ry[7]-ry[j]),-(rx[7]-rx[j]),Color.cyan);}
if (n>=8) {f.drawPoint((ry[8]-ry[j]),-(rx[8]-rx[j]),new Color(0xFF6600));}
if (n>=9) {f.drawPoint((ry[9]-ry[j]),-(rx[9]-rx[j]),Color.black);}
if (n>=10) {f.drawPoint((ry[10]-ry[j]),-(rx[10]-rx[j]),new Color(0x800000));}
//Markierung
if (mark==1){
if (t>=tm) {
tm = tm + q;
if (n>=1) {f.drawCircle((ry[1]-ry[j]),-(rx[1]-rx[j]),0.08,new Color(0xff1493));}
if (n>=2) {f.drawCircle((ry[2]-ry[j]),-(rx[2]-rx[j]),0.08,Color.white);}
if (n>=3) {f.drawCircle((ry[3]-ry[j]),-(rx[3]-rx[j]),0.08,new Color(0x9400D3));}
if (n>=4) {f.drawCircle((ry[4]-ry[j]),-(rx[4]-rx[j]),0.08,Color.green);}
if (n>=5) {f.drawCircle((ry[5]-ry[j]),-(rx[5]-rx[j]),0.08,Color.gray);}
if (n>=6) {f.drawCircle((ry[6]-ry[j]),-(rx[6]-rx[j]),0.08,Color.yellow);}
if (n>=7) {f.drawCircle((ry[7]-ry[j]),-(rx[7]-rx[j]),0.08,Color.cyan);}
if (n>=8) {f.drawCircle((ry[8]-ry[j]),-(rx[8]-rx[j]),0.08,new Color(0xFF6600));}
if (n>=9) {f.drawCircle((ry[9]-ry[j]),-(rx[9]-rx[j]),0.08,Color.black);}
if (n>=10) {f.drawCircle((ry[10]-ry[j]),-(rx[10]-rx[j]),0.08,new Color(0x800000));} } } }
///im Aufriss
if (p==1){
//Schwerpunkt
if (s==1) {f.drawPoint ((ry[0]-ry[j]),(rz[0]-rz[j]),Color.red);}
//Körper
if (n>=1) {f.drawPoint((ry[1]-ry[j]),(rz[1]-rz[j]),new Color(0xff1493));}
if (n>=2) {f.drawPoint((ry[2]-ry[j]),(rz[2]-rz[j]),Color.white);}
if (n>=3) {f.drawPoint((ry[3]-ry[j]),(rz[3]-rz[j]),new Color(0x9400D3));}
if (n>=4) {f.drawPoint((ry[4]-ry[j]),(rz[4]-rz[j]),Color.green);}
if (n>=5) {f.drawPoint((ry[5]-ry[j]),(rz[5]-rz[j]),Color.gray);}
if (n>=6) {f.drawPoint((ry[6]-ry[j]),(rz[6]-rz[j]),Color.yellow);}
if (n>=7) {f.drawPoint((ry[7]-ry[j]),(rz[7]-rz[j]),Color.cyan);}
if (n>=8) {f.drawPoint((ry[8]-ry[j]),(rz[8]-rz[j]),new Color(0xFF6600));}
if (n>=9) {f.drawPoint((ry[9]-ry[j]),(rz[9]-rz[j]),Color.black);}
if (n>=10) {f.drawPoint((ry[10]-ry[j]),(rz[10]-rz[j]),new Color(0x800000));}
//Markierung
if (mark==1){
if (t>=tm) {
tm = tm + q;
if (n>=1) {f.drawCircle((ry[1]-ry[j]),(rz[1]-rz[j]),0.08,new Color(0xff1493));}
if (n>=2) {f.drawCircle((ry[2]-ry[j]),(rz[2]-rz[j]),0.08,Color.white);}
if (n>=3) {f.drawCircle((ry[3]-ry[j]),(rz[3]-rz[j]),0.08,new Color(0x9400D3));}
if (n>=4) {f.drawCircle((ry[4]-ry[j]),(rz[4]-rz[j]),0.08,Color.green);}
if (n>=5) {f.drawCircle((ry[5]-ry[j]),(rz[5]-rz[j]),0.08,Color.gray);}
if (n>=6) {f.drawCircle((ry[6]-ry[j]),(rz[6]-rz[j]),0.08,Color.yellow);}
if (n>=7) {f.drawCircle((ry[7]-ry[j]),(rz[7]-rz[j]),0.08,Color.cyan);}
if (n>=8) {f.drawCircle((ry[8]-ry[j]),(rz[8]-rz[j]),0.08,new Color(0xFF6600));}
if (n>=9) {f.drawCircle((ry[9]-ry[j]),(rz[9]-rz[j]),0.08,Color.black);}
if (n>=10) {f.drawCircle((ry[10]-ry[j]),(rz[10]-rz[j]),0.08,new Color(0x800000));} } }
}
}
int restart = 1;
try { StringTokenizer tok;// tok unten wenn nicht läuft
BufferedReader in = new BufferedReader(new InputStreamReader(System.in) );
//Standardwerte verändern?
System.out.print("Wollen Sie neustarten?(Drücken Sie für Ja:1 Nein:0) ");
restart = Integer.parseInt(in.readLine());
if (restart==1) {bewegung bla = new bewegung();
}
}
catch(Exception e)
{e.printStackTrace();}
}
}
Am Schluss habe ich eben diesen "Neustart" versucht ....
Liebe Grüsse
Vieta