Files
stgsharp/src/Nitload.Mathematics/Geometries/Coordination/CoordinationBase.cs
T

77 lines
2.1 KiB
C#

// -----------------------------------------------------------------------------
// file="CoordinationBase"
// Project: StgSharp
// Copyright (c) Nitload.
// SPDX-License-Identifier: MIT
// -----------------------------------------------------------------------------
using Nitload.Mathematics.Numeric.Graphics;
using System.Runtime.CompilerServices;
namespace Nitload.Geometries
{
public abstract class CoordinationBase
{
private bool globalCoordAvailable;
private CoordinationBase localCoordination;
private GMatrix44<float> coordMat;
public CoordinationBase(
CoordinationBase localCoordination
)
{
this.localCoordination = localCoordination;
coordMat = new GMatrix44<float>();
}
public virtual Point LocalOrigin
{
get => new Point(new Vec3<float>(coordMat[3, 0], coordMat[3, 1], coordMat[3, 2]));
internal set
{
coordMat[3, 0] = value.Coord.X;
coordMat[3, 1] = value.Coord.Y;
coordMat[3, 2] = value.Coord.Z;
}
}
public virtual Vec3<float> LocalX
{
get => new Vec3<float>(coordMat[3, 0], coordMat[3, 1], coordMat[3, 2]);
internal set
{
coordMat[3, 0] = value.X;
coordMat[3, 1] = value.Y;
coordMat[3, 2] = value.Z;
}
}
public virtual Vec3<float> LocalY
{
get => new Vec3<float>(coordMat[3, 0], coordMat[3, 1], coordMat[3, 2]);
internal set
{
coordMat[3, 0] = value.X;
coordMat[3, 1] = value.Y;
coordMat[3, 2] = value.Z;
}
}
public virtual Vec3<float> LocalZ
{
get => new Vec3<float>(coordMat[3, 0], coordMat[3, 1], coordMat[3, 2]);
set
{
coordMat[3, 0] = value.X;
coordMat[3, 1] = value.Y;
coordMat[3, 2] = value.Z;
}
}
protected ref GMatrix44<float> CoordMat => ref coordMat;
}
}