Added Vector.cross() & co.

Closes #10.
This commit is contained in:
Michael Bayne
2012-04-30 15:07:44 -07:00
parent 1eeb1ee73a
commit 7048d8231b
3 changed files with 27 additions and 0 deletions
@@ -17,6 +17,17 @@ public abstract class AbstractVector implements IVector
return x()*other.x() + y()*other.y();
}
@Override // from interface IVector
public Vector cross (IVector other) {
return cross(other, new Vector());
}
@Override // from interface IVector
public Vector cross (IVector other, Vector result) {
float x = x(), y = y(), ox = other.x(), oy = other.y();
return result.set(y*ox - x*oy, x*oy - y*ox);
}
@Override // from interface IVector
public Vector negate () {
return negate(new Vector());
+9
View File
@@ -18,6 +18,15 @@ public interface IVector
/** Computes and returns the dot product of this and the specified other vector. */
float dot (IVector other);
/** Computes the cross product of this and the specified other vector.
* @return a new vector containing the result. */
Vector cross (IVector other);
/** Computes the cross product of this and the specified other vector, placing the result in
* the object supplied.
* @return a reference to the result, for chaining. */
Vector cross (IVector other, Vector result);
/** Negates this vector.
* @return a new vector containing the result. */
Vector negate ();
+7
View File
@@ -29,6 +29,13 @@ public class Vector extends AbstractVector
public Vector () {
}
/** Computes the cross product of this and the specified other vector, storing the result in
* this vector.
* @return a reference to this vector, for chaining. */
public Vector crossLocal (IVector other) {
return cross(other, this);
}
/** Negates this vector in-place.
* @return a reference to this vector, for chaining. */
public Vector negateLocal () {