swiss ok, needs more benchmark

This commit is contained in:
Youmu Liu
2026-03-06 18:22:30 +08:00
parent 83997f64d0
commit f6e897ed06
70 changed files with 1889 additions and 3371 deletions
@@ -1,4 +1,4 @@
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
// -----------------------------------------------------------------------
// file="Angle"
// Project: StgSharp
@@ -37,46 +37,60 @@ namespace StgSharp.Mathematics
public static partial class GeometryScaler
{
internal const float DegToRad = 180 / Scalar.Pi;
internal const float DegToRad = 180 / MathF.PI;
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float Cos(Radius r)
public static float Cos(
Radius r
)
{
return MathF.Cos(r._radius);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float Cos(Degree r)
public static float Cos(
Degree r
)
{
return MathF.Cos(r._degree / DegToRad);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float Sin(Radius r)
public static float Sin(
Radius r
)
{
return MathF.Sin(r._radius);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float Sin(Degree r)
public static float Sin(
Degree r
)
{
return MathF.Sin(r._degree / DegToRad);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float Tan(Radius r)
public static float Tan(
Radius r
)
{
return MathF.Tan(r._radius);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float Tan(Degree r)
public static float Tan(
Degree r
)
{
return MathF.Tan(r._degree / DegToRad);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static Degree ToDegree(float value)
public static Degree ToDegree(
float value
)
{
return new Degree(value);
}
@@ -88,12 +102,16 @@ namespace StgSharp.Mathematics
internal float _degree;
public Degree(float dgree)
public Degree(
float dgree
)
{
_degree = dgree;
}
public static implicit operator Radius(Degree d)
public static implicit operator Radius(
Degree d
)
{
return new Radius(d._degree / GeometryScaler.DegToRad);
}
@@ -108,7 +126,9 @@ namespace StgSharp.Mathematics
[Obsolete("Unsafe, you may forget this is radius.", true)]
public Radius() { }
public Radius(float radius)
public Radius(
float radius
)
{
_radius = radius;
}
@@ -119,56 +139,81 @@ namespace StgSharp.Mathematics
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static Radius operator -(Radius r)
public static Radius operator -(
Radius r
)
{
return new Radius(-r._radius);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static Radius operator -(Radius left, Radius Right)
public static Radius operator -(
Radius left,
Radius Right
)
{
return new Radius(left._radius - Right._radius);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool operator !=(Radius left, Radius right)
public static bool operator !=(
Radius left,
Radius right
)
{
return left._radius != right._radius;
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static Radius operator *(Radius left, float right)
public static Radius operator *(
Radius left,
float right
)
{
return new Radius(left._radius * right);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static Radius operator /(Radius left, float right)
public static Radius operator /(
Radius left,
float right
)
{
return new Radius(left._radius / right);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float operator /(Radius left, Radius right)
public static float operator /(
Radius left,
Radius right
)
{
return left._radius / right._radius;
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static Radius operator +(Radius left, Radius Right)
public static Radius operator +(
Radius left,
Radius Right
)
{
return new Radius(left._radius + Right._radius);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool operator ==(Radius left, Radius right)
public static bool operator ==(
Radius left,
Radius right
)
{
return left._radius == right._radius;
}
public static implicit operator Degree(Radius r)
public static implicit operator Degree(
Radius r
)
{
return new Degree((r._radius * 180) / Scalar.Pi);
return new Degree(r._radius * 180 / MathF.PI);
}
}