Commit Graph

68 Commits

Author SHA1 Message Date
837b948435 Header cleanup using include-what-you-use 2020-07-01 17:02:44 +10:00
f6056153e3 rename root namespace from util to cruft
This places, at long last, the core library code into the same namespace
as the extended library code.
2018-08-05 14:42:02 +10:00
803acc9a87 relicense under MPL-2.0 2018-08-04 15:14:06 +10:00
d011c60359 point: add convenience centroid function 2018-04-26 16:30:16 +10:00
eb2b85c4f6 point: add query for furthest pair 2018-04-18 21:48:55 +10:00
76c809f031 point/vector: homog no longer takes a size parameter 2018-04-17 14:26:23 +10:00
f0a05e06e2 point: add forwarding assignment operator 2018-04-16 16:00:32 +10:00
e7a76081e0 point: don't directly iterate over data 2018-04-16 16:00:32 +10:00
24a530e23e maths: remove pow2 function
pow2 has been used enough times to mean 2^x and x^2 that it's not worth
the ambiguity. just use pow(b,e) directly.
2018-04-09 12:30:22 +10:00
ba19aebe88 point/vector: give homog a default dimensionality 2018-03-06 18:13:46 +11:00
0e3fa05f05 build: migrate from ipp files to pure hpp files
ipp files weren't a great way of keeping things clean, and IDEs have a
little trouble dealing with the split configuration. this simplifies
debugging a great deal.
2018-02-28 11:49:13 +11:00
0351313c36 Merge branch 'master' into coord 2017-11-23 17:24:11 +11:00
d3f434b523 coord: make template parameters more flexible
The coordinate system was unable to support types that prohibited
redim or retype operations. Additionally, the `tags' type used for
providing named data parameters was unwiedly.

We remove much of the dependance on template template parameters in the
defined operations and instead define these in terms of a template
specialisation of is_coord.

The tag types were replaced with direct specialisation of the `store'
struct by the primary type, and passing this type through use of the
CRTP.
2017-11-22 17:03:00 +11:00
1f337ef964 point: add min/max convenience methods
these create the smallest/largest expressible coordinates
2017-07-28 14:22:21 +10:00
62491b4cec coord: generalise point hashing for all coord types
move the point hashing function into general coord operations. convert
from using std::hash to something we've made so that we know it's going
to spread the bits a little (unlike the default identity of GCC 7).
2017-06-29 16:33:53 +10:00
08b57c9716 point: add docstrings for distance metrics 2017-05-24 15:15:40 +10:00
f6116eb63e point: prefer constexpr functions over static variables 2016-12-12 17:06:04 +11:00
ec78216813 coord: prefer int/unsigned to intmax/size_t 2016-10-25 17:46:36 +11:00
9a798446b5 build: remove unnecessary includes
discovered with include-what-you-use
2016-10-12 15:08:22 +11:00
7f4cf49931 iterator: use infix_iterator for coord ostream 2016-03-11 12:48:19 +11:00
f7a1ead518 point: remove constexpr from functions relying on cmath 2015-10-06 15:20:06 +11:00
31b59df97a point: add constant sized convenience typedefs 2015-10-06 15:19:06 +11:00
c7637fd627 point: add octile distance function 2015-09-22 18:32:11 +10:00
864cedc257 point: add single dimensional typedefs 2015-09-21 15:26:57 +10:00
21b51a5011 point: make distance metrics constexpr 2015-09-15 21:06:43 +10:00
4ea5896d21 coord: use template typedefs 2015-07-24 01:34:44 +10:00
9b548e56d9 point: convert distance member functions to functions 2015-06-01 15:29:24 +10:00
012f8107c6 point: operate on value types, not references 2015-04-15 14:14:01 +10:00
2658b41ea1 relicence under Apache-2.0 2015-04-13 18:05:28 +10:00
bd88832df3 coord: move cast/redim operations to coord 2015-04-09 17:58:47 +10:00
5428c93b9a coord: pass client class to coord base
allows common typesafe implementation of cast and redim
2015-04-09 17:47:35 +10:00
5627c573eb coord: use size_t/intmax_t for u and i suffixes
size_t matches array indices we are likely to be used in conjuction with
these types.
2015-04-07 16:53:46 +10:00
8a0eee50e3 point: add from function 2015-03-07 03:20:07 +11:00
e461654de8 coord: split coord header into components 2015-03-06 01:46:01 +11:00
99ba406b4d coord: move base coord class into main namespace 2015-03-06 01:16:14 +11:00
439bb19679 coord: move operators out of subclasses 2015-03-06 01:09:58 +11:00
e5d99b3370 coord: use stricter member variable names
use tags for the core coordinate structures to specify what names should
be used for the data variables (in the data union)
2015-03-03 04:11:30 +11:00
6ac02a9920 point: add homogenous redim 2015-02-19 13:29:16 +11:00
049aaf84c9 point: add redim with constant 2015-02-19 13:19:02 +11:00
60f2a7e00d point: add self-division operator 2015-02-19 13:18:28 +11:00
6abfd252d9 coord: move free maths func from point to vector 2015-01-28 14:59:33 +11:00
1b19dadd40 point: add free multiply operator 2015-01-21 23:40:13 +11:00
f64e232201 point: point subtraction should give a vector 2015-01-19 19:14:53 +11:00
319a8ce616 coord: use inherited class for data definitions
keep as many operations centralised in the base coord class as possible.
2015-01-19 19:13:52 +11:00
2210db9c4e point: add a cast method 2015-01-19 13:27:13 +11:00
09f5894d0c point: add scalar division operation 2015-01-15 14:04:51 +11:00
917ab8fc8e point: add redim with fill 2015-01-13 18:41:51 +11:00
64c11bdcb0 point/vector: use coord constructors 2015-01-13 18:41:51 +11:00
dadfe6173e point: add convenience typedef point4f 2015-01-13 18:41:51 +11:00
3d3c1a5f2f build: instantiate templates in declared namespace 2015-01-10 19:40:32 +11:00