content: package edu.stanford.rsl.conrad.geometry;
  
  
  import edu.stanford.rsl.conrad.numerics.SimpleVector;
  
  /**
   * Class to model a coordinate axis;
   * @author Rotimi X Ojo
   */
  public class Axis {
  
  	private SimpleVector axis;
  	
  	public Axis(double ... coordinates){
  		axis = new SimpleVector(coordinates).normalizedL2();
  	}
  	
  	public Axis(SimpleVector axisvec){
  		axis = axisvec.normalizedL2();
  	}
  	
  	public Axis(Axis a){
  		axis = (a.axis != null) ? a.axis.clone() : null;
  	}
  
  	/**
  	 * @return a unit vector defining an axis
  	 */
  	public SimpleVector getAxisVector(){
  		return axis.clone();
  	}
  	
  	/**
  	 * @return the dimension of the axis vector
  	 */
  	public int dimension() {
  		return axis.getLen();
  	}
  
  	public void setAxis(SimpleVector newAxis) {
  		axis = newAxis.normalizedL2();		
  	}	
  	
  	@Override
  	public Axis clone(){
  		return new Axis(this);
  	}
  
  }
  /*
   * Copyright (C) 2010-2014 Rotimi X Ojo
   * CONRAD is developed as an Open Source project under the GNU General Public License (GPL).
  */