26 #ifndef SAGA2_TILEVECT_H 27 #define SAGA2_TILEVECT_H 33 inline TilePoint randomVector(TilePoint minv, TilePoint maxv) {
35 RANDOM(minv.u, maxv.u),
36 RANDOM(minv.v, maxv.v),
37 RANDOM(minv.z, maxv.z));
42 inline TilePoint rightVector(TilePoint tp,
bool which = 0) {
44 tp.v * (which ? 1 : -1),
45 tp.u * (which ? -1 : 1),
51 inline void setMagnitude(TilePoint &tp, int32 newMag) {
53 int32 nu = (tp.u * newMag) / tp.magnitude();
54 int32 nv = (tp.v * newMag) / tp.magnitude();
55 tp = TilePoint(nu, nv, tp.z);
57 tp = TilePoint(1, 1, 0);
68 inline bool sideOf(
const TilePoint &p1,
70 const TilePoint &pp) {
74 m = (p1.v - p2.v) / (p1.u - p2.u);
75 return m * pp.u + p1.v > m * p1.u + pp.v;
82 inline bool sameSide(
const TilePoint &p1,
85 const TilePoint &pb) {
86 return sideOf(p1, p2, pa) == sideOf(p1, p2, pb);
91 inline TilePoint MinTilePoint(
93 const TilePoint &c2) {
94 return TilePoint(
MIN(c1.u, c2.u),
MIN(c1.v, c2.v),
MIN(c1.z, c2.z));
97 inline TilePoint MinTilePoint(
const TilePoint &c1,
const TilePoint &c2,
const TilePoint &c3) {
98 return MinTilePoint(MinTilePoint(c1, c2), c3);
101 inline TilePoint MinTilePoint(
const TilePoint &c1,
const TilePoint &c2,
102 const TilePoint &c3,
const TilePoint &c4) {
103 return MinTilePoint(MinTilePoint(c1, c2), MinTilePoint(c3, c4));
108 inline TilePoint MaxTilePoint(
110 const TilePoint &c2) {
111 return TilePoint(
MAX(c1.u, c2.u),
MAX(c1.v, c2.v),
MAX(c1.z, c2.z));
114 inline TilePoint MaxTilePoint(
const TilePoint &c1,
const TilePoint &c2,
const TilePoint &c3) {
115 return MaxTilePoint(MaxTilePoint(c1, c2), c3);
118 inline TilePoint MaxTilePoint(
const TilePoint &c1,
const TilePoint &c2,
119 const TilePoint &c3,
const TilePoint &c4) {
120 return MaxTilePoint(MaxTilePoint(c1, c2), MaxTilePoint(c3, c4));
T MIN(T a, T b)
Definition: util.h:61
T MAX(T a, T b)
Definition: util.h:64