Sha256: e4e0af1a9a4cea36af67897d8ae981c49189eed5c382114703e80672af77a490
Contents?: true
Size: 1.18 KB
Versions: 4
Compression:
Stored size: 1.18 KB
Contents
require 'cblxy' require 'cf_sim/cordination_system' require 'cf_sim/point' class CfSim::PortalMap attr_reader :portals, :points def initialize(*portals) @portals = portals.flatten.dup.freeze @cordination_system = CfSim::CordinationSystem.new(@portals.first.latitude, @portals.first.longitude) @portal_map = {} @point_map = {} convert_to_points end def find_portal(point) @portal_map[point] end def find_point(portal) @point_map[portal] end private def convert_to_points @points = [] @portals.each do |portal| point = convert_to_point(portal) @points << point @portal_map[point] = portal @point_map[portal] = point end @points.freeze end def convert_to_point(portal) x, y = blxy(convert_point_unit(portal.latitude), convert_point_unit(portal.longitude), @cordination_system.nearest_system_number) CfSim::Point.new(portal.name, x, y) end # 10進数による座標を、60進数(度分秒)に変換し 10000 倍する def convert_point_unit(point_unit) degree, rest = point_unit.divmod(1) minute, rest = (rest * 60).divmod(1) degree * 10000 + minute * 100 + rest * 60 end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
cf_sim-1.1.2 | lib/cf_sim/portal_map.rb |
cf_sim-1.1.1 | lib/cf_sim/portal_map.rb |
cf_sim-1.1.0 | lib/cf_sim/portal_map.rb |
cf_sim-1.0.0 | lib/cf_sim/portal_map.rb |