summaryrefslogtreecommitdiff log msg author committer range
path: root/physics/Geometry.cs
blob: b17e767dc45d1e9b390ac08f5fa253ffd981bdc1 (plain)
 ```1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 ``` ``````using System; namespace PhysModel { public struct Point { public double X; public double Y; public Point (double x, double y) { X = x; Y = y; } public static Point Origin = new Point (0, 0); public static Point operator + (Point a, Vector b) { return new Point (a.X + b.X, a.Y + b.Y); } public static Point operator - (Point a, Vector b) { return new Point (a.X - b.X, a.Y - b.Y); } public static Vector operator - (Point a, Point b) { return new Vector (a.X - b.X, a.Y - b.Y); } //? public static Point operator / (Point a, Vector b) { return new Point (a.X / b.X, a.Y / b.Y); } } public struct Vector { public double X; public double Y; public Vector (double x, double y) { X = x; Y = y; } public static Vector operator + (Vector a, Vector b) { return new Vector (a.X + b.X, a.Y + b.Y); } public static Vector operator - (Vector a, Vector b) { return new Vector (a.X - b.X, a.Y - b.Y); } //sanity check this /* public static Vector operator * (Vector a, Vector b) { return new Vector (a.X * b.X, a.Y * b.Y); } */ //doesn't make sense /* public static Vector operator / (Vector a, Vector b) { return new Vector (a.X / b.X, a.Y / b.Y); } */ public static Vector operator * (Vector a, double b) { return new Vector (a.X * b, a.Y * b); } //? public static Vector operator * (double a, Vector b) { return new Vector (b.X * a, b.Y * a); } public static Vector operator / (Vector a, double b) { return new Vector (a.X / b, a.Y / b); } } } ``````