GUIに依存しない数学関連ライブラリ
Point.new # => [0.0, 0.0]
Point[1, 2] # => [1, 2]
Point[1, 2].members # => [:x, :y]
Point[1, 2].values # => [1, 2]
Point[1, 2] # => [1, 2]
Vector.superclass # => Stylet::Point2
Point.new(Point[1,2]) # => [1, 2]
Point[Point[1,2]] # => [1, 2]
Vector.new # => [0.0, 0.0]
Vector.new # => [0.0, 0.0]
Vector.new(1, 2) # => [1, 2]
Vector.zero # => [0.0, 0.0]
Vector.one # => [1.0, 1.0]
a = Vector[1, 2]
b = Vector[3, 4]
a + b # => [4.0, 6.0]
a - b # => [-2.0, -2.0]
a * 2 # => [2.0, 4.0]
a / 2 # => [0.5, 1.0]
a.add(b) # => [4.0, 6.0]
a.sub(b) # => [-2.0, -2.0]
a.scale(2) # => [2.0, 4.0]
a.mul(2) # => [2.0, 4.0]
a.div(2) # => [0.5, 1.0]
a + [3, 4] # => [4.0, 6.0]
a - [3, 4] # => [-2.0, -2.0]
Vector.one.reverse # => [-1.0, -1.0]
-Vector.one # => [-1.0, -1.0]
Vector[3, 4].normalize # => [0.6, 0.8]
Vector.one.normalize # => [0.7071067811865475, 0.7071067811865475]
Vector.one.magnitude # => 1.4142135623730951
Vector.one.magnitude_sq # => 2.0
v = Vector.rand
v.round(2) # => [-1.0, -0.88]
v.round # => [-1, -1]
v.floor # => [-1, -1]
v.ceil # => [0, 0]
v.truncate # => [0, 0]
Vector.rand # => [-0.5758140223421724, -0.23276547457672714]
Vector.rand(3) # => [1, 1]
Vector.rand(3..4) # => [4, 4]
Vector.rand(3.0..4) # => [3.9402342251571714, 3.550203689124972]
Vector.rand(-2.0..2.0) # => [-1.181268220930995, 1.4942116900421252]
Vector[1, 0].dot_product(Vector[1, 0]) # => 1
Vector[1, 0].dot_product(Vector[-1, 0]) # => -1
Vector.cross_product(Vector.rand, Vector.rand) # => -0.7348374986070235
Vector.rand.distance_to(Vector.rand) # => 1.7226903872525836
v = Vector.new
v.object_id # => 70298637530620
v.replace(Vector.rand) # => [-0.2619785178209082, -0.4396795163426983]
v.object_id # => 70298637530620
Vector.zero.distance_to(Vector.one) # => 1.4142135623730951
Vector.zero.zero? # => true
Vector.one.nonzero? # => true
Vector.zero.inspect # => "[0.0, 0.0]"
Vector.zero.to_s # => "[0.0, 0.0]"
Vector[1,2].prep # => [-2, 1]
TIPS
当たり判定を高速化するには?
当たり判定を次のようにしているとき
if v.magnitude < r
end
次のようにすると sqrt を省略できる
if v.magnitude_sq < r ** 2
end
a地点からb地点へのベクトルを求めるには?
b - a