34 lines
828 B
Plaintext
34 lines
828 B
Plaintext
class Vector2D {
|
|
construct new(x, y) {
|
|
_x = x
|
|
_y = y
|
|
}
|
|
|
|
static fromPolar(r, theta) { new(r * theta.cos, r * theta.sin) }
|
|
|
|
x { _x }
|
|
y { _y }
|
|
|
|
+(v) { Vector2D.new(_x + v.x, _y + v.y) }
|
|
-(v) { Vector2D.new(_x - v.x, _y - v.y) }
|
|
*(s) { Vector2D.new(_x * s, _y * s) }
|
|
/(s) { Vector2D.new(_x / s, _y / s) }
|
|
|
|
toString { "(%(_x), %(_y))" }
|
|
}
|
|
|
|
var times = Fn.new { |d, v| v * d }
|
|
|
|
var v1 = Vector2D.new(5, 7)
|
|
var v2 = Vector2D.new(2, 3)
|
|
var v3 = Vector2D.fromPolar(2.sqrt, Num.pi / 4)
|
|
System.print("v1 = %(v1)")
|
|
System.print("v2 = %(v2)")
|
|
System.print("v3 = %(v3)")
|
|
System.print()
|
|
System.print("v1 + v2 = %(v1 + v2)")
|
|
System.print("v1 - v2 = %(v1 - v2)")
|
|
System.print("v1 * 11 = %(v1 * 11)")
|
|
System.print("11 * v2 = %(times.call(11, v2))")
|
|
System.print("v1 / 2 = %(v1 / 2)")
|