module Vector = | |
type private PolarVector = { | |
r: double; | |
a: double; | |
} | |
type private RectangularVector = { | |
x: double; | |
y: double; | |
} | |
type Vector = private Polar of PolarVector | Rectangle of RectangularVector | |
let createRectangular x y = | |
Rectangle { x = x; y = y;} | |
let createPolar r a = | |
Polar { r=r;a=a } | |
let private polar2Rect v = | |
Rectangle { x = (cos v.a) * v.r; y = (sin v.a) * v.r } | |
let rec Add v1 v2 = | |
match v1 with | |
| Rectangle v1xy -> | |
match v2 with | |
| Rectangle v2xy -> Rectangle { x = v1xy.x + v2xy.x; y = v1xy.y + v2xy.y } | |
| Polar polar -> Add v1 (polar2Rect polar) | |
| Polar polar -> | |
Add (polar2Rect polar) v2 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment