RoboticArms/Library/PackageCache/com.unity.splines@d3e1e500c9a0/Runtime/MathUtility.cs
2025-11-17 15:16:36 +07:00

31 lines
1.1 KiB
C#

using Unity.Mathematics;
using UnityEngine;
namespace UnityEngine.Splines
{
static class MathUtility
{
// Transforms a direction by this matrix - float4x4 equivalent of Matrix4x4.MultiplyVector.
public static float3 MultiplyVector(float4x4 matrix, float3 vector)
{
float3 res;
res.x = matrix.c0.x * vector.x + matrix.c1.x * vector.y + matrix.c2.x * vector.z;
res.y = matrix.c0.y * vector.x + matrix.c1.y * vector.y + matrix.c2.y * vector.z;
res.z = matrix.c0.z * vector.x + matrix.c1.z * vector.y + matrix.c2.z * vector.z;
return res;
}
// Returns true if the corresponding elements in each of the matrices are equal
// Unity.Mathematics does not have a math.all(bool4x4).
public static bool All(float4x4 matrixA, float4x4 matrixB)
{
var equal4x4 = (matrixA == matrixB);
return math.all(equal4x4.c0) &&
math.all(equal4x4.c1) &&
math.all(equal4x4.c2) &&
math.all(equal4x4.c3);
}
}
}