delaunator 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ba1fa13db2ec7a62c745e00d5778eb22ba26c07ae2b4d7766ec7d35a0a93da73
4
- data.tar.gz: 32c5d8eaada41b5b2b5d51848227def3b2e4fba70523a5b98f7e8225fb712ddd
3
+ metadata.gz: c1a7fb12a5f60b598470a47a0315c35fd3698c7b2f6ce1b2ee71f50c3751508a
4
+ data.tar.gz: 961e168bcee87dffc21f8fedab28c5a4284a7514c53b2eeb8b10cd4f20b9900b
5
5
  SHA512:
6
- metadata.gz: 5df303e21a1b177a2365b00c4e6e004a4d647a4157c4fa7ed4487f5d1dae671e07b2aa3b14ca1b9d6fd2560f57fe2bfe71aedd7bb8e97b11232d5c15e4010e34
7
- data.tar.gz: 51ab346370f54f2362d227cce4e516b96d195e5ef794b1798242c8ffb9c817cc34452f762350106a863eeab0c1f9b95d93f6bc497958f884b188bf3fb9bf944a
6
+ metadata.gz: 4be53d920c632b030a6f0285d77d1d8a1ff44584238ddcdf1a83eecc42f8e9a566cb13f8faef7885bc72f6fa9f93e944e18b013b3815c1802e04240966718ad9
7
+ data.tar.gz: fa5fc1aad3c2153fe2a2c4fb30a7b94b28021d1906b13c9a9cfb6c7ce47574aed28e95c13461ebf385507e2ad73c1d67afc8f615ac9c8474fdba1964a5b11a4e
data/README.md CHANGED
@@ -1,3 +1,6 @@
1
+ [![Gem Version](https://badge.fury.io/rb/delaunator.svg)](https://badge.fury.io/rb/delaunator)
2
+ [![Build Status](https://travis-ci.com/hendrixfan/delaunator-ruby.svg?branch=master)](https://travis-ci.com/hendrixfan/delaunator-ruby)
3
+
1
4
  # Delaunay Triangulation
2
5
 
3
6
  This is a port of [Mapbox's Delaunator project](https://github.com/mapbox/delaunator).
@@ -13,7 +13,6 @@ module Delaunator
13
13
  d.triangulate
14
14
  (0..d.halfedges.length - 1).each do |i|
15
15
  i2 = d.halfedges[i]
16
- #if i2 != -1 && d.halfedges[i2] != i
17
16
  raise ArgumentError, "invalid_halfedge #{i}" if i2 != -1 && d.halfedges[i2] != i
18
17
  end
19
18
  # validate triangulation
@@ -39,7 +38,7 @@ module Delaunator
39
38
  end
40
39
  triangles_area = triangle_areas.inject(0){ |sum, x| sum + x }
41
40
  err = ((hull_area - triangles_area) / hull_area).abs
42
- raise ArgumentError, :invalid_triangulation unless err <= 2.pow(-51)
41
+ raise ArgumentError, :invalid_triangulation unless err <= 2 ** -51
43
42
  end
44
43
 
45
44
  def self.convex(r, q, p)
@@ -2,7 +2,7 @@ module Delaunator
2
2
  class Triangulator
3
3
  attr_reader :halfedges, :hull, :triangles, :coords
4
4
 
5
- EPSILON = 2.pow(-52)
5
+ EPSILON = 2 ** -52
6
6
 
7
7
  EDGE_STACK = Array.new(512, 0)
8
8
 
@@ -11,8 +11,8 @@ module Delaunator
11
11
  @n = @coords.length >> 1
12
12
  @max_triangles = [2 * @n - 5, 0].max
13
13
  @triangles_len = 0
14
- @triangles = Array.new(@max_triangles * 3, 0)
15
- @halfedges = Array.new(@max_triangles * 3, 0)
14
+ @_triangles = Array.new(@max_triangles * 3, 0)
15
+ @_halfedges = Array.new(@max_triangles * 3, 0)
16
16
 
17
17
  @hash_size = Math.sqrt(@n).ceil
18
18
  @hull_prev = Array.new(@n, 0)
@@ -225,7 +225,6 @@ module Delaunator
225
225
  @hull_next[i] = n
226
226
 
227
227
  # save the two new edges in the hash table
228
- # this._hashKey(x, y) = 0 FEHLER
229
228
  @hull_hash[hash_key(x, y)] = i
230
229
  @hull_hash[hash_key(@coords[2 * e], @coords[2 * e + 1])] = e
231
230
  end
@@ -237,8 +236,9 @@ module Delaunator
237
236
  end
238
237
 
239
238
  # trim typed triangle mesh arrays
240
- @triangles = @triangles.slice(0, @triangles_len)
241
- @halfedges = @halfedges.slice(0, @triangles_len)
239
+ @halfedges = @_halfedges.slice(0, @triangles_len)
240
+ @triangles = @_triangles.slice(0, @triangles_len)
241
+ @triangles
242
242
  end
243
243
 
244
244
  def dist(ax, ay, bx, by)
@@ -320,9 +320,9 @@ module Delaunator
320
320
 
321
321
  def add_triangle(i0, i1, i2, a, b, c)
322
322
  i = @triangles_len
323
- @triangles[i] = i0
324
- @triangles[i + 1] = i1
325
- @triangles[i + 2] = i2
323
+ @_triangles[i] = i0
324
+ @_triangles[i + 1] = i1
325
+ @_triangles[i + 2] = i2
326
326
  link(i, a)
327
327
  link(i + 1, b)
328
328
  link(i + 2, c)
@@ -336,8 +336,8 @@ module Delaunator
336
336
  end
337
337
 
338
338
  def link(a, b)
339
- @halfedges[a] = b
340
- @halfedges[b] = a if b != -1
339
+ @_halfedges[a] = b
340
+ @_halfedges[b] = a if b != -1
341
341
  end
342
342
 
343
343
  def legalize(a)
@@ -358,7 +358,7 @@ module Delaunator
358
358
  i = 0
359
359
  ar = 0
360
360
  loop do
361
- b = @halfedges[a]
361
+ b = @_halfedges[a]
362
362
  a0 = a - a % 3
363
363
 
364
364
  ar = a0 + (a + 2) % 3
@@ -374,10 +374,10 @@ module Delaunator
374
374
  al = a0 + (a + 1) % 3
375
375
  bl = b0 + (b + 2) % 3
376
376
 
377
- p0 = @triangles[ar]
378
- pr = @triangles[a]
379
- pl = @triangles[al]
380
- p1 = @triangles[bl]
377
+ p0 = @_triangles[ar]
378
+ pr = @_triangles[a]
379
+ pl = @_triangles[al]
380
+ p1 = @_triangles[bl]
381
381
 
382
382
  illegal = in_circle(@coords[2 * p0], @coords[2 * p0 + 1],
383
383
  @coords[2 * pr], @coords[2 * pr + 1],
@@ -385,9 +385,9 @@ module Delaunator
385
385
  @coords[2 * p1], @coords[2 * p1 + 1])
386
386
 
387
387
  if illegal
388
- @triangles[a] = p1
389
- @triangles[b] = p0
390
- hbl = @halfedges[bl]
388
+ @_triangles[a] = p1
389
+ @_triangles[b] = p0
390
+ hbl = @_halfedges[bl]
391
391
  # edge swapped on the other side of the hull (rare)
392
392
  # fix the halfedge reference
393
393
  if hbl == -1
@@ -402,7 +402,7 @@ module Delaunator
402
402
  end
403
403
  end
404
404
  link(a, hbl)
405
- link(b, @halfedges[ar])
405
+ link(b, @_halfedges[ar])
406
406
  link(ar, bl)
407
407
 
408
408
  br = b0 + (b + 1) % 3
@@ -1,3 +1,3 @@
1
1
  module Delaunator
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: delaunator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Wolfgang Wohanka
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-12-26 00:00:00.000000000 Z
11
+ date: 2020-03-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -107,7 +107,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
107
107
  - !ruby/object:Gem::Version
108
108
  version: '0'
109
109
  requirements: []
110
- rubygems_version: 3.0.6
110
+ rubygems_version: 3.1.2
111
111
  signing_key:
112
112
  specification_version: 4
113
113
  summary: Delaunay triangulation of 2D points