]> git.tdb.fi Git - libs/math.git/log
libs/math.git
11 years agoAdd a bounding sphere class
Mikko Rasa [Wed, 11 Sep 2013 07:15:02 +0000 (10:15 +0300)]
Add a bounding sphere class

Shapes don't produce bounding spheres yet, but it can be used for other
purposes.

11 years agoAdd missing return statements
Mikko Rasa [Thu, 5 Sep 2013 15:24:19 +0000 (18:24 +0300)]
Add missing return statements

11 years agoNegation contains a pointer and needs copy c'tor and operator=
Mikko Rasa [Sat, 25 May 2013 23:14:45 +0000 (02:14 +0300)]
Negation contains a pointer and needs copy c'tor and operator=

11 years agoPut ray and bounding box transformations in AffineTransformation
Mikko Rasa [Fri, 24 May 2013 06:06:29 +0000 (09:06 +0300)]
Put ray and bounding box transformations in AffineTransformation

This makes them easier to use elsewhere, in cases where creating a
TransformedShape would be overkill.

11 years agoTake care not to count initialization values when finding min/max
Mikko Rasa [Thu, 23 May 2013 19:26:28 +0000 (22:26 +0300)]
Take care not to count initialization values when finding min/max

11 years agoAdd testcases for BoundingBox
Mikko Rasa [Thu, 23 May 2013 09:12:54 +0000 (12:12 +0300)]
Add testcases for BoundingBox

11 years agoSome bounding box logic fixes
Mikko Rasa [Thu, 23 May 2013 09:01:07 +0000 (12:01 +0300)]
Some bounding box logic fixes

11 years agoMake CompositeShape::get_intersections work with null points
Mikko Rasa [Wed, 22 May 2013 20:03:07 +0000 (23:03 +0300)]
Make CompositeShape::get_intersections work with null points

This was a bit tricky, since it's necessary to inspect the points returned
by component shapes to see if they're actually on the composite surface.
To that end, a temporary buffer is allocated.  This is most likely used in
interactive point-and-pick situations, so the performance loss should not
be significant.

11 years agoImplement the missing assignment operator in CompositeShape
Mikko Rasa [Wed, 22 May 2013 20:02:00 +0000 (23:02 +0300)]
Implement the missing assignment operator in CompositeShape

Also rewrite the copy constructor in a slightly different way.

11 years agoPut the common #includes in shape.h
Mikko Rasa [Wed, 22 May 2013 19:56:21 +0000 (22:56 +0300)]
Put the common #includes in shape.h

Almost every shape needs these, so it's not worth it to try and avoid
unnecessary headers in the base class.

11 years agoFix a case in ExtrudedShape with certain ray parameters
Mikko Rasa [Wed, 22 May 2013 19:48:45 +0000 (22:48 +0300)]
Fix a case in ExtrudedShape with certain ray parameters

A ray starting outside of the length of the shape and pointing away from
it caused a local ray with a negative limit to be constructed.

11 years agoImplement bounding boxes with a separate class
Mikko Rasa [Wed, 22 May 2013 17:34:01 +0000 (20:34 +0300)]
Implement bounding boxes with a separate class

This solves several problems with them, including positioning off the
origin and bounding boxes of negated shapes.

11 years agoRewrite composite shape vector constructors with iterator ranges
Mikko Rasa [Wed, 22 May 2013 13:14:16 +0000 (16:14 +0300)]
Rewrite composite shape vector constructors with iterator ranges

Besides the issue of favoring one container type over others, constness
of the contents causes it to be a different, incompatible type.  Iterators
solve this in an elegant way.

11 years agoAdd a HalfSpace shape
Mikko Rasa [Wed, 22 May 2013 12:31:57 +0000 (15:31 +0300)]
Add a HalfSpace shape

11 years agoMake the check_intersection function non-virtual
Mikko Rasa [Tue, 21 May 2013 18:41:15 +0000 (21:41 +0300)]
Make the check_intersection function non-virtual

Almost all shapes were implementing it with a call to get_intersections,
so might as well make the base class do that.  Performance loss is likely
negligible.

11 years agoProperly sort intersection points for complex shapes
Mikko Rasa [Tue, 21 May 2013 17:53:09 +0000 (20:53 +0300)]
Properly sort intersection points for complex shapes

Code structure in simpler shapes have been adjusted to keep it similar.

11 years agoAdd shapes representing set operations
Mikko Rasa [Tue, 21 May 2013 15:39:37 +0000 (18:39 +0300)]
Add shapes representing set operations

11 years agoMiscellaneous fixes, mostly stylistic
Mikko Rasa [Tue, 21 May 2013 13:40:04 +0000 (16:40 +0300)]
Miscellaneous fixes, mostly stylistic

11 years agoVerify that parameters make sense
Mikko Rasa [Tue, 21 May 2013 13:35:40 +0000 (16:35 +0300)]
Verify that parameters make sense

11 years agoMath function usage fixes
Mikko Rasa [Tue, 21 May 2013 13:32:49 +0000 (16:32 +0300)]
Math function usage fixes

Add using declarations and #includes where needed, and clean up some
unnecessary ones.  abs() is particularly annoying, as the int version
easily gets into the global namespace and doesn't give a warning if
used with floats or doubles.

11 years agoTransform normals correctly
Mikko Rasa [Tue, 21 May 2013 13:19:56 +0000 (16:19 +0300)]
Transform normals correctly

