26#ifndef SAGA2_TILEVECT_H
27#define SAGA2_TILEVECT_H
33inline TilePoint randomVector(TilePoint minv, TilePoint maxv) {
35 RANDOM(minv.u, maxv.u),
36 RANDOM(minv.v, maxv.v),
37 RANDOM(minv.z, maxv.z));
42inline TilePoint rightVector(TilePoint tp,
bool which = 0) {
44 tp.v * (which ? 1 : -1),
45 tp.u * (which ? -1 : 1),
51inline 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);
68inline 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;
82inline bool sameSide(
const TilePoint &p1,
85 const TilePoint &pb) {
86 return sideOf(p1, p2, pa) == sideOf(p1, p2, pb);
91inline TilePoint MinTilePoint(
93 const TilePoint &c2) {
94 return TilePoint(
MIN(c1.u, c2.u),
MIN(c1.v, c2.v),
MIN(c1.z, c2.z));
97inline TilePoint MinTilePoint(
const TilePoint &c1,
const TilePoint &c2,
const TilePoint &c3) {
98 return MinTilePoint(MinTilePoint(c1, c2), c3);
101inline TilePoint MinTilePoint(
const TilePoint &c1,
const TilePoint &c2,
102 const TilePoint &c3,
const TilePoint &c4) {
103 return MinTilePoint(MinTilePoint(c1, c2), MinTilePoint(c3, c4));
108inline TilePoint MaxTilePoint(
110 const TilePoint &c2) {
111 return TilePoint(
MAX(c1.u, c2.u),
MAX(c1.v, c2.v),
MAX(c1.z, c2.z));
114inline TilePoint MaxTilePoint(
const TilePoint &c1,
const TilePoint &c2,
const TilePoint &c3) {
115 return MaxTilePoint(MaxTilePoint(c1, c2), c3);
118inline 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:63
T MAX(T a, T b)
Definition: util.h:66