Java How to Incorporate a Numerical Solution into a Physics Java Applet?

  • Thread starter Thread starter Robben
  • Start date Start date
  • Tags Tags
    Java Physics
Click For Summary
The discussion centers on creating a physics applet to visualize the numerical solution of the Lotka-Volterra model. The user seeks guidance on incorporating their Java-based numerical solution into an applet, specifically for graphing purposes. They express a need for resources on GUI applets tailored to physics applications, such as graphing and wave simulations. A key technical challenge mentioned is the requirement for integer values in Java's Graphics methods, which complicates the rendering of double values from the model. The conversation highlights the importance of scaling the graphical representation based on the applet's pixel dimensions. Suggestions include using the getWidth() and getHeight() methods to determine canvas size and applying appropriate scaling calculations for accurate visual representation. The Open Source Physics website is recommended as a valuable resource for relevant Java software and simulations.
Robben
Messages
166
Reaction score
2

Homework Statement


[/B]
I would like to make a physics applet.

I have a numerical solution of the Lotka-Volterra model located here:
https://www.physicsforums.com/threads/lotka-volterra-model-eulers-method.803382/#post-5044961


Homework Equations



None

The Attempt at a Solution


[/B]
I want to be able to make graphs of my numerical solution and I am wondering how do I incorporate my numerical solution of the Lotka-Volterra model into an applet?

I tried searching GUI applets for Java but it is so broad the I would like to narrow it down for only physics application like making graphs or making a wave that corresponds to the wave equation.

Any links or videos of how to make a physics applet would be of great help.

My numerical solution:

Java:
public class Lotka {
    public static void main(String[] args) {
        double[] prey = new double[1000];
        double[] predator = new double[1000];
        double[] dt = new double[101];
        double[] b = new double[101];
        prey[0] = 10;
        predator[0] = 5;   
        dt[0] = 0;
        b[0] = 0.01;   
   
        for (int j = 1; j < 101; j ++) {
            dt[j] = 2 + dt[j-1];
            b[j] = b[0]*((double)j/2);  
        }    
   
        for(int i = 1; i < 100; i++) {
            prey[i] = prey[i-1] + (0.2*prey[i-1]*(1-prey[i-1]/500)
               -(b[i]*prey[i-1]*predator[i-1])/(1+b[i]*prey[i-1]))*(1/dt[i]);
            predator[i] = predator[i-1] + (0.1*predator[i-1]*(1-predator[i-1]
                /(0.2*prey[i-1])))*(1/dt[i]);
            //System.out.println("" + prey[i] + " " + predator[i]);  
        }      
    }      
}
 
Technology news on Phys.org
Checkout Open Source Physics at www.compadre.org/osp

They have a whole collection of java software for making physics simulations including charting and ODE solvers.
 
jedishrfu said:
Checkout Open Source Physics at www.compadre.org/osp

They have a whole collection of java software for making physics simulations including charting and ODE solvers.

Thanks for the link! I will be studying it now.
 
jedishrfu said:
Checkout Open Source Physics at www.compadre.org/osp

They have a whole collection of java software for making physics simulations including charting and ODE solvers.

I noticed, in order to draw a line in my java applet it must be integers, i.e. for Graphics g then g.drawLine() must have int values and not double. Since my Lotka model numerical solution has double values from 10.0 to 9.87 (for the prey) and 4.99 to 4.82 (for the predator) how do I go about doing this? How do I get my drawline to take in double values instead of int?
 
you have to develop scaling for what you want to draw

So say you decide your image is 1000x1000 pixels and your measurements range from 0cm to 15cm then
to draw a 3cm line you must compute linelength = 3 * 1000 / 15 = 200 pixels...
 
[/code][/QUOTE]
jedishrfu said:
you have to develop scaling for what you want to draw

So say you decide your image is 1000x1000 pixels and your measurements range from 0cm to 15cm then
to draw a 3cm line you must compute linelength = 3 * 1000 / 15 = 200 pixels...

Hm, my measurements are

##p_0 = 10, \ q _0 = 5##
##p_1 = 9.946, \ q_1 = 4.925##
##p_2 = 9.89538, \ q_2 = 4.85231##
##p_3 = 9.84803, \ q_3 = 4.78187##
##\ldots## up to ##4.99## for predator (q) and ##10.0## for prey (p). Now my image pixel size is arbitrary and I just extended Applet, i.e. I have the following code in my applet:

Java:
import java.applet.*;
import java.awt.*;
import java.awt.event.*;

   public class LotkaApplet extends Applet
   implements MouseListener, ActionListener, Runnable{
...
}
 
Use getWidth() and getHeight() java applet methods to get the canvas size .
 
jedishrfu said:
Use getWidth() and getHeight() java applet methods to get the canvas size .
I think I would have to extend 2D graphics for this.
 

Similar threads

  • · Replies 0 ·
Replies
0
Views
627
  • · Replies 7 ·
Replies
7
Views
2K
  • · Replies 8 ·
Replies
8
Views
2K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 4 ·
Replies
4
Views
3K
  • · Replies 15 ·
Replies
15
Views
3K
  • · Replies 4 ·
Replies
4
Views
3K
  • · Replies 4 ·
Replies
4
Views
5K
  • · Replies 1 ·
Replies
1
Views
3K
Replies
9
Views
2K