new constructor

This commit is contained in:
ikpil 2023-05-14 12:36:04 +09:00
parent 9f6f1a0b33
commit cc6fde19bb
2 changed files with 47 additions and 51 deletions

View File

@ -27,7 +27,7 @@ namespace DotRecast.Core
{ {
public const float EPS = 1e-4f; public const float EPS = 1e-4f;
private static readonly float EQUAL_THRESHOLD = Sqr(1.0f / 16384.0f); private static readonly float EQUAL_THRESHOLD = Sqr(1.0f / 16384.0f);
public static float VDistSqr(Vector3f v1, float[] v2, int i) public static float VDistSqr(Vector3f v1, float[] v2, int i)
{ {
float dx = v2[i] - v1.x; float dx = v2[i] - v1.x;
@ -35,7 +35,7 @@ namespace DotRecast.Core
float dz = v2[i + 2] - v1.z; float dz = v2[i + 2] - v1.z;
return dx * dx + dy * dy + dz * dz; return dx * dx + dy * dy + dz * dz;
} }
public static float VDistSqr(Vector3f v1, Vector3f v2) public static float VDistSqr(Vector3f v1, Vector3f v2)
{ {
float dx = v2.x - v1.x; float dx = v2.x - v1.x;
@ -43,7 +43,7 @@ namespace DotRecast.Core
float dz = v2.z - v1.z; float dz = v2.z - v1.z;
return dx * dx + dy * dy + dz * dz; return dx * dx + dy * dy + dz * dz;
} }
public static float VDistSqr(float[] v, int i, int j) public static float VDistSqr(float[] v, int i, int j)
{ {
float dx = v[i] - v[j]; float dx = v[i] - v[j];
@ -60,7 +60,7 @@ namespace DotRecast.Core
dest.z = v1.x * v2.y - v1.y * v2.x; dest.z = v1.x * v2.y - v1.y * v2.x;
return dest; return dest;
} }
public static float VDot(Vector3f v1, Vector3f v2) public static float VDot(Vector3f v1, Vector3f v2)
{ {
return v1.x * v2.x + v1.y * v2.y + v1.z * v2.z; return v1.x * v2.x + v1.y * v2.y + v1.z * v2.z;
@ -83,7 +83,6 @@ namespace DotRecast.Core
} }
public static float Step(float threshold, float v) public static float Step(float threshold, float v)
{ {
return v < threshold ? 0.0f : 1.0f; return v < threshold ? 0.0f : 1.0f;
@ -103,7 +102,7 @@ namespace DotRecast.Core
{ {
return u * g + (1f - u) * f; return u * g + (1f - u) * f;
} }
/// Performs a scaled vector addition. (@p v1 + (@p v2 * @p s)) /// Performs a scaled vector addition. (@p v1 + (@p v2 * @p s))
/// @param[out] dest The result vector. [(x, y, z)] /// @param[out] dest The result vector. [(x, y, z)]
@ -127,39 +126,39 @@ namespace DotRecast.Core
/// @param[in] t The interpolation factor. [Limits: 0 <= value <= 1.0] /// @param[in] t The interpolation factor. [Limits: 0 <= value <= 1.0]
public static Vector3f VLerp(float[] verts, int v1, int v2, float t) public static Vector3f VLerp(float[] verts, int v1, int v2, float t)
{ {
Vector3f dest = new Vector3f(); return new Vector3f(
dest.x = verts[v1 + 0] + (verts[v2 + 0] - verts[v1 + 0]) * t; verts[v1 + 0] + (verts[v2 + 0] - verts[v1 + 0]) * t,
dest.y = verts[v1 + 1] + (verts[v2 + 1] - verts[v1 + 1]) * t; verts[v1 + 1] + (verts[v2 + 1] - verts[v1 + 1]) * t,
dest.z = verts[v1 + 2] + (verts[v2 + 2] - verts[v1 + 2]) * t; verts[v1 + 2] + (verts[v2 + 2] - verts[v1 + 2]) * t
return dest; );
} }
public static Vector3f VLerp(Vector3f v1, Vector3f v2, float t) public static Vector3f VLerp(Vector3f v1, Vector3f v2, float t)
{ {
Vector3f dest = new Vector3f(); return new Vector3f(
dest.x = v1.x + (v2.x - v1.x) * t; v1.x + (v2.x - v1.x) * t,
dest.y = v1.y + (v2.y - v1.y) * t; v1.y + (v2.y - v1.y) * t,
dest.z = v1.z + (v2.z - v1.z) * t; v1.z + (v2.z - v1.z) * t
return dest; );
} }
public static Vector3f VSub(Vector3f v1, Vector3f v2) public static Vector3f VSub(Vector3f v1, Vector3f v2)
{ {
Vector3f dest = new Vector3f(); return new Vector3f(
dest.x = v1.x - v2.x; v1.x - v2.x,
dest.y = v1.y - v2.y; v1.y - v2.y,
dest.z = v1.z - v2.z; v1.z - v2.z
return dest; );
} }
public static Vector3f VAdd(Vector3f v1, Vector3f v2) public static Vector3f VAdd(Vector3f v1, Vector3f v2)
{ {
Vector3f dest = new Vector3f(); return new Vector3f(
dest.x = v1.x + v2.x; v1.x + v2.x,
dest.y = v1.y + v2.y; v1.y + v2.y,
dest.z = v1.z + v2.z; v1.z + v2.z
return dest; );
} }
public static void VSet(ref Vector3f @out, float a, float b, float c) public static void VSet(ref Vector3f @out, float a, float b, float c)
@ -175,14 +174,14 @@ namespace DotRecast.Core
@out[1] = @in.y; @out[1] = @in.y;
@out[2] = @in.z; @out[2] = @in.z;
} }
public static void VCopy(ref Vector3f @out, float[] @in) public static void VCopy(ref Vector3f @out, float[] @in)
{ {
@out.x = @in[0]; @out.x = @in[0];
@out.y = @in[1]; @out.y = @in[1];
@out.z = @in[2]; @out.z = @in[2];
} }
public static void VCopy(ref Vector3f @out, float[] @in, int i) public static void VCopy(ref Vector3f @out, float[] @in, int i)
{ {
@out.x = @in[i]; @out.x = @in[i];
@ -219,7 +218,6 @@ namespace DotRecast.Core
} }
/// Returns the distance between two points. /// Returns the distance between two points.
/// @param[in] v1 A point. [(x, y, z)] /// @param[in] v1 A point. [(x, y, z)]
/// @param[in] v2 A point. [(x, y, z)] /// @param[in] v2 A point. [(x, y, z)]
@ -231,7 +229,6 @@ namespace DotRecast.Core
float dz = v2[2] - v1[2]; float dz = v2[2] - v1[2];
return dx * dx + dy * dy + dz * dz; return dx * dx + dy * dy + dz * dz;
} }
/// Derives the square of the scalar length of the vector. (len * len) /// Derives the square of the scalar length of the vector. (len * len)
@ -241,7 +238,7 @@ namespace DotRecast.Core
{ {
return v[0] * v[0] + v[1] * v[1] + v[2] * v[2]; return v[0] * v[0] + v[1] * v[1] + v[2] * v[2];
} }
public static float VLenSqr(Vector3f v) public static float VLenSqr(Vector3f v)
{ {
return v.x * v.x + v.y * v.y + v.z * v.z; return v.x * v.x + v.y * v.y + v.z * v.z;
@ -252,7 +249,7 @@ namespace DotRecast.Core
{ {
return (float)Math.Sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]); return (float)Math.Sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]);
} }
public static float VLen(Vector3f v) public static float VLen(Vector3f v)
{ {
return (float)Math.Sqrt(v.x * v.x + v.y * v.y + v.z * v.z); return (float)Math.Sqrt(v.x * v.x + v.y * v.y + v.z * v.z);
@ -281,7 +278,7 @@ namespace DotRecast.Core
float dz = v2[2] - v1[2]; float dz = v2[2] - v1[2];
return (float)Math.Sqrt(dx * dx + dz * dz); return (float)Math.Sqrt(dx * dx + dz * dz);
} }
public static float VDist2D(Vector3f v1, Vector3f v2) public static float VDist2D(Vector3f v1, Vector3f v2)
{ {
float dx = v2.x - v1.x; float dx = v2.x - v1.x;
@ -296,7 +293,7 @@ namespace DotRecast.Core
float dz = v2[2] - v1[2]; float dz = v2[2] - v1[2];
return dx * dx + dz * dz; return dx * dx + dz * dz;
} }
public static float VDist2DSqr(Vector3f v1, Vector3f v2) public static float VDist2DSqr(Vector3f v1, Vector3f v2)
{ {
float dx = v2.x - v1.x; float dx = v2.x - v1.x;
@ -324,7 +321,7 @@ namespace DotRecast.Core
v[2] *= d; v[2] *= d;
} }
} }
public static void VNormalize(ref Vector3f v) public static void VNormalize(ref Vector3f v)
{ {
float d = (float)(1.0f / Math.Sqrt(Sqr(v.x) + Sqr(v.y) + Sqr(v.z))); float d = (float)(1.0f / Math.Sqrt(Sqr(v.x) + Sqr(v.y) + Sqr(v.z)));
@ -355,7 +352,7 @@ namespace DotRecast.Core
float d = VDistSqr(p0, p1); float d = VDistSqr(p0, p1);
return d < thresholdSqr; return d < thresholdSqr;
} }
public static bool VEqual(Vector3f p0, Vector3f p1, float thresholdSqr) public static bool VEqual(Vector3f p0, Vector3f p1, float thresholdSqr)
{ {
float d = VDistSqr(p0, p1); float d = VDistSqr(p0, p1);
@ -374,7 +371,7 @@ namespace DotRecast.Core
{ {
return u[0] * v[0] + u[2] * v[2]; return u[0] * v[0] + u[2] * v[2];
} }
public static float VDot2D(Vector3f u, Vector3f v) public static float VDot2D(Vector3f u, Vector3f v)
{ {
return u.x * v.x + u.z * v.z; return u.x * v.x + u.z * v.z;
@ -397,12 +394,12 @@ namespace DotRecast.Core
{ {
return u[2] * v[0] - u[0] * v[2]; return u[2] * v[0] - u[0] * v[2];
} }
public static float VPerp2D(Vector3f u, Vector3f v) public static float VPerp2D(Vector3f u, Vector3f v)
{ {
return u.z * v.x - u.x * v.z; return u.z * v.x - u.x * v.z;
} }
/// @} /// @}
/// @name Computational geometry helper functions. /// @name Computational geometry helper functions.
@ -430,7 +427,7 @@ namespace DotRecast.Core
float acz = c[2] - a[2]; float acz = c[2] - a[2];
return acx * abz - abx * acz; return acx * abz - abx * acz;
} }
public static float TriArea2D(Vector3f a, Vector3f b, Vector3f c) public static float TriArea2D(Vector3f a, Vector3f b, Vector3f c)
{ {
float abx = b.x - a.x; float abx = b.x - a.x;
@ -439,7 +436,7 @@ namespace DotRecast.Core
float acz = c.z - a.z; float acz = c.z - a.z;
return acx * abz - abx * acz; return acx * abz - abx * acz;
} }
public static float TriArea2D(Vector3f a, float[] b, Vector3f c) public static float TriArea2D(Vector3f a, float[] b, Vector3f c)
{ {
float abx = b[0] - a.x; float abx = b[0] - a.x;
@ -450,7 +447,6 @@ namespace DotRecast.Core
} }
/// Determines if two axis-aligned bounding boxes overlap. /// Determines if two axis-aligned bounding boxes overlap.
/// @param[in] amin Minimum bounds of box A. [(x, y, z)] /// @param[in] amin Minimum bounds of box A. [(x, y, z)]
/// @param[in] amax Maximum bounds of box A. [(x, y, z)] /// @param[in] amax Maximum bounds of box A. [(x, y, z)]
@ -477,12 +473,12 @@ namespace DotRecast.Core
public static bool OverlapBounds(float[] amin, float[] amax, float[] bmin, float[] bmax) public static bool OverlapBounds(float[] amin, float[] amax, float[] bmin, float[] bmax)
{ {
bool overlap = true; bool overlap = true;
overlap = (amin[0]> bmax[0] || amax[0] < bmin[0]) ? false : overlap; overlap = (amin[0] > bmax[0] || amax[0] < bmin[0]) ? false : overlap;
overlap = (amin[1] > bmax[1] || amax[1] < bmin[1]) ? false : overlap; overlap = (amin[1] > bmax[1] || amax[1] < bmin[1]) ? false : overlap;
overlap = (amin[2] > bmax[2] || amax[2] < bmin[2]) ? false : overlap; overlap = (amin[2] > bmax[2] || amax[2] < bmin[2]) ? false : overlap;
return overlap; return overlap;
} }
public static bool OverlapBounds(Vector3f amin, Vector3f amax, Vector3f bmin, Vector3f bmax) public static bool OverlapBounds(Vector3f amin, Vector3f amax, Vector3f bmin, Vector3f bmax)
{ {
bool overlap = true; bool overlap = true;
@ -737,7 +733,6 @@ namespace DotRecast.Core
} }
public static IntersectResult IntersectSegmentPoly2D(Vector3f p0, Vector3f p1, float[] verts, int nverts) public static IntersectResult IntersectSegmentPoly2D(Vector3f p0, Vector3f p1, float[] verts, int nverts)
{ {
IntersectResult result = new IntersectResult(); IntersectResult result = new IntersectResult();
@ -800,7 +795,7 @@ namespace DotRecast.Core
result.intersects = true; result.intersects = true;
return result; return result;
} }
public static Tuple<float, float> DistancePtSegSqr2D(Vector3f pt, SegmentVert verts, int p, int q) public static Tuple<float, float> DistancePtSegSqr2D(Vector3f pt, SegmentVert verts, int p, int q)
{ {
float pqx = verts[q + 0] - verts[p + 0]; float pqx = verts[q + 0] - verts[p + 0];
@ -865,7 +860,7 @@ namespace DotRecast.Core
{ {
return a[0] * b[2] - a[2] * b[0]; return a[0] * b[2] - a[2] * b[0];
} }
public static float VperpXZ(Vector3f a, Vector3f b) public static float VperpXZ(Vector3f a, Vector3f b)
{ {
return a.x * b.z - a.z * b.x; return a.x * b.z - a.z * b.x;
@ -905,7 +900,7 @@ namespace DotRecast.Core
{ {
return float.IsFinite(v[0]) && float.IsFinite(v[1]) && float.IsFinite(v[2]); return float.IsFinite(v[0]) && float.IsFinite(v[1]) && float.IsFinite(v[2]);
} }
public static bool VIsFinite(Vector3f v) public static bool VIsFinite(Vector3f v)
{ {
return float.IsFinite(v.x) && float.IsFinite(v.y) && float.IsFinite(v.z); return float.IsFinite(v.x) && float.IsFinite(v.y) && float.IsFinite(v.z);
@ -923,4 +918,4 @@ namespace DotRecast.Core
return float.IsFinite(v.x) && float.IsFinite(v.z); return float.IsFinite(v.x) && float.IsFinite(v.z);
} }
} }
} }

View File

@ -126,5 +126,6 @@ namespace DotRecast.Core
{ {
return !left.Equals(right); return !left.Equals(right);
} }
} }
} }