Skip to content

Commit

Permalink
Angle - rename T to TScalar
Browse files Browse the repository at this point in the history
  • Loading branch information
dfkeenan committed Nov 26, 2023
1 parent de5f43c commit 2765624
Showing 1 changed file with 96 additions and 96 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,152 +29,152 @@ Where it is appropriate for a type in this proposal to have both integer and flo
Interface implementations not included for brevity.

```csharp
public readonly struct Angle<T>
: IEquatable<Angle<T>>
, IEqualityOperators<Angle<T>,Angle<T>, bool>
, IComparable<Angle<T>>
, IComparisonOperators<Angle<T>,Angle<T>, bool>
, IAdditionOperators<Angle<T>,Angle<T>,Angle<T>>
, IDivisionOperators<Angle<T>, T, Angle<T>>
, IDivisionOperators<T, Angle<T>, Angle<T>>
, IMultiplyOperators<Angle<T>, T, Angle<T>>
, IMultiplyOperators<T, Angle<T>, Angle<T>>
, IModulusOperators<Angle<T>, Angle<T>, Angle<T>>
, ISubtractionOperators<Angle<T>,Angle<T>,Angle<T>>
, IParsable<Angle<T>>
, ISpanParsable<Angle<T>>
, IUtf8SpanParsable<Angle<T>>
public readonly struct Angle<TScalar>
: IEquatable<Angle<TScalar>>
, IEqualityOperators<Angle<TScalar>,Angle<TScalar>, bool>
, IComparable<Angle<TScalar>>
, IComparisonOperators<Angle<TScalar>,Angle<TScalar>, bool>
, IAdditionOperators<Angle<TScalar>,Angle<TScalar>,Angle<TScalar>>
, IDivisionOperators<Angle<TScalar>, TScalar, Angle<TScalar>>
, IDivisionOperators<TScalar, Angle<TScalar>, Angle<TScalar>>
, IMultiplyOperators<Angle<TScalar>, TScalar, Angle<TScalar>>
, IMultiplyOperators<TScalar, Angle<TScalar>, Angle<TScalar>>
, IModulusOperators<Angle<TScalar>, Angle<TScalar>, Angle<TScalar>>
, ISubtractionOperators<Angle<TScalar>,Angle<TScalar>,Angle<TScalar>>
, IParsable<Angle<TScalar>>
, ISpanParsable<Angle<TScalar>>
, IUtf8SpanParsable<Angle<TScalar>>
, IFormattable
, IUtf8SpanFormattable
where T : IFloatingPointIeee754<T>
where TScalar : IFloatingPointIeee754<TScalar>
{

public readonly T TotalRadians;
public readonly TScalar TotalRadians;

public Angle(T totalRadians) { }
public Angle(TScalar totalRadians) { }

/// <summary>Angle in degrees in the range [0, 360].</summary>
public T Degrees { get; }
public TScalar Degrees { get; }
/// <summary>Total angle in degrees.</summary>
public T TotalDegrees { get; }
public TScalar TotalDegrees { get; }
/// <summary>Angle in radians in range [π, -π].</summary>
public T Radians { get; }
public TScalar Radians { get; }

public T Hours { get; }
public T Minutes { get; }
public T Seconds { get; }
public TScalar Hours { get; }
public TScalar Minutes { get; }
public TScalar Seconds { get; }


/// <summary>
/// Gets a System.Boolean that determines whether this Angle<T>
/// Gets a System.Boolean that determines whether this Angle<TScalar>
/// is a right angle (i.e. 90° or π/2).
/// </summary>
public bool IsRight { get; }

/// <summary>
/// Gets a System.Boolean that determines whether this Angle<T>
/// Gets a System.Boolean that determines whether this Angle<TScalar>
/// is a straight angle (i.e. 180° or π).
/// </summary>
public bool IsStraight { get; }

/// <summary>
/// Gets a System.Boolean that determines whether this Angle<T>
/// Gets a System.Boolean that determines whether this Angle<TScalar>
/// is a full rotation angle (i.e. 360° or 2π).
/// </summary>
public bool IsFullRotation { get; }

/// <summary>
/// Gets a System.Boolean that determines whether this Angle<T>
/// Gets a System.Boolean that determines whether this Angle<TScalar>
/// is an oblique angle (i.e. is not 90° or a multiple of 90°).
/// </summary>
public bool IsOblique { get; }

/// <summary>
/// Gets a System.Boolean that determines whether this Angle<T>
/// Gets a System.Boolean that determines whether this Angle<TScalar>
/// is an acute angle (i.e. less than 90° but greater than 0°).
/// </summary>
public bool IsAcute { get; }

/// <summary>
/// Gets a System.Boolean that determines whether this Angle<T>
/// Gets a System.Boolean that determines whether this Angle<TScalar>
/// is an obtuse angle (i.e. greater than 90° but less than 180°).
/// </summary>
public bool IsObtuse { get; }

/// <summary>
/// Gets a System.Boolean that determines whether this Angle<T>
/// Gets a System.Boolean that determines whether this Angle<TScalar>
/// is a reflex angle (i.e. greater than 180° but less than 360°).
/// </summary>
public bool IsReflex { get; }

/// <summary>
/// Gets a Angle<T> instance that complements this angle (i.e. the two angles add to 90°).
/// Gets a Angle<TScalar> instance that complements this angle (i.e. the two angles add to 90°).
/// </summary>
public Angle<T> Complement { get; }
public Angle<TScalar> Complement { get; }

/// <summary>
/// Gets a Angle<T> instance that supplements this angle (i.e. the two angles add to 180°).
/// Gets a Angle<TScalar> instance that supplements this angle (i.e. the two angles add to 180°).
/// </summary>
public Angle<T> Supplement { get; }
public Angle<TScalar> Supplement { get; }

/// <summary>
/// Wraps this Angle<T> to be in the range [π, -π].
/// Wraps this Angle<TScalar> to be in the range [π, -π].
/// </summary>
public Angle<T> Wrap() => default;
public Angle<TScalar> Wrap() => default;

/// <summary>
/// Wraps this Angle<T> to be in the range [0, 2π).
/// Wraps this Angle<TScalar> to be in the range [0, 2π).
/// </summary>
public Angle<T> WrapPositive() => default;
public Angle<TScalar> WrapPositive() => default;


/// <summary>Computes the arc-cosine of a value.</summary>
public T Acos() => default;
public TScalar Acos() => default;

/// <summary>Computes the arc-cosine of a value and divides the result by <c>pi</c>.</summary>
public T AcosPi() => default;
public TScalar AcosPi() => default;

/// <summary>Computes the arc-sine of a value.</summary>
public T Asin() => default;
public TScalar Asin() => default;

/// <summary>Computes the arc-sine of a value and divides the result by <c>pi</c>.</summary>
public T AsinPi() => default;
public TScalar AsinPi() => default;

/// <summary>Computes the arc-tangent of a value.</summary>
public T Atan() => default;
public TScalar Atan() => default;

/// <summary>Computes the arc-tangent of a value and divides the result by pi.</summary>
public T AtanPi() => default;
public TScalar AtanPi() => default;

/// <summary>Computes the cosine of a value.</summary>
public T Cos() => default;
public TScalar Cos() => default;

/// <summary>Computes the cosine of a value that has been multipled by <c>pi</c>.</summary>
public T CosPi() => default;
public TScalar CosPi() => default;

/// <summary>Computes the sine of a value.</summary>
/// <param name="x">The value, in radians, whose sine is to be computed.</param>
/// <returns>The sine of <paramref name="x" />.</returns>
/// <remarks>This computes <c>sin(x)</c>.</remarks>
public T Sin() => default;
public TScalar Sin() => default;

/// <summary>Computes the sine and cosine of a value.</summary>
public (T Sin, T Cos) SinCos() => default;
public (TScalar Sin, TScalar Cos) SinCos() => default;

/// <summary>Computes the sine and cosine of a value that has been multiplied by <c>pi</c>.</summary>
public (T SinPi, T CosPi) SinCosPi() => default;
public (TScalar SinPi, TScalar CosPi) SinCosPi() => default;

/// <summary>Computes the sine of a value that has been multiplied by <c>pi</c>.</summary>
public T SinPi() => default;
public TScalar SinPi() => default;

/// <summary>Computes the tangent of a value.</summary>
public T Tan() => default;
public TScalar Tan() => default;

/// <summary>Computes the tangent of a value that has been multipled by <c>pi</c>.</summary>
public T TanPi() => default;
public TScalar TanPi() => default;

/// <summary>Implicit cast in radians</summary>
public static implicit operator T(Angle<T> angle) => default;
public static implicit operator TScalar(Angle<TScalar> angle) => default;
}

```
Expand All @@ -185,84 +185,84 @@ public readonly struct Angle<T>