11 years agoAdd a class for extruded shapes
Mikko Rasa [Mon, 20 May 2013 20:12:04 +0000 (23:12 +0300)]
Add a class for extruded shapes

11 years agoAdd a distance limit to Ray
Mikko Rasa [Mon, 20 May 2013 16:35:31 +0000 (19:35 +0300)]
Add a distance limit to Ray

11 years agoRecord distance in SurfacePoint
Mikko Rasa [Mon, 20 May 2013 16:33:20 +0000 (19:33 +0300)]
Record distance in SurfacePoint

11 years agoGive Vector constructors from one higher/lower dimension
Mikko Rasa [Mon, 20 May 2013 16:12:24 +0000 (19:12 +0300)]
Give Vector constructors from one higher/lower dimension

These replace the augment/reduce_vector functions, which were in a rather
odd place.

11 years agoAdd basic description for all classes
Mikko Rasa [Sun, 19 May 2013 19:14:39 +0000 (22:14 +0300)]
Add basic description for all classes

11 years agoAdd more collision check functions for shapes
Mikko Rasa [Sun, 19 May 2013 18:32:09 +0000 (21:32 +0300)]
Add more collision check functions for shapes

11 years agoUse a cached inverse transformation in TransformedShape
Mikko Rasa [Sun, 19 May 2013 18:25:47 +0000 (21:25 +0300)]
Use a cached inverse transformation in TransformedShape

11 years agoAdd multiplication and inversion operations to AffineTransformation
Mikko Rasa [Sun, 19 May 2013 18:14:28 +0000 (21:14 +0300)]
Add multiplication and inversion operations to AffineTransformation

11 years agoSome more member mis-use fixes
Mikko Rasa [Sun, 19 May 2013 18:08:13 +0000 (21:08 +0300)]
Some more member mis-use fixes

11 years agoDon't qualify potentially overloaded functions with the std namespace
Mikko Rasa [Sun, 19 May 2013 17:38:22 +0000 (20:38 +0300)]
Don't qualify potentially overloaded functions with the std namespace

Instead put a using std::func before the call.  This makes things work if
the template argument is a user-defined type with these functions defined
in another namespace.

11 years agoTransformedShape should derive from Shape
Mikko Rasa [Sun, 19 May 2013 16:27:22 +0000 (19:27 +0300)]
TransformedShape should derive from Shape

11 years agoAdd four-component members and constructor to Vector
Mikko Rasa [Sat, 18 May 2013 18:33:37 +0000 (21:33 +0300)]
Add four-component members and constructor to Vector

11 years agoFix AffineTransformation::translate
Mikko Rasa [Sat, 18 May 2013 18:32:52 +0000 (21:32 +0300)]
Fix AffineTransformation::translate

Translation coordinates go in the last column, not in the last row.

11 years agoFix Matrix template copy constructor
Mikko Rasa [Sat, 18 May 2013 18:31:41 +0000 (21:31 +0300)]
Fix Matrix template copy constructor

A different version of the template is a different class, so the data
member can't be accessed directly.

11 years agoImprovements to the Angle class
Mikko Rasa [Fri, 17 May 2013 11:12:38 +0000 (14:12 +0300)]
Improvements to the Angle class

Add comparison operators and wrapping functions.

Use turn instead of circle in the factory functions and provide an
interface to and from turns.

11 years agoRedesign the Vector interface
Mikko Rasa [Fri, 17 May 2013 10:55:57 +0000 (13:55 +0300)]
Redesign the Vector interface

The constructors from two and three components are now provided directly
by the Vector template, so Vector2 and Vector3 are no longer needed.  In
addition, two- and three-component vectors now have named members.

11 years agoSome basic test cases
Mikko Rasa [Wed, 15 May 2013 07:28:00 +0000 (10:28 +0300)]
Some basic test cases

11 years agoBeginnings of a geometry library
Mikko Rasa [Wed, 15 May 2013 07:27:06 +0000 (10:27 +0300)]
Beginnings of a geometry library

11 years agoAdd a Vector2 class
Mikko Rasa [Tue, 14 May 2013 20:11:38 +0000 (23:11 +0300)]
Add a Vector2 class

11 years agoUse the correct multiplication operator
Mikko Rasa [Tue, 14 May 2013 18:53:55 +0000 (21:53 +0300)]
Use the correct multiplication operator

11 years agoMove some simple function definitions inside the class declarations
Mikko Rasa [Tue, 14 May 2013 18:53:05 +0000 (21:53 +0300)]
Move some simple function definitions inside the class declarations

11 years agoAnother big batch of stuff
Mikko Rasa [Mon, 13 May 2013 21:11:38 +0000 (00:11 +0300)]
Another big batch of stuff

This includes most of the missing things.

11 years agoMinor fixes
Mikko Rasa [Sat, 27 Apr 2013 17:05:11 +0000 (20:05 +0300)]
Minor fixes

11 years agoRename the library to mspmath and make linal a sublibrary
Mikko Rasa [Sat, 27 Apr 2013 16:51:08 +0000 (19:51 +0300)]
Rename the library to mspmath and make linal a sublibrary

12 years agoBasic vector and matrix classes
Mikko Rasa [Thu, 30 Aug 2012 20:41:33 +0000 (23:41 +0300)]
Basic vector and matrix classes

Some classes are still incomplete