delaunator 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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