public static class Angle
{
public static Angle<T> FromRadians<T>(T radians)
where T : IFloatingPointIeee754<T>
public static Angle<TScalar> FromRadians<TScalar>(TScalar radians)
where TScalar : IFloatingPointIeee754<TScalar>
=> default;
public static Angle<T> FromDegrees<T>(T degrees)
where T : IFloatingPointIeee754<T>
public static Angle<TScalar> FromDegrees<TScalar>(TScalar degrees)
where TScalar : IFloatingPointIeee754<TScalar>
=> default;
public static Angle<T> FromHours<T>(T hours)
where T : IFloatingPointIeee754<T>
public static Angle<TScalar> FromHours<TScalar>(TScalar hours)
where TScalar : IFloatingPointIeee754<TScalar>
=> default;
public static Angle<T> FromMinutes<T>(T minutes)
where T : IFloatingPointIeee754<T>
public static Angle<TScalar> FromMinutes<TScalar>(TScalar minutes)
where TScalar : IFloatingPointIeee754<TScalar>
=> default;
public static Angle<T> FromSeconds<T>(T seconds)
where T : IFloatingPointIeee754<T>
public static Angle<TScalar> FromSeconds<TScalar>(TScalar seconds)
where TScalar : IFloatingPointIeee754<TScalar>
=> default;

public static Angle<T> FromTimeSpan<T>(TimeSpan timeSpan)
where T : IFloatingPointIeee754<T>
public static Angle<TScalar> FromTimeSpan<TScalar>(TimeSpan timeSpan)
where TScalar : IFloatingPointIeee754<TScalar>
=> default;

public static Angle<T> Min<T>(Angle<T> left, Angle<T> right)
where T : IFloatingPointIeee754<T>
public static Angle<TScalar> Min<TScalar>(Angle<TScalar> left, Angle<TScalar> right)
where TScalar : IFloatingPointIeee754<TScalar>
=> default;

public static Angle<T> Max<T>(Angle<T> left, Angle<T> right)
where T : IFloatingPointIeee754<T>
public static Angle<TScalar> Max<TScalar>(Angle<TScalar> left, Angle<TScalar> right)
where TScalar : IFloatingPointIeee754<TScalar>
=> default;

public static Angle<T> Clamp<T>(Angle<T> value, Angle<T> min, Angle<T> max)
where T : IFloatingPointIeee754<T>
public static Angle<TScalar> Clamp<TScalar>(Angle<TScalar> value, Angle<TScalar> min, Angle<TScalar> max)
where TScalar : IFloatingPointIeee754<TScalar>
=> default;

public static Angle<T> Lerp<T>(Angle<T> start, Angle<T> end, T amount)
where T : IFloatingPointIeee754<T>
public static Angle<TScalar> Lerp<TScalar>(Angle<TScalar> start, Angle<TScalar> end, TScalar amount)
where TScalar : IFloatingPointIeee754<TScalar>
=> default;

public static Angle<T> SmoothStep<T>(Angle<T> start, Angle<T> end, T amount)
where T : IFloatingPointIeee754<T>
public static Angle<TScalar> SmoothStep<TScalar>(Angle<TScalar> start, Angle<TScalar> end, TScalar amount)
where TScalar : IFloatingPointIeee754<TScalar>
=> default;

public static Angle<T> Atan2<T>(T y, T x)
where T : IFloatingPointIeee754<T>
public static Angle<TScalar> Atan2<TScalar>(TScalar y, TScalar x)
where TScalar : IFloatingPointIeee754<TScalar>
=> default;

public static Angle<T> ArcTan<T>(T y, T x)
where T : IFloatingPointIeee754<T>
public static Angle<TScalar> ArcTan<TScalar>(TScalar y, TScalar x)
where TScalar : IFloatingPointIeee754<TScalar>
=> default;

public static Angle<T> ArcSin<T>(T sin)
where T : IFloatingPointIeee754<T>
public static Angle<TScalar> ArcSin<TScalar>(TScalar sin)
where TScalar : IFloatingPointIeee754<TScalar>
=> default;

public static Angle<T> ArcCos<T>(T cos)
where T : IFloatingPointIeee754<T>
public static Angle<TScalar> ArcCos<TScalar>(TScalar cos)
where TScalar : IFloatingPointIeee754<TScalar>
=> default;

public static Angle<T> Between<T>(Vector2F<T> left, Vector2F<T> right)
where T : IFloatingPointIeee754<T>
public static Angle<TScalar> Between<TScalar>(Vector2F<TScalar> left, Vector2F<TScalar> right)
where TScalar : IFloatingPointIeee754<TScalar>
=> default;

public static Angle<T> Between<T>(Vector3F<T> left, Vector3F<T> right)
where T : IFloatingPointIeee754<T>
public static Angle<TScalar> Between<TScalar>(Vector3F<TScalar> left, Vector3F<TScalar> right)
where TScalar : IFloatingPointIeee754<TScalar>
=> default;

public static Angle<T> ZeroAngle<T>()
where T : IFloatingPointIeee754<T>
public static Angle<TScalar> ZeroAngle<TScalar>()
where TScalar : IFloatingPointIeee754<TScalar>
=> default;

public static Angle<T> RightAngle<T>()
where T : IFloatingPointIeee754<T>
public static Angle<TScalar> RightAngle<TScalar>()
where TScalar : IFloatingPointIeee754<TScalar>
=> default;

public static Angle<T> StraightAngle<T>()
where T : IFloatingPointIeee754<T>
public static Angle<TScalar> StraightAngle<TScalar>()
where TScalar : IFloatingPointIeee754<TScalar>
=> default;

public static Angle<T> FullRotationAngle<T>()
where T : IFloatingPointIeee754<T>
public static Angle<TScalar> FullRotationAngle<TScalar>()
where TScalar : IFloatingPointIeee754<TScalar>
=> default;
}
```

0 comments on commit 2765624

Please sign in to comment.