87d442772c
geom/ops: remove point-point distance via sfinae
...
point-point distance is already defined outside of the geom namespace
2018-04-16 16:00:32 +10:00
a8b3737b8b
geom/ray: remove constructors so we have a POD
2018-04-16 16:00:32 +10:00
ce246f8aa2
ellipse: add ray distance query
2018-04-16 16:00:32 +10:00
63fb76c24c
geom/ray: ensure direction is normalised after transform
2018-04-16 16:00:35 +10:00
4dcd10243c
geom/ray: add validator specialisation
2018-04-16 16:00:32 +10:00
2eb0b429ef
geom/sphere: style
2018-04-16 16:00:32 +10:00
05b1c2dd80
geom/ray: add matrix multiply operator
2018-04-16 16:00:32 +10:00
00515078f9
ray: move convenience typedefs directly after type decl
2018-04-16 16:00:32 +10:00
44b3d8d628
ray: add deduction guides
2018-04-16 16:00:32 +10:00
bef0aa4929
sphere: move ray tests into sphere's unit
2018-04-16 16:00:32 +10:00
4e558ce9a9
geom/cylinder: add convenience cylinder3f typedef
2018-04-11 15:10:16 +10:00
40cf869d7e
geom/tri: add triangle area formula
2018-04-09 12:49:09 +10:00
a4634a771b
g/frustum: simplify aabb intersection test
2018-03-28 20:42:43 +11:00
14e2fc5bd5
geom/ray: use infinity, not nan, to signal no intersection
2018-03-27 16:06:34 +11:00
2d7e3e5d7d
build: prefer iosfwd over iostream
2018-03-22 16:11:13 +11:00
0646b1c13b
geom: move distance/intersection tests outside classes
2018-03-13 23:27:37 +11:00
b1276519ef
geom: add simple frustum class
2018-03-13 22:37:40 +11:00
47efd293c9
geom/plane: use a vector for coefficients
...
this simplifies usage of the coefficients in other routines
2018-03-13 22:37:09 +11:00
95d13b9fe4
geom/aabb: rename p0,p1 to lo,hi
...
this makes their meaning more explicit
2018-03-13 15:42:29 +11:00
5bc2cf12d4
maths: use true constexpr values for pi
2018-03-12 23:06:15 +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
34788756d2
build: don't use './' as an include prefix
...
GCC produces ODR error when including paths of the form './foo' and
'foo' in the same binary. Rather than managing duplication we just
universally pick the absolute form over the relative form.
2017-11-22 16:49:37 +11:00
2cb5fd7391
geom/sample: prefer inline impl over ipp files
2017-08-29 12:28:54 +10:00
a91df8895d
geom: prefer inline implementation over ipp
2017-08-29 12:19:58 +10:00
07d74187c5
geom/aabb: don't write the class name with ostream operators
2017-08-24 17:52:59 +10:00
e573c0bcc6
geom/aabb: style and headers
2017-08-24 17:52:46 +10:00
1277975708
geom/aabb: add brief class description
2017-08-24 17:27:46 +10:00
f53b547a40
geom/aabb: prefer to use vector operations over loops
2017-08-24 17:27:31 +10:00
e82d770d2b
geom/aabb: move inclusive point query into header
2017-08-24 17:21:23 +10:00
d47f52b63f
geom/aabb: use vector operations for inclusive test
2017-08-24 17:12:17 +10:00
9fe8998476
geom/aabb: rename overlaps as inclusive for consistency
2017-08-24 17:11:48 +10:00
94e02fced4
geom/aabb: make the equality operator a free function
2017-08-24 17:08:37 +10:00
1cea1600d3
geom/aabb: change contract/expand semantics to mirror region
2017-08-24 17:01:16 +10:00
f77cdabaee
geom/aabb: dont use mutating function naming convention
2017-08-24 16:47:02 +10:00
cd1bb730f2
geom/aabb: rename AABB to aabb
2017-08-24 16:43:54 +10:00
359702fb86
geom/aabb: remove mutating operators
2017-08-24 16:25:57 +10:00
e134d911e6
geom/ray: reinsert is_normalised check for direction param
2017-08-24 12:27:18 +10:00
1d988608c1
geom/ray: add an (explicitly) default constructor
2017-08-22 17:23:36 +10:00
2576061b26
ray: extract make member function as free function
...
for consistency with other make_foo functions. to be replaced with
deduction guides in the future.
2017-08-22 15:46:49 +10:00
353cf839d4
use nested namespace declarations
2017-01-05 15:06:49 +11:00
e5d44d0c6d
coord: instantiate signed types
2016-10-25 17:50:11 +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
606a9c4eb8
coord/ops: use free functions for normalisations
2016-08-11 14:58:46 +10:00
00eca4445b
debug: use less complex specialistion for validator
2016-08-10 17:36:25 +10:00
116ad04a1f
build: use ostream/istream over iostream
2016-08-04 17:42:41 +10:00
08536765b6
Merge branch 'crypto'
2016-06-20 18:08:46 +10:00
24f4050ea8
geom/aabb: add missing required header
2016-06-20 18:03:41 +10:00
67a5184a9d
build: add missing includes
...
detected under libstdc++ from gcc-6.0
2016-04-28 15:02:16 +10:00
9bbcfa6e63
make header paths more explicit
2016-04-05 11:06:35 +10:00
7f4cf49931
iterator: use infix_iterator for coord ostream
2016-03-11 12:48:19 +11:00
7b083df977
maths: tighten up type requirements for almost_equal
...
almost_equal only operates on two reals, or two integers (and even then
only on the same signedness).
2015-11-13 17:18:10 +11:00
1de33ce53c
debug: use new namespace
2015-10-29 10:45:42 +11:00
b47cb6c560
g/cylinder: use (barely) saner member names
2015-10-15 00:38:54 +11:00
ac06282f03
geom: add more primitives
2015-10-14 15:32:53 +11:00
20bafa2cfb
geom: move geometry primitives to own namespace
2015-10-13 18:19:47 +11:00