Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Making a Physics Java Applet

  1. Mar 18, 2015 #1
    1. The problem statement, all variables and given/known data

    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


    2. Relevant equations

    None

    3. The attempt at a solution

    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:

    Code (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]);  
            }      
        }      
    }
     
  2. jcsd
  3. Mar 18, 2015 #2

    jedishrfu

    Staff: Mentor

    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.
     
  4. Mar 19, 2015 #3
    Thanks for the link! I will be studying it now.
     
  5. Mar 20, 2015 #4
    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?
     
  6. Mar 20, 2015 #5

    jedishrfu

    Staff: Mentor

    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...
     
  7. Mar 20, 2015 #6
    [/code][/QUOTE]
    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:

    Code (Java):
    import java.applet.*;
    import java.awt.*;
    import java.awt.event.*;

       public class LotkaApplet extends Applet
       implements MouseListener, ActionListener, Runnable{
    ...
    }
     
  8. Mar 20, 2015 #7

    jedishrfu

    Staff: Mentor

    Use getWidth() and getHeight() java applet methods to get the canvas size .
     
  9. Mar 21, 2015 #8
    I think I would have to extend 2D graphics for this.
     
  10. Mar 21, 2015 #9

    jedishrfu

    Staff: Mentor

Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook