diff --git a/logic/Preparation/Utility/Tools.cs b/logic/Preparation/Utility/Tools.cs deleted file mode 100644 index 78ee847..0000000 --- a/logic/Preparation/Utility/Tools.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; - -namespace Preparation.Utility -{ - public static class Tools - { - public static double CorrectAngle(double angle) // 将幅角转化为主值0~2pi - { - if (double.IsNaN(angle) || double.IsInfinity(angle)) - { - return 0.0; - } - while (angle < 0) - angle += 2 * Math.PI; - while (angle >= 2 * Math.PI) - angle -= 2 * Math.PI; - return angle; - } - } -} diff --git a/logic/Preparation/Utility/Vector.cs b/logic/Preparation/Utility/Vector.cs index 50614f0..77e2f5c 100644 --- a/logic/Preparation/Utility/Vector.cs +++ b/logic/Preparation/Utility/Vector.cs @@ -2,56 +2,40 @@ namespace Preparation.Utility { - public struct Vector + + public class Vector { - public double angle; - public double length; - - public static XYPosition VectorToXY(Vector v) - { - return new XYPosition((int)(v.length * Math.Cos(v.angle)), (int)(v.length * Math.Sin(v.angle))); - } - public Vector2 ToVector2() - { - return new Vector2((int)(this.length * Math.Cos(this.angle)), (int)(this.length * Math.Sin(this.angle))); - } - public static Vector XYToVector(double x, double y) - { - return new Vector(Math.Atan2(y, x), Math.Sqrt((x * x) + (y * y))); - } - public Vector(double angle, double length) - { - if (length < 0) - { - angle += Math.PI; - length = -length; - } - this.angle = Tools.CorrectAngle(angle); - this.length = length; - } - } - - public struct Vector2 - { - public double x; - public double y; - public Vector2(double x, double y) + public int x; + public int y; + public Vector(int x, int y) { this.x = x; this.y = y; } - - public static double operator*(Vector2 v1, Vector2 v2) + public override string ToString() + { + return "(" + x.ToString() + "," + y.ToString() + ")"; + } + public static int operator*(Vector v1, Vector v2) { return (v1.x * v2.x) + (v1.y * v2.y); } - public static Vector2 operator +(Vector2 v1, Vector2 v2) + public static Vector operator +(Vector v1, Vector v2) { - return new Vector2(v1.x + v2.x, v1.y + v2.y); + return new Vector(v1.x + v2.x, v1.y + v2.y); } - public static Vector2 operator -(Vector2 v1, Vector2 v2) + public static Vector operator -(Vector v1, Vector v2) { - return new Vector2(v1.x - v2.x, v1.y - v2.y); + return new Vector(v1.x - v2.x, v1.y - v2.y); } } + public class XYPosition: Vector + { + public XYPosition(int x, int y):base(x,y){} + + public static double Distance(XYPosition p1, XYPosition p2) + { + return Math.Sqrt(((long)(p1.x - p2.x) * (p1.x - p2.x)) + ((long)(p1.y - p2.y) * (p1.y - p2.y))); + } + } } diff --git a/logic/Preparation/Utility/XYPosition.cs b/logic/Preparation/Utility/XYPosition.cs deleted file mode 100644 index 55647ec..0000000 --- a/logic/Preparation/Utility/XYPosition.cs +++ /dev/null @@ -1,49 +0,0 @@ -using System; - -namespace Preparation.Utility -{ - public struct XYPosition - { - public int x; - public int y; - public XYPosition(int x, int y) - { - this.x = x; - this.y = y; - } - public override string ToString() - { - return "(" + x.ToString() + "," + y.ToString() + ")"; - } - public static XYPosition operator +(XYPosition p1, XYPosition p2) - { - return new XYPosition(p1.x + p2.x, p1.y + p2.y); - } - public static XYPosition operator -(XYPosition p1, XYPosition p2) - { - return new XYPosition(p1.x - p2.x, p1.y - p2.y); - } - public static double Distance(XYPosition p1, XYPosition p2) - { - return Math.Sqrt(((long)(p1.x - p2.x) * (p1.x - p2.x)) + ((long)(p1.y - p2.y) * (p1.y - p2.y))); - } - /*public static XYPosition[] GetSquareRange(uint edgeLen) // 从THUAI4的BULLET.CS移植而来,不知还有用否 - { - XYPosition[] range = new XYPosition[edgeLen * edgeLen]; - int offset = (int)(edgeLen >> 1); - for (int i = 0; i < (int)edgeLen; ++i) - { - for (int j = 0; j < (int)edgeLen; ++j) - { - range[i * edgeLen + j].x = i - offset; - range[i * edgeLen + j].y = j - offset; - } - } - return range; - }*/ - public Vector2 ToVector2() - { - return new Vector2(this.x, this.y); - } - } -}