Survivalcraft API 1.8.2.3 v1.8.2.3
Survivalcraft 2.4
载入中...
搜索中...
未找到
Point2.cs
浏览该文件的文档.
1namespace Engine {
2 public struct Point2 : IEquatable<Point2> {
3 public int X;
4
5 public int Y;
6
7 public static readonly Point2 Zero = default;
8
9 public static readonly Point2 One = new(1, 1);
10
11 public static readonly Point2 UnitX = new(1, 0);
12
13 public static readonly Point2 UnitY = new(0, 1);
14
15 public Point2(int v) {
16 X = v;
17 Y = v;
18 }
19
20 public Point2(int x, int y) {
21 X = x;
22 Y = y;
23 }
24
25 public static implicit operator Point2((int X, int Y) v) => new(v.X, v.Y);
26
27 public override int GetHashCode() => X + Y;
28
29 public override bool Equals(object obj) => obj is Point2 && Equals((Point2)obj);
30
31 public bool Equals(Point2 other) => other.X == X && other.Y == Y;
32
33 public override string ToString() => $"{X},{Y}";
34
35 public static int Dot(Point2 p1, Point2 p2) => p1.X * p2.X + p1.Y * p2.Y;
36
37 public static int Cross(Point2 p1, Point2 p2) => p1.X * p2.Y - p1.Y * p2.X;
38
39 public static Point2 Perpendicular(Point2 p) => new(-p.Y, p.X);
40
41 public static Point2 Min(Point2 p, int v) => new(MathUtils.Min(p.X, v), MathUtils.Min(p.Y, v));
42
43 public static Point2 Min(Point2 p1, Point2 p2) => new(MathUtils.Min(p1.X, p2.X), MathUtils.Min(p1.Y, p2.Y));
44
45 public static Point2 Max(Point2 p, int v) => new(MathUtils.Max(p.X, v), MathUtils.Max(p.Y, v));
46
47 public static Point2 Max(Point2 p1, Point2 p2) => new(MathUtils.Max(p1.X, p2.X), MathUtils.Max(p1.Y, p2.Y));
48
49 public static int MinElement(Point2 p) => MathUtils.Min(p.X, p.Y);
50
51 public static int MaxElement(Point2 p) => MathUtils.Max(p.X, p.Y);
52
53 public static bool operator ==(Point2 p1, Point2 p2) => p1.Equals(p2);
54
55 public static bool operator !=(Point2 p1, Point2 p2) => !p1.Equals(p2);
56
57 public static Point2 operator +(Point2 p) => p;
58
59 public static Point2 operator -(Point2 p) => new(-p.X, -p.Y);
60
61 public static Point2 operator +(Point2 p1, Point2 p2) => new(p1.X + p2.X, p1.Y + p2.Y);
62
63 public static Point2 operator -(Point2 p1, Point2 p2) => new(p1.X - p2.X, p1.Y - p2.Y);
64
65 public static Point2 operator *(int n, Point2 p) => new(p.X * n, p.Y * n);
66
67 public static Point2 operator *(Point2 p, int n) => new(p.X * n, p.Y * n);
68
69 public static Point2 operator *(Point2 p1, Point2 p2) => new(p1.X * p2.X, p1.Y * p2.Y);
70
71 public static Point2 operator /(Point2 p, int n) => new(p.X / n, p.Y / n);
72
73 public static Point2 operator /(Point2 p1, Point2 p2) => new(p1.X / p2.X, p1.Y / p2.Y);
74
75 public unsafe Span<int> AsSpan() {
76 fixed (int* ptr = &X) {
77 return new Span<int>(ptr, 2);
78 }
79 }
80
81 public unsafe int* AsPointer() {
82 fixed (int* ptr = &X) {
83 return ptr;
84 }
85 }
86
87 public static implicit operator Vector2(Point2 p) => new(p.X, p.Y);
88
89 public static Point2 Round(Vector2 v) => new((int)MathF.Round(v.X), (int)MathF.Round(v.Y));
90
91 public static Point2 Round(float x, float y) => new((int)MathF.Round(x), (int)MathF.Round(y));
92
93 public static Point2 Ceiling(Vector2 v) => new((int)MathF.Ceiling(v.X), (int)MathF.Ceiling(v.Y));
94
95 public static Point2 Ceiling(float x, float y) => new((int)MathF.Ceiling(x), (int)MathF.Ceiling(y));
96
97 public static Point2 Floor(Vector2 v) => new((int)MathF.Floor(v.X), (int)MathF.Floor(v.Y));
98
99 public static Point2 Floor(float x, float y) => new((int)MathF.Floor(x), (int)MathF.Floor(y));
100 }
101}
unsafe
定义 Main.cs:15
static int Min(int x1, int x2)
static int Max(int x1, int x2)
static Point2 operator*(int n, Point2 p)
static Point2 Min(Point2 p1, Point2 p2)
static Point2 Max(Point2 p, int v)
static readonly Point2 Zero
static Point2 Max(Point2 p1, Point2 p2)
override int GetHashCode()
static int Cross(Point2 p1, Point2 p2)
static int Dot(Point2 p1, Point2 p2)
static Point2 operator/(Point2 p, int n)
unsafe Span< int > AsSpan()
static Point2 Round(Vector2 v)
static Point2 Floor(Vector2 v)
static bool operator==(Point2 p1, Point2 p2)
override bool Equals(object obj)
static bool operator!=(Point2 p1, Point2 p2)
static Point2 operator+(Point2 p)
static readonly Point2 One
static Point2 Ceiling(Vector2 v)
bool Equals(Point2 other)
static Point2 Ceiling(float x, float y)
override string ToString()
static Point2 Floor(float x, float y)
static Point2 Round(float x, float y)
Point2(int x, int y)
static readonly Point2 UnitX
static Point2 Min(Point2 p, int v)
unsafe int * AsPointer()
static int MinElement(Point2 p)
static Point2 Perpendicular(Point2 p)
static Point2 operator-(Point2 p)
static int MaxElement(Point2 p)
static readonly Point2 UnitY