package org.openpixi.pixi.physics.force; import org.openpixi.pixi.physics.particles.Particle; public class ConstantForce implements Force { /** Constant gravity in x-direction */ public double gx; /** Constant gravity in y-direction */ public double gy; /** Drag coefficient */ public double drag; /** Electric field in x - direction */ public double ex; /** Electric field in y - direction */ public double ey; /** Magnetic field in z - direction */ public double bz; /** New empty force */ public ConstantForce() { reset(); } public void reset() { gx = 0; gy = 0; drag = 0; ex = 0; ey = 0; bz = 0; } public double getForceX(Particle p) { return -drag * p.getVx() + p.getMass() * gx + p.getCharge() * ex + p.getCharge() * p.getVy() * bz; } public double getForceY(Particle p) { return - drag * p.getVy() + p.getMass() * gy + p.getCharge() * ey - p.getCharge() * p.getVx() * bz; } public double getPositionComponentofForceX(Particle p) { return p.getMass() * gx + p.getCharge() * ex; } public double getPositionComponentofForceY(Particle p) { return p.getMass() * gy + p.getCharge() * ey; } public double getTangentVelocityComponentOfForceX(Particle p) { return - drag * p.getVx(); } public double getTangentVelocityComponentOfForceY(Particle p) { return - drag * p.getVy(); } public double getNormalVelocityComponentofForceX(Particle p) { return p.getCharge() * p.getVy() * bz; } public double getNormalVelocityComponentofForceY(Particle p) { return - p.getCharge() * p.getVx() * bz; } public double getBz(Particle p) { return bz; } public double getLinearDragCoefficient(Particle p) { return drag; } }