0.0
No release in over 3 years
Low commit activity in last 3 years
Vector library
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
 Dependencies

Development

Runtime

 Project Readme

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