no more windows??
This commit is contained in:
@@ -1,51 +1,52 @@
|
||||
using System;
|
||||
using System.Globalization;
|
||||
|
||||
namespace _2DGAMELIB;
|
||||
|
||||
public static class Qua
|
||||
namespace _2DGAMELIB
|
||||
{
|
||||
public static QuaternionD RotationZQ(this double angle)
|
||||
public static class Qua
|
||||
{
|
||||
double num = angle * 0.5;
|
||||
QuaternionD result = default(QuaternionD);
|
||||
result.X = 0.0;
|
||||
result.Y = 0.0;
|
||||
result.Z = System.Math.Sin(num);
|
||||
result.W = System.Math.Cos(num);
|
||||
return result;
|
||||
public static QuaternionD RotationZQ(this double angle)
|
||||
{
|
||||
double num = angle * 0.5;
|
||||
QuaternionD result = default(QuaternionD);
|
||||
result.X = 0.0;
|
||||
result.Y = 0.0;
|
||||
result.Z = System.Math.Sin(num);
|
||||
result.W = System.Math.Cos(num);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static void TransformCoordinate(ref Vector2D coord, ref QuaternionD rotation, out Vector2D result)
|
||||
{
|
||||
double num = rotation.Y + rotation.Y;
|
||||
double num2 = rotation.Z + rotation.Z;
|
||||
double num3 = rotation.W * num2;
|
||||
double num4 = rotation.X * num;
|
||||
double num5 = rotation.Z * num2;
|
||||
result.X = coord.X * (1.0 - rotation.Y * num - num5) + coord.Y * (num4 - num3);
|
||||
result.Y = coord.X * (num4 + num3) + coord.Y * (1.0 - rotation.X * (rotation.X + rotation.X) - num5);
|
||||
}
|
||||
|
||||
public static Vector2D TransformCoordinateBP(this Vector2D coord, Vector2D BasePoint, QuaternionD rotation)
|
||||
{
|
||||
Vec.Subtract(ref coord, ref BasePoint, out coord);
|
||||
TransformCoordinate(ref coord, ref rotation, out var result);
|
||||
Vec.Add(ref result, ref BasePoint, out result);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
public static void TransformCoordinate(ref Vector2D coord, ref QuaternionD rotation, out Vector2D result)
|
||||
{
|
||||
double num = rotation.Y + rotation.Y;
|
||||
double num2 = rotation.Z + rotation.Z;
|
||||
double num3 = rotation.W * num2;
|
||||
double num4 = rotation.X * num;
|
||||
double num5 = rotation.Z * num2;
|
||||
result.X = coord.X * (1.0 - rotation.Y * num - num5) + coord.Y * (num4 - num3);
|
||||
result.Y = coord.X * (num4 + num3) + coord.Y * (1.0 - rotation.X * (rotation.X + rotation.X) - num5);
|
||||
}
|
||||
|
||||
public static Vector2D TransformCoordinateBP(this Vector2D coord, Vector2D BasePoint, QuaternionD rotation)
|
||||
//used in a total of 1 places
|
||||
[Serializable]
|
||||
public struct QuaternionD
|
||||
{
|
||||
Vec.Subtract(ref coord, ref BasePoint, out coord);
|
||||
TransformCoordinate(ref coord, ref rotation, out var result);
|
||||
Vec.Add(ref result, ref BasePoint, out result);
|
||||
return result;
|
||||
public double X;
|
||||
|
||||
public double Y;
|
||||
|
||||
public double Z;
|
||||
|
||||
public double W;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//used in a total of 1 places
|
||||
[Serializable]
|
||||
public struct QuaternionD
|
||||
{
|
||||
public double X;
|
||||
|
||||
public double Y;
|
||||
|
||||
public double Z;
|
||||
|
||||
public double W;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user