package edu.stanford.rsl.conrad.physics;
import java.io.Serializable;
import java.util.ArrayList;
import edu.stanford.rsl.conrad.geometry.AbstractCurve;
import edu.stanford.rsl.conrad.geometry.AbstractShape;
import edu.stanford.rsl.conrad.geometry.shapes.simple.PointND;
import edu.stanford.rsl.conrad.geometry.transforms.Transform;
import edu.stanford.rsl.conrad.physics.materials.Material;
public class PhysicalObject implements Serializable{
private static final long serialVersionUID = -5731264279770114544L;
protected String nameString;
protected Material material;
protected AbstractShape shape;
protected double totalAbsorbedEnergy = 0;
PhysicalObject parent = null;
public PhysicalObject() {
this.nameString = null;
this.material = null;
this.shape = null;
}
public PhysicalObject(PhysicalObject o) {
this.nameString = o.nameString;
this.material = o.material;
this.shape = o.shape;
}
/**
* @return the nameString
*/
public String getNameString() {
return nameString;
}
/**
* @param nameString the nameString to set
*/
public void setNameString(String nameString) {
this.nameString = nameString;
}
/**
* @return the material
*/
public Material getMaterial() {
return material;
}
/**
* @param material the material to set
*/
public void setMaterial(Material material) {
this.material = material;
}
/**
* @return the shape
*/
public AbstractShape getShape() {
return shape;
}
/**
* @param shape the shape to set
*/
public void setShape(AbstractShape shape) {
this.shape = shape;
}
public ArrayList<PointND> intersect(AbstractCurve curve){
return shape.intersect(curve);
}
public ArrayList<PointND> intersectWithHitOrientation(AbstractCurve curve){
return shape.intersectWithHitOrientation(curve);
}
public void applyTransform(Transform t){
shape.applyTransform(t);
}
/**
* absorb the energy
* @param location in world coordinates
* @param energy [eV]
*/
public void absorbPhoton(PointND location, double energy){
totalAbsorbedEnergy += energy;
}
/**
* @return the totalAbsorbedEnergy in [eV]
*/
public double getTotalAbsorbedEnergy() {
return totalAbsorbedEnergy;
}
/**
* @param totalAbsorbedEnergy the totalAbsorbedEnergy to set
*/
public void setTotalAbsorbedEnergy(double totalAbsorbedEnergy) {
this.totalAbsorbedEnergy = totalAbsorbedEnergy;
}
/**
* @return the parent
*/
public PhysicalObject getParent() {
return parent;
}
/**
* @param parent the parent to set
*/
public void setParent(PhysicalObject parent) {
this.parent = parent;
}
}
/*
* Copyright (C) 2010-2014 Andreas Maier
* CONRAD is developed as an Open Source project under the GNU General Public License (GPL).
*/