geom/aabb: change contract/expand semantics to mirror region
This commit is contained in:
parent
f77cdabaee
commit
1cea1600d3
@ -89,27 +89,19 @@ aabb<S,T>
|
|||||||
aabb<S,T>::expand (vector<S,T> mag) const noexcept
|
aabb<S,T>::expand (vector<S,T> mag) const noexcept
|
||||||
{
|
{
|
||||||
CHECK (all (mag >= T{0}));
|
CHECK (all (mag >= T{0}));
|
||||||
CHECK (all (mag < p1 - p0));
|
|
||||||
|
|
||||||
return {
|
return { p0 - mag, p1 + mag };
|
||||||
p0 - mag / T{2},
|
|
||||||
p1 + mag / T{2}
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
template <size_t S, typename T>
|
template <size_t S, typename T>
|
||||||
aabb<S,T>
|
aabb<S,T>
|
||||||
aabb<S,T>::expand (T t) const noexcept
|
aabb<S,T>::expand (T mag) const noexcept
|
||||||
{
|
{
|
||||||
CHECK_GE (t, T{0});
|
CHECK_GE (mag, T{0});
|
||||||
CHECK (all (t < p1 - p0));
|
|
||||||
|
|
||||||
return {
|
return { p0 - mag, p1 + mag };
|
||||||
p0 - t / T{2},
|
|
||||||
p1 + t / T{2}
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -118,13 +110,10 @@ template <size_t S, typename T>
|
|||||||
aabb<S,T>
|
aabb<S,T>
|
||||||
aabb<S,T>::contract (util::vector<S,T> mag) const noexcept
|
aabb<S,T>::contract (util::vector<S,T> mag) const noexcept
|
||||||
{
|
{
|
||||||
CHECK (all (mag > T{0}));
|
CHECK (all (mag >= T{0}));
|
||||||
CHECK (all (mag <= p1 - p0));
|
CHECK (all (2 * mag <= p1 - p0));
|
||||||
|
|
||||||
return {
|
return { p0 + mag, p1 - mag };
|
||||||
p0 + mag / T{2},
|
|
||||||
p1 - mag / T{2}
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -134,12 +123,9 @@ aabb<S,T>
|
|||||||
aabb<S,T>::contract (T mag) const noexcept
|
aabb<S,T>::contract (T mag) const noexcept
|
||||||
{
|
{
|
||||||
CHECK_GE (mag, T{0});
|
CHECK_GE (mag, T{0});
|
||||||
CHECK (all (mag <= p1 - p0));
|
CHECK (all (2 * mag <= p1 - p0));
|
||||||
|
|
||||||
return {
|
return { p0 + mag, p1 - mag };
|
||||||
p0 + mag / T{2},
|
|
||||||
p1 - mag / T{2}
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ main (int, char**)
|
|||||||
const aabb2f val { { 2, 2 }, { 8, 8 } };
|
const aabb2f val { { 2, 2 }, { 8, 8 } };
|
||||||
const aabb2f res { { 3, 3 }, { 7, 7 } };
|
const aabb2f res { { 3, 3 }, { 7, 7 } };
|
||||||
|
|
||||||
tap.expect_eq (val.contract (2.f), res, "over contraction");
|
tap.expect_eq (val.contract (1.f), res, "over contraction");
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -25,7 +25,7 @@ main (int, char**)
|
|||||||
const aabb2f val { { 2, 2 }, { 8, 8 } };
|
const aabb2f val { { 2, 2 }, { 8, 8 } };
|
||||||
const aabb2f res { { 1, 1 }, { 9, 9 } };
|
const aabb2f res { { 1, 1 }, { 9, 9 } };
|
||||||
|
|
||||||
tap.expect_eq (val.expand (2.f), res, "expansion");
|
tap.expect_eq (val.expand (1.f), res, "expansion");
|
||||||
}
|
}
|
||||||
|
|
||||||
return tap.status ();
|
return tap.status ();
|
||||||
|
Loading…
Reference in New Issue
Block a user