Commit Graph

115 Commits

Author SHA1 Message Date
Michael Bayne 5acb7b1551 Use a less cracksmoking name. 2012-06-16 13:23:08 -07:00
Michael Bayne 920b55d1f9 Added a method for extracting the transform matrix. 2012-06-16 13:18:07 -07:00
Michael Bayne 278a947de1 Added a bunch of stuff at Stefan's request.
- Matrix3: add, addLocal, setToZero
- Matrix4: extractRotationScale, setToRotationScale, setToZero
- Vector3: abs, absLocal
- Vector4: negate, negateLocal, abs, absLocal, mult(v), multLocal(v)
2012-05-18 13:42:45 -07:00
Michael Bayne 00df755904 Added methods to get and set elements, rows, columns.
Also clarified the element naming scheme, which is mCOLROW.
2012-05-18 13:10:57 -07:00
Michael Bayne 6a45db8e35 Added Vector4.mult(Matrix4) and Matrix4.transform(Vector4). 2012-05-18 09:06:37 -07:00
Michael Bayne 65c870a0fe Some javadoc fixes. 2012-05-11 11:16:51 -07:00
Michael Bayne 1541c1529f Added method to obtain a vector from two points.
Whatdya know, I already need it.
2012-05-11 11:03:40 -07:00
Michael Bayne f2e7e7da88 Added XY, made IPoint.subtract return Point.
XY provides a common super-interface for IPoint and IVector for APIs that don't
care if you have a point or vector, and just want it's x/y coordinates.

Returning a vector when subtracting two points was clever and all, but turns
out to be annoying. More often, you're just adjusting a point and don't want to
switch to vector-baesd math. If we want an easy way to obtain a vector that is
the difference of two points we can add Vectors.subtract() or a new
constructor.
2012-05-11 10:56:39 -07:00
Michael Bayne d132e917ed Some lingering f to d conversions. 2012-05-11 08:41:13 -07:00
Michael Bayne 993b37ed19 Reinstate implementation detail notes plus {@inheritDoc}. 2012-05-11 08:40:30 -07:00
Michael Bayne c99825d35f Logic simplification in iceil/ifloor. 2012-05-11 08:33:53 -07:00
David Hoover e8c11aba87 Nix unused locals in matrix operations.
Compilers are presumably smart enough to throw away the bulk of that
automagically, but some were storing the return value of a method call
of some object that implemented an interface whic his a lot harder for
it to realize won't have side effects.
2012-05-10 22:08:35 -07:00
David Hoover 6d920c1211 Don't describe a particular implementation's details in the interface declaration. 2012-05-10 22:03:05 -07:00
David Hoover be0d761aa2 Mark @Overrides. 2012-05-10 22:03:05 -07:00
David Hoover 0a03eb6849 Whitespace & doc cleanup.
Tabs -> spaces, one space between sentences, capitalization fix, etc.
2012-05-10 22:02:37 -07:00
Michael Bayne 8bcd5c25c8 Be more flexible about the type of our target transform. 2012-05-03 08:56:35 -07:00
Michael Bayne 0daba7bc49 Added Vector.subtractLocal(x, y). 2012-05-01 09:54:31 -07:00
Michael Bayne 8524f5c911 Updated double versions. 2012-04-30 15:15:01 -07:00
Michael Bayne b7c2d6f420 Added Vector.subtract that takes individual components.
Closes #11.
2012-04-30 15:14:44 -07:00
Michael Bayne 7048d8231b Added Vector.cross() & co.
Closes #10.
2012-04-30 15:07:44 -07:00
Michael Bayne 1eeb1ee73a Fixed some isNaNs. 2012-04-30 11:33:30 -07:00
Michael Bayne a8c8c748bd Fixed some epsilons. 2012-04-30 11:31:55 -07:00
Michael Bayne 4c9a82979d Updated double versions of things. 2012-04-30 11:29:45 -07:00
Michael Bayne c8e4cbeca0 Added Transform.transformPoint(Vector), enabled Ray2 transforms.
I've tried to make a useful distinction between Point and Vector, but sometimes
you just want to use a Vector as a Point. I'm not going to add Point3 and try
to push this distinction into the third dimension, so I'll accommodate using
Vector as Point in 2D, and we'll just use Vector3 as a 3D point when needed.
2012-04-30 11:26:18 -07:00
Michael Bayne f8cce64528 Added Ray2 and Ray3. 2012-04-30 11:19:51 -07:00
Michael Bayne 17b19fe21b Added numerous 3D geometry classes; unabstracted Vector3, Matrix3. 2012-04-29 19:51:38 -07:00
Michael Bayne da49fe5362 Whitespace trimski! 2012-04-24 13:08:01 -07:00
Michael Bayne 0f9cc66388 Matrix3 and Vector3 for your three dimensional pleasures. 2012-04-24 10:23:39 -07:00
Michael Bayne cb8de43027 Manage our branches explicitly in clamp.
This provides saner behavior when clamping to "nonsense" ranges like [5, 3].
2012-04-03 15:30:18 -07:00
Michael Bayne c9c336309b Tidied javadocs, generated double implementation. 2011-12-20 19:09:19 -08:00
Tim Conkling d2bebff736 Functions for computing the distance between a Point and a Rectangle 2011-12-16 12:35:25 -08:00
Michael Bayne 060ff1b877 Make the upper bound exclusive in normalizeAngle(Positive). 2011-11-22 16:43:52 -08:00
Michael Bayne 274dd1858d Fix typo. Thanks Tim! 2011-11-19 16:45:25 -08:00
Michael Bayne cc5e599235 Match the argument ordering of the float version. 2011-11-16 13:56:33 -08:00
Michael Bayne 26cf80f38f Added an integer MathUtil with clamp(low, value, high). 2011-11-16 13:55:34 -08:00
Michael Bayne 403bafce13 Ray recommends using <= when comparing to epsilon.
This allows epsilon of 0 to work.
2011-10-11 13:17:05 -07:00
Michael Bayne b67c0bfc48 Added IVector.isZero(), Vectors.isZero(), isEpsilonZero(), isEpsilonEquals(),
and similar epsilon equals methods to Points.
2011-10-11 12:43:50 -07:00
Michael Bayne 2a1e86e77f Formatting. 2011-10-11 12:43:35 -07:00
Charlie Groves b54f684f45 Allow MathUtil.toString's decimals to be specified 2011-10-05 15:07:53 -07:00
Michael Bayne 5e344f9511 Avoid an extra division (and field update) in setScaleX/Y. Thanks Tim! 2011-09-15 16:24:29 -07:00
Michael Bayne c6321e4573 Version of circle code specialized on double. 2011-09-09 10:08:49 -07:00
Michael Bayne 2753a9523d Small tidying. 2011-09-09 10:07:34 -07:00
Tim Conkling c82f38fa97 It helps to get the math right 2011-09-09 10:05:11 -07:00
Tim Conkling 1916a7e8e7 Circle implementation 2011-09-09 10:05:02 -07:00
Michael Bayne 42d4353788 Various Vector enhancements.
- Moved Vector.direction to Point.direction as that makes more sense. If you
  want to know the angle of the vector between two points, you should do that
  on points, not vectors.

- Added Vector.angle() which returns the angle of the vector (in polar
  coordinates), which matches Vector.length() which returns the magnitude of
  the vector (in polar coordinates).

- Added Vectors.fromPolar to create a vector from polar coordinates, and added
  Vector.setLength and Vector.setAngle to set the one whilst preserving the
  other.
2011-09-02 15:55:05 -07:00
Michael Bayne 49eafa5653 Vector.angle -> Vector.angleBetween. 2011-09-02 15:23:13 -07:00
Michael Bayne 0644fc6f59 Added Point.subtract, for creating a vector from endpoints. 2011-09-02 15:21:17 -07:00
Michael Bayne ffd2f10b24 Changed Vector.mult to Vector.scale and clarified the javadocs.
As Tim points out, vector multiplication implies dot or cross products. These
methods are scaling, not multiplying. Cross product coming in a future commit.
2011-09-02 15:15:06 -07:00
Michael Bayne cc1c1d3f51 Use super-source to provide our GWT-specialized Platform.java. 2011-08-13 09:32:34 -07:00
Michael Bayne c8d591c8a2 Converted the float bits to double since they've substantially evolved. 2011-08-12 11:00:36 -07:00