Ruby
Rails
Gem
IoT

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

More than 1 year has passed since last update.

できる事

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

ソース

https://github.com/kimhunter/PointInPolygon