C
Checken
Gast
Hey allerseits. Ich bin gerade dran den Schiefen Wurf zu simulieren und will noch den Luftwiderstand einbauen und hab mir überlegt ob nicht so eine Checkbox perfekt dafür wäre für den Vergleich zwischen den verschiedenen Bahnen.
Also das wäre meine Textdatei:
implements ActionListener, AdjustmentListener, ItemListener
{
Graphics g;
Checkbox LW = new Checkbox("Luftwiderstand");
public void draw(Graphics g){
double fx, fy;
double a = 9.81; //Fallbeschleunigung
double xold, yold;
double x, y, vx, vy, ax, ay;
double Flx, Fly;
vx = v * Math.cos(winkel/180*Math.PI);
vy = -v * Math.sin(winkel/180*Math.PI);
x = xstart;
y = ystart;
int farbe = 0; //schwarz
do{
Flx = (cw*rhoL*A)/2*Math.pow(vx,2);
Fly = (cw*rhoL*A)/2*Math.pow(vy,2);
xold = x;
yold = y;
fx = beta*(Math.sqrt(vx*vx+vy*vy)*vx)-Flx;
fy = beta*(Math.sqrt(vx*vx+vy*vy)*vy)-masse*a-Fly; //neue Kraft in y-Richtung
ax = fx/masse; //neue x-Beschleunigung
ay = fy/masse; //neue y-Beschleunigung
vx = vx + ax*t; //neue x-Geschwindigkeit
vy = vy - ay*t; //neue y-Geschwindigkeit
x = x + vx * t; //neue x-Koordinate
y = y + vy * t; //neue y-Koordinate
g.drawLine((int) Math.round((xold - xstart)*faktor + xstart), //Anfang der Zeichnung nach x
(int) Math.round((yold - ystart)*faktor + ystart),
(int) Math.round((x - xstart)*faktor + xstart), //Schluss der Zeichnung nach x
(int) Math.round((y - ystart)*faktor + ystart));
try{
Thread pause = new Thread();
pause.sleep(ZZ);
}catch(InterruptedException e) {}
}while ( (y - ystart)*faktor + ystart <= ystart);
}
public void init(){
LW.setBounds(100,ground + 70);
add(LW);
LW.addItemListener(this);
public void itemStateChanged(ItemEvent e){
if(e.getSource()==LW){
Flx = (cw*rhoL*A)/2*Math.pow(vx,2);
Fly = (cw*rhoL*A)/2*Math.pow(vy,2);
}else{
Flx = 0;
Fly = 0;
}
}
}
also ich hab nicht das ganze Programm aufgelistet sondern nur das das Probleme macht und hier noch die Fehlermeldungen des Compilers:
cannot find symbol ( kommt sieben mal vor):
variable Flx(beim public void itemStateChanged)
method setBounds
variable vx( genau dort wo auch Flx)
variable Fly(genau dort wo auch Flx)
variable vy(wieder das gleiche)
variable Flx( bei Flx=0)
variable Fly(bei Fly=0)
irgendwie hab ich den if-Befehl falsch bzw. unverständlich für den Compiler definiert , aber etwas besseres is mir nicht eingefallen um die Luftwiderstandskraft nach Belieben auszuschalten. Erbitte um Hilfe bei dem Problem ... bin schon seit 2h dran und hab einfach keinen Plan mehr. Danke im voraus!
Also das wäre meine Textdatei:
implements ActionListener, AdjustmentListener, ItemListener
{
Graphics g;
Checkbox LW = new Checkbox("Luftwiderstand");
public void draw(Graphics g){
double fx, fy;
double a = 9.81; //Fallbeschleunigung
double xold, yold;
double x, y, vx, vy, ax, ay;
double Flx, Fly;
vx = v * Math.cos(winkel/180*Math.PI);
vy = -v * Math.sin(winkel/180*Math.PI);
x = xstart;
y = ystart;
int farbe = 0; //schwarz
do{
Flx = (cw*rhoL*A)/2*Math.pow(vx,2);
Fly = (cw*rhoL*A)/2*Math.pow(vy,2);
xold = x;
yold = y;
fx = beta*(Math.sqrt(vx*vx+vy*vy)*vx)-Flx;
fy = beta*(Math.sqrt(vx*vx+vy*vy)*vy)-masse*a-Fly; //neue Kraft in y-Richtung
ax = fx/masse; //neue x-Beschleunigung
ay = fy/masse; //neue y-Beschleunigung
vx = vx + ax*t; //neue x-Geschwindigkeit
vy = vy - ay*t; //neue y-Geschwindigkeit
x = x + vx * t; //neue x-Koordinate
y = y + vy * t; //neue y-Koordinate
g.drawLine((int) Math.round((xold - xstart)*faktor + xstart), //Anfang der Zeichnung nach x
(int) Math.round((yold - ystart)*faktor + ystart),
(int) Math.round((x - xstart)*faktor + xstart), //Schluss der Zeichnung nach x
(int) Math.round((y - ystart)*faktor + ystart));
try{
Thread pause = new Thread();
pause.sleep(ZZ);
}catch(InterruptedException e) {}
}while ( (y - ystart)*faktor + ystart <= ystart);
}
public void init(){
LW.setBounds(100,ground + 70);
add(LW);
LW.addItemListener(this);
public void itemStateChanged(ItemEvent e){
if(e.getSource()==LW){
Flx = (cw*rhoL*A)/2*Math.pow(vx,2);
Fly = (cw*rhoL*A)/2*Math.pow(vy,2);
}else{
Flx = 0;
Fly = 0;
}
}
}
also ich hab nicht das ganze Programm aufgelistet sondern nur das das Probleme macht und hier noch die Fehlermeldungen des Compilers:
cannot find symbol ( kommt sieben mal vor):
variable Flx(beim public void itemStateChanged)
method setBounds
variable vx( genau dort wo auch Flx)
variable Fly(genau dort wo auch Flx)
variable vy(wieder das gleiche)
variable Flx( bei Flx=0)
variable Fly(bei Fly=0)
irgendwie hab ich den if-Befehl falsch bzw. unverständlich für den Compiler definiert , aber etwas besseres is mir nicht eingefallen um die Luftwiderstandskraft nach Belieben auszuschalten. Erbitte um Hilfe bei dem Problem ... bin schon seit 2h dran und hab einfach keinen Plan mehr. Danke im voraus!