LoginSignup
1
4

More than 5 years have passed since last update.

gem 'pinp'で座標情報を扱う

Posted at

できる事

1.座標を点(Pointクラス)として扱う
2.Pointを3つ以上格納した配列から領域(Polygonクラス)を生成
3.座標(Point)が領域(Polygon)に含まれているか判定する(contains_point?メソッド)

使ってみる

1.Gemfileに以下を追加してインストール

Gemfile
gem 'pinp', git: 'https://github.com/kimhunter/PointInPolygon.git'

2.requireして使う準備

sample.rb
+ require "pinp"

3.領域を生成するための配列を用意

sample.rb
require "pinp"

+ points = []

4.座標(Point)を作成して配列に格納

※引数には(x軸の値, y軸の値)を指定

sample.rb
require "pinp"

points = []
+ points << Pinp::Point.new(0,0)
+ points << Pinp::Point.new(20,0)
+ points << Pinp::Point.new(20,20)
+ points << Pinp::Point.new(0,20)

5.座標(Point)の集合から領域を生成

sample.rb
require "pinp"
points = []
points << Pinp::Point.new(0,0)
points << Pinp::Point.new(20,0)
points << Pinp::Point.new(20,20)
points << Pinp::Point.new(0,20)

+ pgon = Pinp::Polygon.new points

6. 新しい座標(Point)を作成して生成した領域に含まれるか判定(contains_point?メソッド)

sample.rb
require "pinp"
points = []
points << Pinp::Point.new(0,0)
points << Pinp::Point.new(20,0)
points << Pinp::Point.new(20,20)
points << Pinp::Point.new(0,20)

pgon = Pinp::Polygon.new points
+ puts pgon.contains_point? Pinp::Point.new(10, 10)
+ puts pgon.contains_point? Pinp::Point.new(20.1 ,10)

#=> true
#=> false

ソース

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4