Forum » Programiranje » Java simulacija.. premikanje objektov na risalni plošči
Java simulacija.. premikanje objektov na risalni plošči
i33a ::
Pozdravljeni, narediti moram simulacijo v Javi.. in imam kar nekaj težav. Javo sicer delno znam z simulacijami pa se še nisem ukvarjal. Zato bi potreboval pomoč. Ustvaril sem neke objekte na risalni plošči.. z g.fillOval(), g.fillRect(), ...
Ti objekti se bodo morali premikati v horitzontalni smeri glede na neke enačbe. Zanima pa ne kako ustvariti to gibanje?
Gibanje ne bo samo linearno ampak tudi eksponentno, sinusno, ...
Lep pozdrav, in že vnaprej hvala za pomoč :)
Ti objekti se bodo morali premikati v horitzontalni smeri glede na neke enačbe. Zanima pa ne kako ustvariti to gibanje?
Gibanje ne bo samo linearno ampak tudi eksponentno, sinusno, ...
Lep pozdrav, in že vnaprej hvala za pomoč :)
videc ::
Narišeš objekte, pobrišeš vse, ponovno narišeš.
Za to kje objekt narišeš, lokacijo, uporabiš funkcijo, v tvojem primeru glede na enačbo, ki ti določi začetne koordinate objekta.
Za to kje objekt narišeš, lokacijo, uporabiš funkcijo, v tvojem primeru glede na enačbo, ki ti določi začetne koordinate objekta.
GnuceLee ::
Naredi simulacijo z diskretnim premikom časa, kar pomeni da imaš neko centralno "uro", kjer ti diskretno teče čas simulacije in ob vsaki spremembi ta čas posreduj objektom. Objekti pa naj svojo pozicijo izračunajo kot funkcijo tega časa. Ob vsakem impulzu časa naj se objekt sam izriše.
Naslednja možnost je, da objekti uporabljajo sistemski čas in se izrisujejo samodejno, v naprej določenih časovnih intervalih.
V obeh primerih lahko vsak simulacijski objekt teče v svoji niti.
Naslednja možnost je, da objekti uporabljajo sistemski čas in se izrisujejo samodejno, v naprej določenih časovnih intervalih.
V obeh primerih lahko vsak simulacijski objekt teče v svoji niti.
Randomness ::
V obeh primerih lahko vsak simulacijski objekt teče v svoji niti.Mogoče bi še šlo, če bi šlo za le nekaj "simulacijskih objektov". Ali pa če si mislil t.i. Javine "zelene niti", ki pa jih JVM že lep čas ne uporablja več. Drugače pa je tak koncept bolj no go.
i33a ::
Nekaj sem uspel.. a imam še vedno precej težav.
Bi lahko kdo na hitro pregledal kodo, ker pomoje je neka taka začetniška napaka, ki pa jo jaz ne najdem :S
Zaenkrat bi rad vsaj, to, da žogica odleti z platforme v navpičnem metu in pade v prostem padu.
Bi lahko kdo na hitro pregledal kodo, ker pomoje je neka taka začetniška napaka, ki pa jo jaz ne najdem :S
Zaenkrat bi rad vsaj, to, da žogica odleti z platforme v navpičnem metu in pade v prostem padu.
import javax.swing.*; import java.awt.*; public class Fizika2 { public static void main(String[] args) { JFrame frame = new JFrame("Simulacija"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(400, 800); frame.setLocationRelativeTo(null); frame.add(new Simulacija()); frame.setVisible(true); } } class Simulacija extends JComponent { //NEKATERi PODATKI IN VHODI public double gravitacija = 9.81; public double pi = 3.14; public double tPlosce = 0; //podatki, ki jih lahko spreminjamo... private double y0 = 0.3; private double faktor = 30; //izracun podatkov private double omegaKr = Math.sqrt(gravitacija/y0); private double t0 = 2*pi / omegaKr; private double omega = omegaKr * faktor; private double k = 1 / (faktor*faktor); private double zadnjiY = 0; private double zadnjiYZoge = 0; private double tZoge = 0; public Simulacija() { Thread animationThread = new Thread(new Runnable() { public void run() { while (true) { repaint(); try {Thread.sleep(20);} catch (Exception ex) {} } } }); animationThread.start(); } public void paintComponent(Graphics g) { Graphics2D gg = (Graphics2D) g; double st = 0.0002; //sprememba casa tPlosce += st; // plosca je zamaknjena 100px desno.. in ima izračunano višino int x = 100; int y = (int)(120* y0* Math.cos(omega * tPlosce)); gg.setColor(Color.BLACK); gg.fillRect(x, y+600, 100, 2); //ZOGA // izračun podatkov za čas, ko se žoga odlepi double t1 = Math.acos(-k)/omega; double v1 = y0*omega * Math.sin(omega * t1); double y1 = k*y0; int yZoge = 0; //treba bo izracunati se stvari za zogo... zdaj niha skupaj z ploščo if(tPlosce < t1){ yZoge =(int)(120* y0* Math.cos(omega * tPlosce)); }else{ //ko se žoga odbije yZoge = -(int)((y1 + v1*tZoge - gravitacija*tZoge*tZoge/2)*120 ); tZoge+= st; } gg.setColor(Color.BLUE); gg.fillOval(x+30,yZoge+585,15,15); zadnjiY = (int)y1; zadnjiYZoge = yZoge; } }
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | C# - domača nalogaOddelek: Programiranje | 2212 (1753) | IceBoX |
» | [Java] System.out.print = nullOddelek: Programiranje | 753 (675) | Spura |
» | Java ObjektiOddelek: Programiranje | 2252 (1946) | Mavrik |
» | [C#]Analogna uraOddelek: Programiranje | 2735 (2372) | cekr |
» | [c#]4 v vrsto - padanje krogovOddelek: Programiranje | 1988 (1820) | VASkO |