danielvartanov / ruby-geometry Goto Github PK
View Code? Open in Web Editor NEWSimple geometry classes and algorithms in Ruby
License: MIT License
Simple geometry classes and algorithms in Ruby
License: MIT License
When using ruby geometry in our project, the following entry is added to the ruby load path:
"/Users/amuino/.rvm/gems/ruby-2.1.6@cabify/gems/ruby-geometry-0.0.5/lib"
The issue is that the folder contains several files that shadow our own (or viceversa, depending on how we setup the load path) when using require
. One such files is point.rb
(we have our own point.rb
in the project).
Just to clarify, this is not a problem with class names (we use Point
, the gem provides Geometry::Point
) but with loading of files.
A common practice with gems is to package the files in a subfolder (except for the main file).
This would translate into having:
lib/geometry.rb
lib/geometry/point.rb
lib/geometry/...
...
I can work on a PR for the changes, but first wanted to confirm that it is ok to follow this path.
Hi
We got the follwowing warning, with the latest releases of ActiveSupport :
DEPRECATION WARNING: ActiveSupport::Memoizable is deprecated and will be removed in future releases,simply use Ruby memoization pattern instead. (called from require at [...]/gems/bundler-1.1.4/lib/bundler/runtime.rb:68)
Rails 3.2.0 says :
Deprecated ActiveSupport::Memoizable in favor of Ruby memoization pattern
I have modified PointInPolygon#point_location
to use random_ray
directly instead
Then it becomes very fast for me
And the result is acceptable too (observed on a map with markers and polygons)
So I wonder if it's possible to add an option to pass when calculating
I might make a PR later
arr = [Geometry::Point.new(1.6, 1.0), Geometry::Point.new(1.6, 2.0), Geometry::Point.new(1.2, 2.0), Geometry::Point.new(1.2, 1.0)] point = Geometry::Point.new(1.5, 1.5) result = Geometry::Polygon.new(arr).contains?(point)
Result = true. It's ok. But:
arr = [Geometry::Point.new(1.6, 1.0), Geometry::Point.new(1.6, 2.0), Geometry::Point.new(1.2, 2.0), Geometry::Point.new(1.2, 1.0)] point = Geometry::Point.new(1.5, 1.5) result = Geometry::Polygon.new(arr).contains?(point) (0..100).each{result &&= Geometry::Polygon.new(arr).contains?(point)}
result = false
Since reading every commit is quite time consuming
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.