Survivalcraft API 1.8.2.3 v1.8.2.3
Survivalcraft 2.4
载入中...
搜索中...
未找到
Line2.cs
浏览该文件的文档.
1namespace Engine {
2 public struct Line2 : IEquatable<Line2> {
3 public Vector2 Normal;
4
5 public float D;
6
7 public Line2(Vector2 normal, float d) {
8 Normal = normal;
9 D = d;
10 }
11
12 public Line2(Vector2 p1, Vector2 p2) {
13 Normal = Vector2.Normalize(new Vector2(p1.Y - p2.Y, p2.X - p1.X));
14 D = 0f - Vector2.Dot(Normal, p1);
15 }
16
17 public Line2(float x, float y, float d) : this(new Vector2(x, y), d) { }
18
19 public override bool Equals(object obj) {
20 if (!(obj is Line2)) {
21 return false;
22 }
23 return Equals((Line2)obj);
24 }
25
26 public bool Equals(Line2 other) {
27 if (Normal == other.Normal) {
28 return D == other.D;
29 }
30 return false;
31 }
32
33 public override int GetHashCode() => Normal.GetHashCode() + D.GetHashCode();
34
35 public override string ToString() => $"{Normal.X},{Normal.Y},{D}";
36
37 public float SignedDistance(Vector2 p) => Vector2.Dot(Normal, p) + D;
38
39 public static Line2 Normalize(Line2 l) {
40 float num = l.Normal.Length();
41 if (num > 0f) {
42 float num2 = 1f / num;
43 return new Line2(l.Normal * num2, l.D * num2);
44 }
45 return new Line2(Vector2.UnitX, 0f);
46 }
47
48 public static Vector2? Intersection(Line2 l1, Line2 l2) {
49 float num = 0f - Vector2.Cross(l1.Normal, l2.Normal);
50 if (num == 0f) {
51 return null;
52 }
53 float num2 = 1f / num;
54 return new Vector2((l2.Normal.Y * l1.D - l1.Normal.Y * l2.D) * num2, (l1.Normal.X * l2.D - l2.Normal.X * l1.D) * num2);
55 }
56
57 public static bool operator ==(Line2 l1, Line2 l2) => l1.Equals(l2);
58
59 public static bool operator !=(Line2 l1, Line2 l2) => !l1.Equals(l2);
60 }
61}
float SignedDistance(Vector2 p)
bool Equals(Line2 other)
Vector2 Normal
定义 Line2.cs:3
override bool Equals(object obj)
Line2(float x, float y, float d)
Line2(Vector2 normal, float d)
定义 Line2.cs:7
static ? Vector2 Intersection(Line2 l1, Line2 l2)
static bool operator!=(Line2 l1, Line2 l2)
Line2(Vector2 p1, Vector2 p2)
override string ToString()
static bool operator==(Line2 l1, Line2 l2)
static Line2 Normalize(Line2 l)
override int GetHashCode()
static float Dot(Vector2 v1, Vector2 v2)
static float Cross(Vector2 v1, Vector2 v2)
static readonly Vector2 UnitX
static Vector2 Normalize(Vector2 v)