/******************************************************************************* * Copyright (c) 2009-2013 CWI * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html *******************************************************************************/ package org.rascalmpl.eclipse.library.vis.util.vector; import static org.rascalmpl.eclipse.library.vis.util.vector.Dimension.X; import static org.rascalmpl.eclipse.library.vis.util.vector.Dimension.Y; public abstract class TwoDimensionalDouble extends ReadOnlyTwoDimensionalDouble{ double x, y; public TwoDimensionalDouble(){ x = y = 0; } public TwoDimensionalDouble(double x, double y) { this.x = x; this.y = y; } public TwoDimensionalDouble(TwoDimensionalDouble rhs) { this.x = rhs.x; this.y = rhs.y; } public double getX(){ return x; } public double getY(){ return y; } public void setX(double d){ x = d; } public void setY(double d){ y = d; } public void set(double x, double y){ setX(x); setY(y); } public void set(TwoDimensionalDouble d){ setX(d.getX()); setY(d.getY()); } public void set(Dimension d, double val){ switch(d){ case X: setX(val); break; case Y: setY(val); break; } } // some convenience functions public void clear(){ x = y = 0.0; } public void add(ReadOnlyTwoDimensionalDouble rhs){ setX(rhs.getX() + getX()); setY(rhs.getY() + getY()); } public void sub(ReadOnlyTwoDimensionalDouble rhs){ setX(getX() - rhs.getX()); setY(getY() - rhs.getY()); } public void setMax(ReadOnlyTwoDimensionalDouble rhs){ setMax(X,rhs.getX()); setMax(Y,rhs.getY()); } public void setMax(Dimension d, double val){ set(d, Math.max(val, get(d))); } public void setMin(Dimension d, double val){ set(d, Math.min(val, get(d))); } public void setMinMax(Dimension d, double min, double max){ set(d, Math.max(min,Math.min(max, get(d)))); } public void add(Dimension d, double val){ set(d, val + get(d)); } }