Added extensive Vector3 Rotation methods in Managed code & Debug draw is always available (temporarily). #273
|
@ -21,6 +21,9 @@ of DigiPen Institute of Technology is prohibited.
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
// Project Headers
|
// Project Headers
|
||||||
#include "Math.hxx"
|
#include "Math.hxx"
|
||||||
|
#include "Quaternion.hxx"
|
||||||
|
#include "Math/Vector/SHVec3.h"
|
||||||
|
#include "Utility/Convert.hxx"
|
||||||
|
|
||||||
namespace SHADE
|
namespace SHADE
|
||||||
{
|
{
|
||||||
|
@ -148,21 +151,21 @@ namespace SHADE
|
||||||
{
|
{
|
||||||
return vec - (Project(vec, normal.GetNormalised()) * 2.0f);
|
return vec - (Project(vec, normal.GetNormalised()) * 2.0f);
|
||||||
}
|
}
|
||||||
Vector3 Vector3::RotateRadians(Vector3 vec, float radians)
|
Vector3 Vector3::RotateX(Vector3 vec, float radians)
|
||||||
{
|
{
|
||||||
const float SINE = sin(radians);
|
return Convert::ToCLI(SHVec3::RotateX(Convert::ToNative(vec), radians));
|
||||||
const float COSINE = cos(radians);
|
|
||||||
|
|
||||||
return Vector3
|
|
||||||
(
|
|
||||||
vec.x * COSINE - vec.y * SINE,
|
|
||||||
vec.x * SINE + vec.y * COSINE,
|
|
||||||
vec.z
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
Vector3 Vector3::RotateDegrees(Vector3 vec, float degrees)
|
Vector3 Vector3::RotateY(Vector3 vec, float radians)
|
||||||
{
|
{
|
||||||
return RotateRadians(vec, Math::DegreesToRadians(degrees));
|
return Convert::ToCLI(SHVec3::RotateY(Convert::ToNative(vec), radians));
|
||||||
|
}
|
||||||
|
Vector3 Vector3::RotateZ(Vector3 vec, float radians)
|
||||||
|
{
|
||||||
|
return Convert::ToCLI(SHVec3::RotateZ(Convert::ToNative(vec), radians));
|
||||||
|
}
|
||||||
|
Vector3 Vector3::Rotate(Vector3 vec, Vector3 axis, float radians)
|
||||||
|
{
|
||||||
|
return Convert::ToCLI(SHVec3::Rotate(Convert::ToNative(vec), Convert::ToNative(axis), radians));
|
||||||
}
|
}
|
||||||
Vector3 Vector3::Min(Vector3 lhs, Vector3 rhs)
|
Vector3 Vector3::Min(Vector3 lhs, Vector3 rhs)
|
||||||
{
|
{
|
||||||
|
|
|
@ -19,6 +19,8 @@ of DigiPen Institute of Technology is prohibited.
|
||||||
// Project Includes
|
// Project Includes
|
||||||
#include "Vector2.hxx"
|
#include "Vector2.hxx"
|
||||||
|
|
||||||
|
value struct Quaternion;
|
||||||
|
|
||||||
namespace SHADE
|
namespace SHADE
|
||||||
{
|
{
|
||||||
///<summary>
|
///<summary>
|
||||||
|
@ -266,7 +268,7 @@ namespace SHADE
|
||||||
/// <returns>The Vector3 that represents vec reflected across normal.</returns>
|
/// <returns>The Vector3 that represents vec reflected across normal.</returns>
|
||||||
static Vector3 Reflect(Vector3 vec, Vector3 normal);
|
static Vector3 Reflect(Vector3 vec, Vector3 normal);
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Rotates a Vector3 on the Z-axis by a specified angle in an anti-clockwise
|
/// Rotates a Vector3 about the X-axis by a specified angle in an anti-clockwise
|
||||||
/// direction.
|
/// direction.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="vec">A Vector3 to rotate.</param>
|
/// <param name="vec">A Vector3 to rotate.</param>
|
||||||
|
@ -274,17 +276,37 @@ namespace SHADE
|
||||||
/// Angle to rotate the vector by in an anti-clockwise direction in radians.
|
/// Angle to rotate the vector by in an anti-clockwise direction in radians.
|
||||||
/// </param>
|
/// </param>
|
||||||
/// <returns>The Vector3 that represents the rotated vector.</returns>
|
/// <returns>The Vector3 that represents the rotated vector.</returns>
|
||||||
static Vector3 RotateRadians(Vector3 vec, float radians);
|
static Vector3 RotateX(Vector3 vec, float radians);
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Rotates a Vector3 on the Z-axis by a specified angle in an anti-clockwise
|
/// Rotates a Vector3 about the Y-axis by a specified angle in an anti-clockwise
|
||||||
/// direction.
|
/// direction.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="vec">A Vector3 to rotate.</param>
|
/// <param name="vec">A Vector3 to rotate.</param>
|
||||||
/// <param name="degrees">
|
/// <param name="radians">
|
||||||
/// Angle to rotate the vector by in an anti-clockwise direction in degrees.
|
/// Angle to rotate the vector by in an anti-clockwise direction in radians.
|
||||||
/// </param>
|
/// </param>
|
||||||
/// <returns>The Vector3 that represents the rotated vector.</returns>
|
/// <returns>The Vector3 that represents the rotated vector.</returns>
|
||||||
static Vector3 RotateDegrees(Vector3 vec, float degrees);
|
static Vector3 RotateY(Vector3 vec, float radians);
|
||||||
|
/// <summary>
|
||||||
|
/// Rotates a Vector3 about the Z-axis by a specified angle in an anti-clockwise
|
||||||
|
/// direction.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="vec">A Vector3 to rotate.</param>
|
||||||
|
/// <param name="radians">
|
||||||
|
/// Angle to rotate the vector by in an anti-clockwise direction in radians.
|
||||||
|
/// </param>
|
||||||
|
/// <returns>The Vector3 that represents the rotated vector.</returns>
|
||||||
|
static Vector3 RotateZ(Vector3 vec, float radians);
|
||||||
|
/// <summary>
|
||||||
|
/// Rotates a Vector3 about an arbitrary axis by a specified angle in an anti-clockwise
|
||||||
|
/// direction.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="vec">A Vector3 to rotate.</param>
|
||||||
|
/// <param name="radians">
|
||||||
|
/// Angle to rotate the vector by in an anti-clockwise direction in radians.
|
||||||
|
/// </param>
|
||||||
|
/// <returns>The Vector3 that represents the rotated vector.</returns>
|
||||||
|
static Vector3 Rotate(Vector3 vec, Vector3 axis, float radians);
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Computes and returns a Vector3 that is made from the smallest components of
|
/// Computes and returns a Vector3 that is made from the smallest components of
|
||||||
/// the two specified Vector3s.
|
/// the two specified Vector3s.
|
||||||
|
|
|
@ -25,7 +25,6 @@ of DigiPen Institute of Technology is prohibited.
|
||||||
// Project Includes
|
// Project Includes
|
||||||
#include "Engine/Entity.hxx"
|
#include "Engine/Entity.hxx"
|
||||||
#include "Math/Vector2.hxx"
|
#include "Math/Vector2.hxx"
|
||||||
#include "Math/Vector3.hxx"
|
|
||||||
#include "Math/Quaternion.hxx"
|
#include "Math/Quaternion.hxx"
|
||||||
#include "Math/Ray.hxx"
|
#include "Math/Ray.hxx"
|
||||||
#include "Physics/RaycastHit.hxx"
|
#include "Physics/RaycastHit.hxx"
|
||||||
|
@ -34,6 +33,8 @@ of DigiPen Institute of Technology is prohibited.
|
||||||
#include "Graphics/Color.hxx"
|
#include "Graphics/Color.hxx"
|
||||||
#include "Physics/Collision/SHPhysicsRaycastResult.h"
|
#include "Physics/Collision/SHPhysicsRaycastResult.h"
|
||||||
|
|
||||||
|
value struct Vector3;
|
||||||
|
|
||||||
namespace SHADE
|
namespace SHADE
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
Loading…
Reference in New Issue