/*******************************************************************************
* This file is part of RedReader.
*
* RedReader 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 3 of the License, or
* (at your option) any later version.
*
* RedReader 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 RedReader. If not, see <http://www.gnu.org/licenses/>.
******************************************************************************/
package org.quantumbadger.redreader.common;
import android.view.MotionEvent;
public class MutableFloatPoint2D {
public float x, y;
public void reset() {
x = 0;
y = 0;
}
public void set(final MotionEvent event, final int pointerIndex) {
x = event.getX(pointerIndex);
y = event.getY(pointerIndex);
}
public void set(MutableFloatPoint2D other) {
x = other.x;
y = other.y;
}
public void set(float x, float y) {
this.x = x;
this.y = y;
}
public void add(final MutableFloatPoint2D rhs, final MutableFloatPoint2D result) {
result.x = x + rhs.x;
result.y = y + rhs.y;
}
public void sub(final MutableFloatPoint2D rhs, final MutableFloatPoint2D result) {
result.x = x - rhs.x;
result.y = y - rhs.y;
}
public void add(final MutableFloatPoint2D rhs) {
add(rhs, this);
}
public void sub(final MutableFloatPoint2D rhs) {
sub(rhs, this);
}
public void scale(double factor) {
x *= factor;
y *= factor;
}
public double euclideanDistanceTo(final MutableFloatPoint2D other) {
final float xDistance = x - other.x;
final float yDistance = y - other.y;
return Math.sqrt(xDistance * xDistance + yDistance * yDistance);
}
public float distanceSquared() {
return x*x + y*y;
}
}