Editor/Geometry/ArchStairAxes.cs
namespace Sunless.Architecture;
public readonly struct ArchStairAxes {
public Vector2 Origin { get; init; }
public float Yaw { get; init; }
public Vector2 Along => new( MathF.Cos( Yaw.DegreeToRadian() ), MathF.Sin( Yaw.DegreeToRadian() ) );
public Vector2 Across {
get {
var along = Along;
return new Vector2( -along.y, along.x );
}
}
public Vector2 Flat( float along, float across ) => Origin + Along * along + Across * across;
public Vector3 Point( float along, float across, float height ) {
var flat = Flat( along, across );
return new Vector3( flat.x, flat.y, height );
}
public List<Vector2> Rect( float alongFrom, float alongTo, float acrossFrom, float acrossTo ) => new()
{
Flat( alongFrom, acrossFrom ),
Flat( alongTo, acrossFrom ),
Flat( alongTo, acrossTo ),
Flat( alongFrom, acrossTo )
};
}