Space-Smash-Out/Assets/FORGE3D/Sci-Fi Effects/Code/Lib/F3DMath.cs

30 lines
1.0 KiB
C#

using UnityEngine;
using System.Collections;
using System;
namespace FORGE3D
{
public class F3DMath : MonoBehaviour
{
//Projects a vector onto a plane. The output is not normalized.
public static Vector3 ProjectVectorOnPlane(Vector3 planeNormal, Vector3 vector)
{
return vector - (Vector3.Dot(vector, planeNormal)*planeNormal);
}
public static float SignedVectorAngle(Vector3 referenceVector, Vector3 otherVector, Vector3 normal)
{
Vector3 perpVector;
float angle;
//Use the geometry object normal and one of the input vectors to calculate the perpendicular vector
perpVector = Vector3.Cross(normal, referenceVector);
//Now calculate the dot product between the perpendicular vector (perpVector) and the other input vector
angle = Vector3.Angle(referenceVector, otherVector);
angle *= Mathf.Sign(Vector3.Dot(perpVector, otherVector));
return angle;
}
}
}