/*
 * OpenPixi - Open Particle-In-Cell (PIC) Simulator
 * Copyright (C) 2012  OpenPixi.org
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License along
 * with this program; if not, write to the Free Software Foundation, Inc.,
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 */
package org.openpixi.pixi.physics;

import java.lang.Math;

	
public class Particle3D{
		
	public double x;            //x - Coordinate
	public double y;            //y - Coordinate
	public double z;            //z - Coordinate
	
	public double vx;           //velocity in the x - direction
	public double vy;           //velocity in the y - direction
	public double vz;           //velocity in the z - direction
	
	public double ax;           //acceleration in the x - direction
	public double ay;           //acceleration in the y - direction
	public double az;           //acceleration in the z - direction
	
	private double mass;         // the mass of the particle
	private double echarge;      //the electric charge of the particle  
		
	/** Empty constructor */
	public Particle3D ()
	{
	}
	
	//a method that gives the mass
	public double getMass()
	{
		return(mass);
	}
	
	//a method that sets the mass to a certain value
	public void setMass(double newMass)
	{
		mass = newMass;
	}
	
	//a method that gives the electric charge
	public double getCharge()
	{
		return(echarge);
	}
			
	//a method that sets the mass to a certain value
	public void setCharge(double newEcharge)
	{
		echarge = newEcharge;
	}
	
	
	//a method that calculates the range from the center 0.0 for 3-dim
	public double rangeFromCenter3D()
	{
		return Math.sqrt(x * x + y * y + z * z);
	}
	
	
	//a method that calculates the range between two particles in 3-dim
	public double rangeBetween3D(Particle3D a)
	{
		double range;
		range = Math.pow(this.x - a.x, 2) + Math.pow(this.y - a.y, 2) + Math.pow(this.z - a.z, 2);
		return Math.sqrt(range);
	}
}




