using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace YKMoon.Math
{
///
/// 整理的数学公式等等
///
public partial class YKMath
{
public static long Min(long value1, long value2)
{
return value1 < value2 ? value1 : value2;
}
public static long Max(long value1, long value2)
{
return value1 > value2 ? value1 : value2;
}
public static double Min(double value1, double value2)
{
return value1 < value2 ? value1 : value2;
}
public static double Max(double value1, double value2)
{
return value1 > value2 ? value1 : value2;
}
public static float MinMaxClamp(float value, float rangeA, float rangeB)
{
float max = rangeA > rangeB ? rangeA : rangeB;
float min = rangeA < rangeB ? rangeA : rangeB;
return Mathf.Max(Mathf.Min(value, max), min);
}
public static int MinMaxClamp(int value, int rangeA, int rangeB)
{
int max = rangeA > rangeB ? rangeA : rangeB;
int min = rangeA < rangeB ? rangeA : rangeB;
return Mathf.Max(Mathf.Min(value, max), min);
}
public static long MinMaxClamp(long value, long rangeA, long rangeB)
{
long max = rangeA > rangeB ? rangeA : rangeB;
long min = rangeA < rangeB ? rangeA : rangeB;
return Max(Min(value, max), min);
}
///
/// 获得Vector3,忽略Y轴
///
public static Vector3 GetVector3IgnoreYAxis(Vector3 v)
{
v.y = 0f;
return v;
}
///
/// 获得距离,忽略Y轴
///
public static float GetDistanceIgnoreYAxis(Vector3 a, Vector3 b)
{
var delta = a - b;
delta.y = 0f;
return delta.magnitude;
}
///
/// 获得Delta,忽略y轴
///
public static Vector3 GetDeltaIgnoreYAxis(Vector3 from, Vector3 to)
{
var delta = to - from;
delta.y = 0f;
return delta;
}
///
/// 获得方向,忽略y轴
///
public static Vector3 GetDirIgnoreYAxis(Vector3 from, Vector3 to)
{
var delta = to - from;
delta.y = 0f;
return delta.normalized;
}
///
/// 获得角度,忽略y轴
///
public static float GetAngleIgnoreYAxis(Vector3 from, Vector3 to)
{
from.y = 0;
to.y = 0;
return Vector3.Angle(from, to);
}
///
/// 获得方向
///
public static Vector3 GetDir(Vector3 from, Vector3 to)
{
return (to - from).normalized;
}
public static Vector3 RotatePointAroundPivot(Vector3 point, Vector3 pivot, Vector3 angles)
{
return Quaternion.Euler(angles) * (point - pivot) + pivot;
}
public static float EulerSin(float eulerAngle)
{
return Mathf.Sin(eulerAngle * Mathf.Deg2Rad);
}
public static float EulerCos(float eulerAngle)
{
return Mathf.Cos(eulerAngle * Mathf.Deg2Rad);
}
public static float EulerTan(float eulerAngle)
{
return Mathf.Tan(eulerAngle * Mathf.Deg2Rad);
}
public static float EulerATan(float value)
{
return Mathf.Atan(value) * Mathf.Rad2Deg;
}
public static float EulerCot(float eulerAngle)
{
return 1 / EulerTan(eulerAngle);
}
public static float EulerASin(float value)
{
return Mathf.Asin(value) * Mathf.Rad2Deg;
}
public static float EulerACos(float value)
{
return Mathf.Acos(value) * Mathf.Rad2Deg;
}
///
/// [0,360)
///
///
///
public static float FormatAngleInto360(float angle)
{
while(angle > 360f) {
angle -= 360f;
}
while(angle < 0f) {
angle += 360f;
}
return angle;
}
///
/// [-180, 180]
///
///
///
public static float FormatAngleInto180f(float angle)
{
angle = FormatAngleInto360(angle);
if(angle > 180f) {
angle = angle - 360f;
}
return angle;
}
}
}