Переименование проектов и оптимизация вычислений / Renaming of projects and optimization of computations
This commit is contained in:
parent
37d86bc4c1
commit
75e5c02609
36 changed files with 177 additions and 379 deletions
|
|
@ -3,11 +3,11 @@ Microsoft Visual Studio Solution File, Format Version 12.00
|
|||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.0.31903.59
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BGC", "BGC\BGC.csproj", "{D1869DF0-7B61-4B6F-8C66-6EEF3916FE0A}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BasicGeometry", "BasicGeometry\BasicGeometry.csproj", "{D1869DF0-7B61-4B6F-8C66-6EEF3916FE0A}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BGCDev", "BGCDev\BGCDev.csproj", "{3D09FF57-02E6-449D-9DE7-0843633FCBA0}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BasicGeometryDev", "BasicGeometryDev\BasicGeometryDev.csproj", "{3D09FF57-02E6-449D-9DE7-0843633FCBA0}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BGCTest", "BGCTest\BGCTest.csproj", "{51A07B27-43FF-4A12-AEC1-50D32EDA3815}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BasicGeometryTest", "BasicGeometryTest\BasicGeometryTest.csproj", "{51A07B27-43FF-4A12-AEC1-50D32EDA3815}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
|
|
@ -20,7 +20,7 @@
|
|||
* Date: 1 Feb 2019
|
||||
*/
|
||||
|
||||
namespace BGC
|
||||
namespace BasicGeometry
|
||||
{
|
||||
public enum AngleUnit
|
||||
{
|
||||
|
|
@ -21,7 +21,7 @@ using System;
|
|||
* Date: 1 Feb 2019
|
||||
*/
|
||||
|
||||
namespace BGC
|
||||
namespace BasicGeometry
|
||||
{
|
||||
public static class FP32Angle
|
||||
{
|
||||
|
|
@ -4,7 +4,7 @@
|
|||
* Date: 18 Nov 2024
|
||||
*/
|
||||
|
||||
namespace BGC
|
||||
namespace BasicGeometry
|
||||
{
|
||||
public class FP32Degrees
|
||||
{
|
||||
|
|
@ -21,29 +21,16 @@ using System;
|
|||
* Date: 10 Feb 2019
|
||||
*/
|
||||
|
||||
namespace BGC
|
||||
namespace BasicGeometry
|
||||
{
|
||||
public struct FP32Matrix2x2
|
||||
{
|
||||
public float r1c1, r1c2;
|
||||
|
||||
public float r2c1, r2c2;
|
||||
|
||||
public FP32Matrix2x2()
|
||||
{
|
||||
this.r1c1 = 0.0f;
|
||||
this.r1c2 = 0.0f;
|
||||
|
||||
this.r2c1 = 0.0f;
|
||||
this.r2c2 = 0.0f;
|
||||
}
|
||||
public float r1c1 = 0.0f, r1c2 = 0.0f;
|
||||
public float r2c1 = 0.0f, r2c2 = 0.0f;
|
||||
|
||||
public FP32Matrix2x2(float d1, float d2)
|
||||
{
|
||||
this.r1c1 = d1;
|
||||
this.r1c2 = 0.0f;
|
||||
|
||||
this.r2c1 = 0.0f;
|
||||
this.r2c2 = d2;
|
||||
}
|
||||
|
||||
|
|
@ -96,11 +83,13 @@ namespace BGC
|
|||
float r2c1 = -this.r2c1;
|
||||
float r2c2 = this.r1c1;
|
||||
|
||||
this.r1c1 = r1c1 / determinant;
|
||||
this.r1c2 = r1c2 / determinant;
|
||||
float multiplier = 1.0f / determinant;
|
||||
|
||||
this.r2c1 = r2c1 / determinant;
|
||||
this.r2c2 = r2c2 / determinant;
|
||||
this.r1c1 = r1c1 * multiplier;
|
||||
this.r1c2 = r1c2 * multiplier;
|
||||
|
||||
this.r2c1 = r2c1 * multiplier;
|
||||
this.r2c2 = r2c2 * multiplier;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
@ -181,11 +170,13 @@ namespace BGC
|
|||
float r2c1 = -matrix.r2c1;
|
||||
float r2c2 = matrix.r1c1;
|
||||
|
||||
this.r1c1 = r1c1 / determinant;
|
||||
this.r1c2 = r1c2 / determinant;
|
||||
float multiplier = 1.0f / determinant;
|
||||
|
||||
this.r2c1 = r2c1 / determinant;
|
||||
this.r2c2 = r2c2 / determinant;
|
||||
this.r1c1 = r1c1 * multiplier;
|
||||
this.r1c2 = r1c2 * multiplier;
|
||||
|
||||
this.r2c1 = r2c1 * multiplier;
|
||||
this.r2c2 = r2c2 * multiplier;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
@ -252,11 +243,7 @@ namespace BGC
|
|||
|
||||
public static void Divide(in FP32Matrix2x2 dividend, float divisor, out FP32Matrix2x2 quotient)
|
||||
{
|
||||
quotient.r1c1 = dividend.r1c1 / divisor;
|
||||
quotient.r1c2 = dividend.r1c2 / divisor;
|
||||
|
||||
quotient.r2c1 = dividend.r2c1 / divisor;
|
||||
quotient.r2c2 = dividend.r2c2 / divisor;
|
||||
Multiply(dividend, 1.0f / divisor, out quotient);
|
||||
}
|
||||
|
||||
public static void GetRightProduct(in FP32Matrix2x2 matrix, in FP32Vector2 vector, out FP32Vector2 result)
|
||||
|
|
@ -20,25 +20,13 @@ using System;
|
|||
* Author: Andrey Pokidov
|
||||
* Date: 11 Nov 2024
|
||||
*/
|
||||
namespace BGC
|
||||
namespace BasicGeometry
|
||||
{
|
||||
public struct FP32Matrix2x3
|
||||
{
|
||||
public float r1c1, r1c2;
|
||||
public float r2c1, r2c2;
|
||||
public float r3c1, r3c2;
|
||||
|
||||
public FP32Matrix2x3()
|
||||
{
|
||||
this.r1c1 = 0.0f;
|
||||
this.r1c2 = 0.0f;
|
||||
|
||||
this.r2c1 = 0.0f;
|
||||
this.r2c2 = 0.0f;
|
||||
|
||||
this.r3c1 = 0.0f;
|
||||
this.r3c2 = 0.0f;
|
||||
}
|
||||
public float r1c1 = 0.0f, r1c2 = 0.0f;
|
||||
public float r2c1 = 0.0f, r2c2 = 0.0f;
|
||||
public float r3c1 = 0.0f, r3c2 = 0.0f;
|
||||
|
||||
public FP32Matrix2x3(in FP32Matrix2x3 matrix)
|
||||
{
|
||||
|
|
@ -230,14 +218,7 @@ namespace BGC
|
|||
|
||||
public static void Divide(in FP32Matrix2x3 dividend, float divisor, out FP32Matrix2x3 quotient)
|
||||
{
|
||||
quotient.r1c1 = dividend.r1c1 / divisor;
|
||||
quotient.r1c2 = dividend.r1c2 / divisor;
|
||||
|
||||
quotient.r2c1 = dividend.r2c1 / divisor;
|
||||
quotient.r2c2 = dividend.r2c2 / divisor;
|
||||
|
||||
quotient.r3c1 = dividend.r3c1 / divisor;
|
||||
quotient.r3c2 = dividend.r3c2 / divisor;
|
||||
Multiply(dividend, 1.0f / divisor, out quotient);
|
||||
}
|
||||
|
||||
public static void GetRightProduct(in FP32Matrix2x3 matrix, in FP32Vector2 vector, out FP32Vector3 result)
|
||||
|
|
@ -18,23 +18,12 @@
|
|||
* Author: Andrey Pokidov
|
||||
* Date: 11 Nov 2024
|
||||
*/
|
||||
namespace BGC
|
||||
namespace BasicGeometry
|
||||
{
|
||||
public struct FP32Matrix3x2
|
||||
{
|
||||
public float r1c1, r1c2, r1c3;
|
||||
public float r2c1, r2c2, r2c3;
|
||||
|
||||
public FP32Matrix3x2()
|
||||
{
|
||||
this.r1c1 = 0.0f;
|
||||
this.r1c2 = 0.0f;
|
||||
this.r1c3 = 0.0f;
|
||||
|
||||
this.r2c1 = 0.0f;
|
||||
this.r2c2 = 0.0f;
|
||||
this.r2c3 = 0.0f;
|
||||
}
|
||||
public float r1c1 = 0.0f, r1c2 = 0.0f, r1c3 = 0.0f;
|
||||
public float r2c1 = 0.0f, r2c2 = 0.0f, r2c3 = 0.0f;
|
||||
|
||||
public FP32Matrix3x2(in FP32Matrix3x2 matrix)
|
||||
{
|
||||
|
|
@ -213,13 +202,7 @@ namespace BGC
|
|||
|
||||
public static void Divide(in FP32Matrix3x2 dividend, float divisor, out FP32Matrix3x2 quotient)
|
||||
{
|
||||
quotient.r1c1 = dividend.r1c1 / divisor;
|
||||
quotient.r1c2 = dividend.r1c2 / divisor;
|
||||
quotient.r1c3 = dividend.r1c3 / divisor;
|
||||
|
||||
quotient.r2c1 = dividend.r2c1 / divisor;
|
||||
quotient.r2c2 = dividend.r2c2 / divisor;
|
||||
quotient.r2c3 = dividend.r2c3 / divisor;
|
||||
Multiply(dividend, 1.0f / divisor, out quotient);
|
||||
}
|
||||
|
||||
public static void GetRightProduct(in FP32Matrix3x2 matrix, in FP32Vector3 vector, out FP32Vector2 result)
|
||||
|
|
@ -21,43 +21,18 @@ using System;
|
|||
* Date: 10 Feb 2019
|
||||
*/
|
||||
|
||||
namespace BGC
|
||||
namespace BasicGeometry
|
||||
{
|
||||
public struct FP32Matrix3x3
|
||||
{
|
||||
public float r1c1, r1c2, r1c3;
|
||||
|
||||
public float r2c1, r2c2, r2c3;
|
||||
|
||||
public float r3c1, r3c2, r3c3;
|
||||
|
||||
public FP32Matrix3x3()
|
||||
{
|
||||
this.r1c1 = 0.0f;
|
||||
this.r1c2 = 0.0f;
|
||||
this.r1c3 = 0.0f;
|
||||
|
||||
this.r2c1 = 0.0f;
|
||||
this.r2c2 = 0.0f;
|
||||
this.r2c3 = 0.0f;
|
||||
|
||||
this.r3c1 = 0.0f;
|
||||
this.r3c2 = 0.0f;
|
||||
this.r3c3 = 0.0f;
|
||||
}
|
||||
public float r1c1 = 0.0f, r1c2 = 0.0f, r1c3 = 0.0f;
|
||||
public float r2c1 = 0.0f, r2c2 = 0.0f, r2c3 = 0.0f;
|
||||
public float r3c1 = 0.0f, r3c2 = 0.0f, r3c3 = 0.0f;
|
||||
|
||||
public FP32Matrix3x3(float d1, float d2, float d3)
|
||||
{
|
||||
this.r1c1 = d1;
|
||||
this.r1c2 = 0.0f;
|
||||
this.r1c3 = 0.0f;
|
||||
|
||||
this.r2c1 = 0.0f;
|
||||
this.r2c2 = d2;
|
||||
this.r2c3 = 0.0f;
|
||||
|
||||
this.r3c1 = 0.0f;
|
||||
this.r3c2 = 0.0f;
|
||||
this.r3c3 = d3;
|
||||
}
|
||||
|
||||
|
|
@ -131,17 +106,19 @@ namespace BGC
|
|||
float r3c2 = this.r1c2 * this.r3c1 - this.r1c1 * this.r3c2;
|
||||
float r3c3 = this.r1c1 * this.r2c2 - this.r1c2 * this.r2c1;
|
||||
|
||||
this.r1c1 = r1c1 / determinant;
|
||||
this.r1c2 = r1c2 / determinant;
|
||||
this.r1c3 = r1c3 / determinant;
|
||||
float mutiplier = 1.0f / determinant;
|
||||
|
||||
this.r2c1 = r2c1 / determinant;
|
||||
this.r2c2 = r2c2 / determinant;
|
||||
this.r2c3 = r2c3 / determinant;
|
||||
this.r1c1 = r1c1 * mutiplier;
|
||||
this.r1c2 = r1c2 * mutiplier;
|
||||
this.r1c3 = r1c3 * mutiplier;
|
||||
|
||||
this.r3c1 = r3c1 / determinant;
|
||||
this.r3c2 = r3c2 / determinant;
|
||||
this.r3c3 = r3c3 / determinant;
|
||||
this.r2c1 = r2c1 * mutiplier;
|
||||
this.r2c2 = r2c2 * mutiplier;
|
||||
this.r2c3 = r2c3 * mutiplier;
|
||||
|
||||
this.r3c1 = r3c1 * mutiplier;
|
||||
this.r3c2 = r3c2 * mutiplier;
|
||||
this.r3c3 = r3c3 * mutiplier;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
@ -267,17 +244,19 @@ namespace BGC
|
|||
float r3c2 = matrix.r1c2 * matrix.r3c1 - matrix.r1c1 * matrix.r3c2;
|
||||
float r3c3 = matrix.r1c1 * matrix.r2c2 - matrix.r1c2 * matrix.r2c1;
|
||||
|
||||
this.r1c1 = r1c1 / determinant;
|
||||
this.r1c2 = r1c2 / determinant;
|
||||
this.r1c3 = r1c3 / determinant;
|
||||
float mutiplier = 1.0f / determinant;
|
||||
|
||||
this.r2c1 = r2c1 / determinant;
|
||||
this.r2c2 = r2c2 / determinant;
|
||||
this.r2c3 = r2c3 / determinant;
|
||||
this.r1c1 = r1c1 * mutiplier;
|
||||
this.r1c2 = r1c2 * mutiplier;
|
||||
this.r1c3 = r1c3 * mutiplier;
|
||||
|
||||
this.r3c1 = r3c1 / determinant;
|
||||
this.r3c2 = r3c2 / determinant;
|
||||
this.r3c3 = r3c3 / determinant;
|
||||
this.r2c1 = r2c1 * mutiplier;
|
||||
this.r2c2 = r2c2 * mutiplier;
|
||||
this.r2c3 = r2c3 * mutiplier;
|
||||
|
||||
this.r3c1 = r3c1 * mutiplier;
|
||||
this.r3c2 = r3c2 * mutiplier;
|
||||
this.r3c3 = r3c3 * mutiplier;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
@ -386,17 +365,7 @@ namespace BGC
|
|||
|
||||
public static void Divide(in FP32Matrix3x3 dividend, float divisor, out FP32Matrix3x3 quotient)
|
||||
{
|
||||
quotient.r1c1 = dividend.r1c1 / divisor;
|
||||
quotient.r1c2 = dividend.r1c2 / divisor;
|
||||
quotient.r1c3 = dividend.r1c3 / divisor;
|
||||
|
||||
quotient.r2c1 = dividend.r2c1 / divisor;
|
||||
quotient.r2c2 = dividend.r2c2 / divisor;
|
||||
quotient.r2c3 = dividend.r2c3 / divisor;
|
||||
|
||||
quotient.r3c1 = dividend.r3c1 / divisor;
|
||||
quotient.r3c2 = dividend.r3c2 / divisor;
|
||||
quotient.r3c3 = dividend.r3c3 / divisor;
|
||||
Multiply(dividend, 1.0f / divisor, out quotient);
|
||||
}
|
||||
|
||||
public static void GetRightProduct(in FP32Matrix3x3 matrix, in FP32Vector3 vector, out FP32Vector3 result)
|
||||
|
|
@ -20,7 +20,7 @@ using System;
|
|||
* Author: Andrey Pokidov
|
||||
* Date: 11 Nov 2024
|
||||
*/
|
||||
namespace BGC
|
||||
namespace BasicGeometry
|
||||
{
|
||||
public class FP32MatrixProduct
|
||||
{
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
using System;
|
||||
|
||||
namespace BGC
|
||||
namespace BasicGeometry
|
||||
{
|
||||
public struct FP32Quaternion
|
||||
{
|
||||
public float s0, x1, x2, x3;
|
||||
public float s0 = 0.0f, x1 = 0.0f, x2 = 0.0f, x3 = 0.0f;
|
||||
|
||||
public FP32Quaternion(float s0, float x1, float x2, float x3)
|
||||
{
|
||||
|
|
@ -4,7 +4,7 @@
|
|||
* Date: 18 Nov 2024
|
||||
*/
|
||||
|
||||
namespace BGC
|
||||
namespace BasicGeometry
|
||||
{
|
||||
public class FP32Radians
|
||||
{
|
||||
|
|
@ -21,11 +21,11 @@ using System;
|
|||
* Date: 2 Feb 2019
|
||||
*/
|
||||
|
||||
namespace BGC
|
||||
namespace BasicGeometry
|
||||
{
|
||||
public struct FP32Rotation3
|
||||
{
|
||||
private float angle;
|
||||
private float angle = 0.0f;
|
||||
|
||||
private FP32Vector3 axis;
|
||||
|
||||
|
|
@ -4,7 +4,7 @@
|
|||
* Date: 18 Nov 2024
|
||||
*/
|
||||
|
||||
namespace BGC
|
||||
namespace BasicGeometry
|
||||
{
|
||||
public class FP32Turns
|
||||
{
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
using System;
|
||||
|
||||
namespace BGC
|
||||
namespace BasicGeometry
|
||||
{
|
||||
public class FP32Utility
|
||||
{
|
||||
|
|
@ -21,14 +21,14 @@ using System;
|
|||
* Date: 1 Feb 2019
|
||||
*/
|
||||
|
||||
namespace BGC
|
||||
namespace BasicGeometry
|
||||
{
|
||||
public struct FP32Vector2
|
||||
{
|
||||
public static readonly FP32Vector2 ZERO = new FP32Vector2(0.0f, 0.0f);
|
||||
|
||||
public float x1;
|
||||
public float x2;
|
||||
public float x1 = 0.0f;
|
||||
public float x2 = 0.0f;
|
||||
|
||||
public FP32Vector2(float x1, float x2)
|
||||
{
|
||||
|
|
@ -157,7 +157,7 @@ namespace BGC
|
|||
difference.x2 = minuend.x2 - subtrahend.x2;
|
||||
}
|
||||
|
||||
public static void Muliply(in FP32Vector2 multiplicand, float multiplier, out FP32Vector2 product)
|
||||
public static void Multiply(in FP32Vector2 multiplicand, float multiplier, out FP32Vector2 product)
|
||||
{
|
||||
product.x1 = multiplicand.x1 * multiplier;
|
||||
product.x2 = multiplicand.x2 * multiplier;
|
||||
|
|
@ -165,8 +165,7 @@ namespace BGC
|
|||
|
||||
public static void Divide(in FP32Vector2 dividend, float divisor, out FP32Vector2 quotient)
|
||||
{
|
||||
quotient.x1 = dividend.x1 / divisor;
|
||||
quotient.x2 = dividend.x2 / divisor;
|
||||
Multiply(dividend, 1.0f / divisor, out quotient);
|
||||
}
|
||||
|
||||
public static void GetMean2(in FP32Vector2 vector1, in FP32Vector2 vector2, out FP32Vector2 result)
|
||||
|
|
@ -21,15 +21,15 @@ using System;
|
|||
* Date: 1 Feb 2019
|
||||
*/
|
||||
|
||||
namespace BGC
|
||||
namespace BasicGeometry
|
||||
{
|
||||
public struct FP32Vector3
|
||||
{
|
||||
public static readonly FP32Vector3 ZERO = new FP32Vector3(0.0f, 0.0f, 0.0f);
|
||||
|
||||
public float x1;
|
||||
public float x2;
|
||||
public float x3;
|
||||
public float x1 = 0.0f;
|
||||
public float x2 = 0.0f;
|
||||
public float x3 = 0.0f;
|
||||
|
||||
public FP32Vector3(float x1, float x2, float x3)
|
||||
{
|
||||
|
|
@ -172,7 +172,7 @@ namespace BGC
|
|||
difference.x3 = minuend.x3 - subtrahend.x3;
|
||||
}
|
||||
|
||||
public static void Muliply(in FP32Vector3 multiplicand, float multiplier, out FP32Vector3 product)
|
||||
public static void Multiply(in FP32Vector3 multiplicand, float multiplier, out FP32Vector3 product)
|
||||
{
|
||||
product.x1 = multiplicand.x1 * multiplier;
|
||||
product.x2 = multiplicand.x2 * multiplier;
|
||||
|
|
@ -181,9 +181,7 @@ namespace BGC
|
|||
|
||||
public static void Divide(in FP32Vector3 dividend, float divisor, out FP32Vector3 quotient)
|
||||
{
|
||||
quotient.x1 = dividend.x1 / divisor;
|
||||
quotient.x2 = dividend.x2 / divisor;
|
||||
quotient.x3 = dividend.x3 / divisor;
|
||||
Multiply(dividend, 1.0f / divisor, out quotient);
|
||||
}
|
||||
|
||||
public static void GetMean2(in FP32Vector3 vector1, in FP32Vector3 vector2, out FP32Vector3 result)
|
||||
|
|
@ -19,22 +19,14 @@
|
|||
* Date: 20 Oct 2024
|
||||
*/
|
||||
|
||||
namespace BGC
|
||||
namespace BasicGeometry
|
||||
{
|
||||
public struct FP32Versor
|
||||
{
|
||||
private float s0;
|
||||
private float x1;
|
||||
private float x2;
|
||||
private float x3;
|
||||
|
||||
public FP32Versor()
|
||||
{
|
||||
this.s0 = 1.0f;
|
||||
this.x1 = 0.0f;
|
||||
this.x2 = 0.0f;
|
||||
this.x3 = 0.0f;
|
||||
}
|
||||
private float s0 = 1.0f;
|
||||
private float x1 = 0.0f;
|
||||
private float x2 = 0.0f;
|
||||
private float x3 = 0.0f;
|
||||
|
||||
public FP32Versor(float s0, float x1, float x2, float x3)
|
||||
{
|
||||
|
|
@ -178,12 +170,6 @@ namespace BGC
|
|||
|
||||
if (1.0f - FP32Utility.TWO_EPSYLON <= squareModule && squareModule <= 1.0f + FP32Utility.TWO_EPSYLON)
|
||||
{
|
||||
if (-1.0f + FP32Utility.EPSYLON < s0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
this.Reset();
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -254,18 +240,18 @@ namespace BGC
|
|||
|
||||
private void Normalize(float squareModule)
|
||||
{
|
||||
if (squareModule <= FP32Utility.SQUARE_EPSYLON || (this.x1 * this.x1 + this.x2 * this.x2 + this.x3 * this.x3) <= FP32Utility.SQUARE_EPSYLON * squareModule)
|
||||
if (squareModule <= FP32Utility.SQUARE_EPSYLON)
|
||||
{
|
||||
this.Reset();
|
||||
return;
|
||||
}
|
||||
|
||||
float module = MathF.Sqrt(squareModule);
|
||||
float multiplier = MathF.Sqrt(1.0f / squareModule);
|
||||
|
||||
this.s0 /= module;
|
||||
this.x1 /= module;
|
||||
this.x2 /= module;
|
||||
this.x3 /= module;
|
||||
this.s0 *= multiplier;
|
||||
this.x1 *= multiplier;
|
||||
this.x2 *= multiplier;
|
||||
this.x3 *= multiplier;
|
||||
}
|
||||
|
||||
public static void Combine(in FP32Versor second, in FP32Versor first, out FP32Versor result)
|
||||
|
|
@ -282,10 +268,12 @@ namespace BGC
|
|||
result.x2 = x2;
|
||||
result.x3 = x3;
|
||||
|
||||
if (squareModule < 1.0f - FP32Utility.TWO_EPSYLON || 1.0f + FP32Utility.TWO_EPSYLON < squareModule)
|
||||
if (1.0f - FP32Utility.TWO_EPSYLON <= squareModule && squareModule <= 1.0f + FP32Utility.TWO_EPSYLON)
|
||||
{
|
||||
result.Normalize(squareModule);
|
||||
return;
|
||||
}
|
||||
|
||||
result.Normalize(squareModule);
|
||||
}
|
||||
|
||||
public static void LoadIdle(out FP32Versor versor)
|
||||
|
|
@ -307,12 +295,6 @@ namespace BGC
|
|||
|
||||
if (1.0f - FP32Utility.TWO_EPSYLON <= squareModule && squareModule <= 1.0f + FP32Utility.TWO_EPSYLON)
|
||||
{
|
||||
if (-1.0f + FP32Utility.EPSYLON < s0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
versor.Reset();
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -21,7 +21,7 @@ using System;
|
|||
* Date: 1 Feb 2019
|
||||
*/
|
||||
|
||||
namespace BGC
|
||||
namespace BasicGeometry
|
||||
{
|
||||
public static class FP64Angle
|
||||
{
|
||||
|
|
@ -4,7 +4,7 @@
|
|||
* Date: 18 Nov 2024
|
||||
*/
|
||||
|
||||
namespace BGC
|
||||
namespace BasicGeometry
|
||||
{
|
||||
public class FP64Degrees
|
||||
{
|
||||
|
|
@ -21,29 +21,16 @@ using System;
|
|||
* Date: 10 Feb 2019
|
||||
*/
|
||||
|
||||
namespace BGC
|
||||
namespace BasicGeometry
|
||||
{
|
||||
public struct FP64Matrix2x2
|
||||
{
|
||||
public double r1c1, r1c2;
|
||||
|
||||
public double r2c1, r2c2;
|
||||
|
||||
public FP64Matrix2x2()
|
||||
{
|
||||
this.r1c1 = 0.0;
|
||||
this.r1c2 = 0.0;
|
||||
|
||||
this.r2c1 = 0.0;
|
||||
this.r2c2 = 0.0;
|
||||
}
|
||||
public double r1c1 = 0.0, r1c2 = 0.0;
|
||||
public double r2c1 = 0.0, r2c2 = 0.0;
|
||||
|
||||
public FP64Matrix2x2(double d1, double d2)
|
||||
{
|
||||
this.r1c1 = d1;
|
||||
this.r1c2 = 0.0;
|
||||
|
||||
this.r2c1 = 0.0;
|
||||
this.r2c2 = d2;
|
||||
}
|
||||
|
||||
|
|
@ -96,11 +83,13 @@ namespace BGC
|
|||
double r2c1 = -this.r2c1;
|
||||
double r2c2 = this.r1c1;
|
||||
|
||||
this.r1c1 = r1c1 / determinant;
|
||||
this.r1c2 = r1c2 / determinant;
|
||||
double multiplier = 1.0 / determinant;
|
||||
|
||||
this.r2c1 = r2c1 / determinant;
|
||||
this.r2c2 = r2c2 / determinant;
|
||||
this.r1c1 = r1c1 * multiplier;
|
||||
this.r1c2 = r1c2 * multiplier;
|
||||
|
||||
this.r2c1 = r2c1 * multiplier;
|
||||
this.r2c2 = r2c2 * multiplier;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
@ -181,11 +170,13 @@ namespace BGC
|
|||
double r2c1 = -matrix.r2c1;
|
||||
double r2c2 = matrix.r1c1;
|
||||
|
||||
this.r1c1 = r1c1 / determinant;
|
||||
this.r1c2 = r1c2 / determinant;
|
||||
double multiplier = 1.0 / determinant;
|
||||
|
||||
this.r2c1 = r2c1 / determinant;
|
||||
this.r2c2 = r2c2 / determinant;
|
||||
this.r1c1 = r1c1 * multiplier;
|
||||
this.r1c2 = r1c2 * multiplier;
|
||||
|
||||
this.r2c1 = r2c1 * multiplier;
|
||||
this.r2c2 = r2c2 * multiplier;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
@ -252,11 +243,7 @@ namespace BGC
|
|||
|
||||
public static void Divide(in FP64Matrix2x2 dividend, double divisor, out FP64Matrix2x2 quotient)
|
||||
{
|
||||
quotient.r1c1 = dividend.r1c1 / divisor;
|
||||
quotient.r1c2 = dividend.r1c2 / divisor;
|
||||
|
||||
quotient.r2c1 = dividend.r2c1 / divisor;
|
||||
quotient.r2c2 = dividend.r2c2 / divisor;
|
||||
Multiply(dividend, 1.0 / divisor, out quotient);
|
||||
}
|
||||
|
||||
public static void GetRightProduct(in FP64Matrix2x2 matrix, in FP64Vector2 vector, out FP64Vector2 result)
|
||||
|
|
@ -20,25 +20,13 @@ using System;
|
|||
* Author: Andrey Pokidov
|
||||
* Date: 11 Nov 2024
|
||||
*/
|
||||
namespace BGC
|
||||
namespace BasicGeometry
|
||||
{
|
||||
public struct FP64Matrix2x3
|
||||
{
|
||||
public double r1c1, r1c2;
|
||||
public double r2c1, r2c2;
|
||||
public double r3c1, r3c2;
|
||||
|
||||
public FP64Matrix2x3()
|
||||
{
|
||||
this.r1c1 = 0.0;
|
||||
this.r1c2 = 0.0;
|
||||
|
||||
this.r2c1 = 0.0;
|
||||
this.r2c2 = 0.0;
|
||||
|
||||
this.r3c1 = 0.0;
|
||||
this.r3c2 = 0.0;
|
||||
}
|
||||
public double r1c1 = 0.0, r1c2 = 0.0;
|
||||
public double r2c1 = 0.0, r2c2 = 0.0;
|
||||
public double r3c1 = 0.0, r3c2 = 0.0;
|
||||
|
||||
public FP64Matrix2x3(in FP64Matrix2x3 matrix)
|
||||
{
|
||||
|
|
@ -230,14 +218,7 @@ namespace BGC
|
|||
|
||||
public static void Divide(in FP64Matrix2x3 dividend, double divisor, out FP64Matrix2x3 quotient)
|
||||
{
|
||||
quotient.r1c1 = dividend.r1c1 / divisor;
|
||||
quotient.r1c2 = dividend.r1c2 / divisor;
|
||||
|
||||
quotient.r2c1 = dividend.r2c1 / divisor;
|
||||
quotient.r2c2 = dividend.r2c2 / divisor;
|
||||
|
||||
quotient.r3c1 = dividend.r3c1 / divisor;
|
||||
quotient.r3c2 = dividend.r3c2 / divisor;
|
||||
Multiply(dividend, 1.0 / divisor, out quotient);
|
||||
}
|
||||
|
||||
public static void GetRightProduct(in FP64Matrix2x3 matrix, in FP64Vector2 vector, out FP64Vector3 result)
|
||||
|
|
@ -20,23 +20,12 @@ using System;
|
|||
* Author: Andrey Pokidov
|
||||
* Date: 11 Nov 2024
|
||||
*/
|
||||
namespace BGC
|
||||
namespace BasicGeometry
|
||||
{
|
||||
public struct FP64Matrix3x2
|
||||
{
|
||||
public double r1c1, r1c2, r1c3;
|
||||
public double r2c1, r2c2, r2c3;
|
||||
|
||||
public FP64Matrix3x2()
|
||||
{
|
||||
this.r1c1 = 0.0;
|
||||
this.r1c2 = 0.0;
|
||||
this.r1c3 = 0.0;
|
||||
|
||||
this.r2c1 = 0.0;
|
||||
this.r2c2 = 0.0;
|
||||
this.r2c3 = 0.0;
|
||||
}
|
||||
public double r1c1 = 0.0, r1c2 = 0.0, r1c3 = 0.0;
|
||||
public double r2c1 = 0.0, r2c2 = 0.0, r2c3 = 0.0;
|
||||
|
||||
public FP64Matrix3x2(in FP64Matrix3x2 matrix)
|
||||
{
|
||||
|
|
@ -216,13 +205,7 @@ namespace BGC
|
|||
|
||||
public static void Divide(in FP64Matrix3x2 dividend, double divisor, out FP64Matrix3x2 quotient)
|
||||
{
|
||||
quotient.r1c1 = dividend.r1c1 / divisor;
|
||||
quotient.r1c2 = dividend.r1c2 / divisor;
|
||||
quotient.r1c3 = dividend.r1c3 / divisor;
|
||||
|
||||
quotient.r2c1 = dividend.r2c1 / divisor;
|
||||
quotient.r2c2 = dividend.r2c2 / divisor;
|
||||
quotient.r2c3 = dividend.r2c3 / divisor;
|
||||
Multiply(dividend, 1.0 / divisor, out quotient);
|
||||
}
|
||||
|
||||
public static void GetRightProduct(in FP64Matrix3x2 matrix, in FP64Vector3 vector, out FP64Vector2 result)
|
||||
|
|
@ -21,43 +21,18 @@ using System;
|
|||
* Date: 10 Feb 2019
|
||||
*/
|
||||
|
||||
namespace BGC
|
||||
namespace BasicGeometry
|
||||
{
|
||||
public struct FP64Matrix3x3
|
||||
{
|
||||
public double r1c1, r1c2, r1c3;
|
||||
|
||||
public double r2c1, r2c2, r2c3;
|
||||
|
||||
public double r3c1, r3c2, r3c3;
|
||||
|
||||
public FP64Matrix3x3()
|
||||
{
|
||||
this.r1c1 = 0.0;
|
||||
this.r1c2 = 0.0;
|
||||
this.r1c3 = 0.0;
|
||||
|
||||
this.r2c1 = 0.0;
|
||||
this.r2c2 = 0.0;
|
||||
this.r2c3 = 0.0;
|
||||
|
||||
this.r3c1 = 0.0;
|
||||
this.r3c2 = 0.0;
|
||||
this.r3c3 = 0.0;
|
||||
}
|
||||
public double r1c1 = 0.0, r1c2 = 0.0, r1c3 = 0.0;
|
||||
public double r2c1 = 0.0, r2c2 = 0.0, r2c3 = 0.0;
|
||||
public double r3c1 = 0.0, r3c2 = 0.0, r3c3 = 0.0;
|
||||
|
||||
public FP64Matrix3x3(double d1, double d2, double d3)
|
||||
{
|
||||
this.r1c1 = d1;
|
||||
this.r1c2 = 0.0;
|
||||
this.r1c3 = 0.0;
|
||||
|
||||
this.r2c1 = 0.0;
|
||||
this.r2c2 = d2;
|
||||
this.r2c3 = 0.0;
|
||||
|
||||
this.r3c1 = 0.0;
|
||||
this.r3c2 = 0.0;
|
||||
this.r3c3 = d3;
|
||||
}
|
||||
|
||||
|
|
@ -131,17 +106,19 @@ namespace BGC
|
|||
double r3c2 = this.r1c2 * this.r3c1 - this.r1c1 * this.r3c2;
|
||||
double r3c3 = this.r1c1 * this.r2c2 - this.r1c2 * this.r2c1;
|
||||
|
||||
this.r1c1 = r1c1 / determinant;
|
||||
this.r1c2 = r1c2 / determinant;
|
||||
this.r1c3 = r1c3 / determinant;
|
||||
double mutiplier = 1.0 / determinant;
|
||||
|
||||
this.r2c1 = r2c1 / determinant;
|
||||
this.r2c2 = r2c2 / determinant;
|
||||
this.r2c3 = r2c3 / determinant;
|
||||
this.r1c1 = r1c1 * mutiplier;
|
||||
this.r1c2 = r1c2 * mutiplier;
|
||||
this.r1c3 = r1c3 * mutiplier;
|
||||
|
||||
this.r3c1 = r3c1 / determinant;
|
||||
this.r3c2 = r3c2 / determinant;
|
||||
this.r3c3 = r3c3 / determinant;
|
||||
this.r2c1 = r2c1 * mutiplier;
|
||||
this.r2c2 = r2c2 * mutiplier;
|
||||
this.r2c3 = r2c3 * mutiplier;
|
||||
|
||||
this.r3c1 = r3c1 * mutiplier;
|
||||
this.r3c2 = r3c2 * mutiplier;
|
||||
this.r3c3 = r3c3 * mutiplier;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
@ -263,17 +240,19 @@ namespace BGC
|
|||
double r3c2 = matrix.r1c2 * matrix.r3c1 - matrix.r1c1 * matrix.r3c2;
|
||||
double r3c3 = matrix.r1c1 * matrix.r2c2 - matrix.r1c2 * matrix.r2c1;
|
||||
|
||||
this.r1c1 = r1c1 / determinant;
|
||||
this.r1c2 = r1c2 / determinant;
|
||||
this.r1c3 = r1c3 / determinant;
|
||||
double mutiplier = 1.0 / determinant;
|
||||
|
||||
this.r2c1 = r2c1 / determinant;
|
||||
this.r2c2 = r2c2 / determinant;
|
||||
this.r2c3 = r2c3 / determinant;
|
||||
this.r1c1 = r1c1 * mutiplier;
|
||||
this.r1c2 = r1c2 * mutiplier;
|
||||
this.r1c3 = r1c3 * mutiplier;
|
||||
|
||||
this.r3c1 = r3c1 / determinant;
|
||||
this.r3c2 = r3c2 / determinant;
|
||||
this.r3c3 = r3c3 / determinant;
|
||||
this.r2c1 = r2c1 * mutiplier;
|
||||
this.r2c2 = r2c2 * mutiplier;
|
||||
this.r2c3 = r2c3 * mutiplier;
|
||||
|
||||
this.r3c1 = r3c1 * mutiplier;
|
||||
this.r3c2 = r3c2 * mutiplier;
|
||||
this.r3c3 = r3c3 * mutiplier;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
@ -382,17 +361,7 @@ namespace BGC
|
|||
|
||||
public static void Divide(in FP64Matrix3x3 dividend, double divisor, out FP64Matrix3x3 quotient)
|
||||
{
|
||||
quotient.r1c1 = dividend.r1c1 / divisor;
|
||||
quotient.r1c2 = dividend.r1c2 / divisor;
|
||||
quotient.r1c3 = dividend.r1c3 / divisor;
|
||||
|
||||
quotient.r2c1 = dividend.r2c1 / divisor;
|
||||
quotient.r2c2 = dividend.r2c2 / divisor;
|
||||
quotient.r2c3 = dividend.r2c3 / divisor;
|
||||
|
||||
quotient.r3c1 = dividend.r3c1 / divisor;
|
||||
quotient.r3c2 = dividend.r3c2 / divisor;
|
||||
quotient.r3c3 = dividend.r3c3 / divisor;
|
||||
Multiply(dividend, 1.0 / divisor, out quotient);
|
||||
}
|
||||
|
||||
public static void GetRightProduct(in FP64Matrix3x3 matrix, in FP64Vector3 vector, out FP64Vector3 result)
|
||||
|
|
@ -20,7 +20,7 @@ using System;
|
|||
* Author: Andrey Pokidov
|
||||
* Date: 11 Nov 2024
|
||||
*/
|
||||
namespace BGC
|
||||
namespace BasicGeometry
|
||||
{
|
||||
public class FP64MatrixProduct
|
||||
{
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
using System;
|
||||
using System.Numerics;
|
||||
|
||||
namespace BGC
|
||||
namespace BasicGeometry
|
||||
{
|
||||
public struct FP64Quaternion
|
||||
{
|
||||
public double s0, x1, x2, x3;
|
||||
public double s0 = 0.0, x1 = 0.0, x2 = 0.0, x3 = 0.0;
|
||||
|
||||
public FP64Quaternion(double s0, double x1, double x2, double x3)
|
||||
{
|
||||
|
|
@ -4,7 +4,7 @@
|
|||
* Date: 18 Nov 2024
|
||||
*/
|
||||
|
||||
namespace BGC
|
||||
namespace BasicGeometry
|
||||
{
|
||||
public class FP64Radians
|
||||
{
|
||||
|
|
@ -4,7 +4,7 @@
|
|||
* Date: 18 Nov 2024
|
||||
*/
|
||||
|
||||
namespace BGC
|
||||
namespace BasicGeometry
|
||||
{
|
||||
public class FP64Turns
|
||||
{
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
using System;
|
||||
|
||||
namespace BGC
|
||||
namespace BasicGeometry
|
||||
{
|
||||
public class FP64Utility
|
||||
{
|
||||
|
|
@ -21,14 +21,14 @@ using System;
|
|||
* Date: 1 Feb 2019
|
||||
*/
|
||||
|
||||
namespace BGC
|
||||
namespace BasicGeometry
|
||||
{
|
||||
public struct FP64Vector2
|
||||
{
|
||||
public static readonly FP64Vector2 ZERO = new FP64Vector2(0.0, 0.0);
|
||||
|
||||
public double x1;
|
||||
public double x2;
|
||||
public double x1 = 0.0;
|
||||
public double x2 = 0.0;
|
||||
|
||||
public FP64Vector2(double x1, double x2)
|
||||
{
|
||||
|
|
@ -157,7 +157,7 @@ namespace BGC
|
|||
difference.x2 = minuend.x2 - subtrahend.x2;
|
||||
}
|
||||
|
||||
public static void Muliply(in FP64Vector2 multiplicand, double multiplier, out FP64Vector2 product)
|
||||
public static void Multiply(in FP64Vector2 multiplicand, double multiplier, out FP64Vector2 product)
|
||||
{
|
||||
product.x1 = multiplicand.x1 * multiplier;
|
||||
product.x2 = multiplicand.x2 * multiplier;
|
||||
|
|
@ -165,8 +165,7 @@ namespace BGC
|
|||
|
||||
public static void Divide(in FP64Vector2 dividend, double divisor, out FP64Vector2 quotient)
|
||||
{
|
||||
quotient.x1 = dividend.x1 / divisor;
|
||||
quotient.x2 = dividend.x2 / divisor;
|
||||
Multiply(dividend, 1.0 / divisor, out quotient);
|
||||
}
|
||||
|
||||
public static void GetMean2(in FP64Vector2 vector1, in FP64Vector2 vector2, out FP64Vector2 result)
|
||||
|
|
@ -21,15 +21,15 @@ using System;
|
|||
* Date: 1 Feb 2019
|
||||
*/
|
||||
|
||||
namespace BGC
|
||||
namespace BasicGeometry
|
||||
{
|
||||
public struct FP64Vector3
|
||||
{
|
||||
public static readonly FP64Vector3 ZERO = new FP64Vector3(0.0, 0.0, 0.0);
|
||||
|
||||
public double x1;
|
||||
public double x2;
|
||||
public double x3;
|
||||
public double x1 = 0.0;
|
||||
public double x2 = 0.0;
|
||||
public double x3 = 0.0;
|
||||
|
||||
public FP64Vector3(double x1, double x2, double x3)
|
||||
{
|
||||
|
|
@ -172,7 +172,7 @@ namespace BGC
|
|||
difference.x3 = minuend.x3 - subtrahend.x3;
|
||||
}
|
||||
|
||||
public static void Muliply(in FP64Vector3 multiplicand, double multiplier, out FP64Vector3 product)
|
||||
public static void Multiply(in FP64Vector3 multiplicand, double multiplier, out FP64Vector3 product)
|
||||
{
|
||||
product.x1 = multiplicand.x1 * multiplier;
|
||||
product.x2 = multiplicand.x2 * multiplier;
|
||||
|
|
@ -181,9 +181,7 @@ namespace BGC
|
|||
|
||||
public static void Divide(in FP64Vector3 dividend, double divisor, out FP64Vector3 quotient)
|
||||
{
|
||||
quotient.x1 = dividend.x1 / divisor;
|
||||
quotient.x2 = dividend.x2 / divisor;
|
||||
quotient.x3 = dividend.x3 / divisor;
|
||||
Multiply(dividend, 1.0 / divisor, out quotient);
|
||||
}
|
||||
|
||||
public static void GetMean2(in FP64Vector3 vector1, in FP64Vector3 vector2, out FP64Vector3 result)
|
||||
|
|
@ -20,22 +20,14 @@
|
|||
* Date: 20 Oct 2024
|
||||
*/
|
||||
|
||||
namespace BGC
|
||||
namespace BasicGeometry
|
||||
{
|
||||
public struct FP64Versor
|
||||
{
|
||||
private double s0;
|
||||
private double x1;
|
||||
private double x2;
|
||||
private double x3;
|
||||
|
||||
public FP64Versor()
|
||||
{
|
||||
this.s0 = 1.0;
|
||||
this.x1 = 0.0;
|
||||
this.x2 = 0.0;
|
||||
this.x3 = 0.0;
|
||||
}
|
||||
private double s0 = 1.0;
|
||||
private double x1 = 0.0;
|
||||
private double x2 = 0.0;
|
||||
private double x3 = 0.0;
|
||||
|
||||
public FP64Versor(double s0, double x1, double x2, double x3)
|
||||
{
|
||||
|
|
@ -182,12 +174,6 @@ namespace BGC
|
|||
|
||||
if (1.0 - FP64Utility.TWO_EPSYLON <= squareModule && squareModule <= 1.0 + FP64Utility.TWO_EPSYLON)
|
||||
{
|
||||
if (-1.0 + FP64Utility.EPSYLON < s0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
this.Reset();
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -290,10 +276,12 @@ namespace BGC
|
|||
result.x2 = x2;
|
||||
result.x3 = x3;
|
||||
|
||||
if (squareModule < 1.0 - FP64Utility.TWO_EPSYLON || 1.0 + FP64Utility.TWO_EPSYLON < squareModule)
|
||||
if (1.0 - FP64Utility.TWO_EPSYLON <= squareModule && squareModule <= 1.0 + FP64Utility.TWO_EPSYLON)
|
||||
{
|
||||
result.Normalize(squareModule);
|
||||
return;
|
||||
}
|
||||
|
||||
result.Normalize(squareModule);
|
||||
}
|
||||
|
||||
public static void LoadIdle(out FP64Versor versor)
|
||||
|
|
@ -315,12 +303,6 @@ namespace BGC
|
|||
|
||||
if (1.0 - FP64Utility.TWO_EPSYLON <= squareModule && squareModule <= 1.0 + FP64Utility.TWO_EPSYLON)
|
||||
{
|
||||
if (-1.0 + FP64Utility.EPSYLON < s0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
versor.Reset();
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -8,7 +8,7 @@
|
|||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\BGC\BGC.csproj" />
|
||||
<ProjectReference Include="..\BasicGeometry\BasicGeometry.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
@ -2,7 +2,7 @@
|
|||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Diagnostics;
|
||||
using BGC;
|
||||
using BasicGeometry;
|
||||
|
||||
public static class Program
|
||||
{
|
||||
|
|
@ -12,7 +12,7 @@
|
|||
<PackageReference Include="MSTest.TestAdapter" Version="2.2.7" />
|
||||
<PackageReference Include="MSTest.TestFramework" Version="2.2.7" />
|
||||
<PackageReference Include="coverlet.collector" Version="3.1.0" />
|
||||
<ProjectReference Include="..\BGC\BGC.csproj" />
|
||||
<ProjectReference Include="..\BasicGeometry\BasicGeometry.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
@ -3,9 +3,9 @@ using Microsoft.VisualStudio.TestTools.UnitTesting;
|
|||
using System;
|
||||
using System.IO;
|
||||
|
||||
using BGC;
|
||||
using BasicGeometry;
|
||||
|
||||
namespace BGCTest
|
||||
namespace BasicGeometryTest
|
||||
{
|
||||
[TestClass]
|
||||
public class FP32Vector2Test
|
||||
Loading…
Add table
Add a link
Reference in a new issue