![Negin Soltani](/assets/img/avatar_default.png)
- Globe Asset - Spatial Anchors - Photon Implementation - Scripts for Globe Control and Initial Country Colorizing - Script for Reading csv file
71 lines
1.6 KiB
C#
71 lines
1.6 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
|
|
namespace WPM.Poly2Tri {
|
|
public class MathUtil {
|
|
public static double EPSILON = 1e-12;
|
|
|
|
public static bool AreValuesEqual (double val1, double val2) {
|
|
return AreValuesEqual (val1, val2, EPSILON);
|
|
}
|
|
|
|
public static bool AreValuesEqual (double val1, double val2, double tolerance) {
|
|
if (val1 >= (val2 - tolerance) && val1 <= (val2 + tolerance)) {
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
public static bool IsValueBetween (double val, double min, double max, double tolerance) {
|
|
if (min > max) {
|
|
double tmp = min;
|
|
min = max;
|
|
max = tmp;
|
|
}
|
|
if ((val + tolerance) >= min && (val - tolerance) <= max) {
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
public static double RoundWithPrecision (double f, double precision) {
|
|
if (precision < 0.0) {
|
|
return f;
|
|
}
|
|
|
|
double mul = Math.Pow (10.0, precision);
|
|
double fTemp = Math.Floor (f * mul) / mul;
|
|
|
|
return fTemp;
|
|
}
|
|
|
|
public static double Clamp (double a, double low, double high) {
|
|
return Math.Max (low, Math.Min (a, high));
|
|
}
|
|
|
|
public static void Swap<T> (ref T a, ref T b) {
|
|
T tmp = a;
|
|
a = b;
|
|
b = tmp;
|
|
}
|
|
|
|
public static uint Jenkins32Hash (byte[] data, uint nInitialValue) {
|
|
foreach (byte b in data) {
|
|
nInitialValue += (uint)b;
|
|
nInitialValue += (nInitialValue << 10);
|
|
nInitialValue += (nInitialValue >> 6);
|
|
}
|
|
|
|
nInitialValue += (nInitialValue << 3);
|
|
nInitialValue ^= (nInitialValue >> 11);
|
|
nInitialValue += (nInitialValue << 15);
|
|
|
|
return nInitialValue;
|
|
}
|
|
}
|
|
}
|