simple-polygons 0.0.0.pre5 → 0.0.0.pre6
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 +4 -4
- data/lib/simple-polygons.rb +43 -4
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 003ca2aac98ab953f3bae8491e5eb61ea1fef169
|
4
|
+
data.tar.gz: eb0bf23e04ec6cb4f35fb81dac5134317ac13645
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1532ce7a458c07b497a26a929a6d9b7b8161c689cbe222e63a7cafbc3c203996f2b7c5430fa7465e056e05cd873d9450955e8f86d4cc33ccf81babb55e565ccc
|
7
|
+
data.tar.gz: dea0a73fb924ba035172487c08edd866a70fb6607d39e6cbc0bcc89e221d61a478c4f0d7b272cdd8273554d2f262b4cb2b1791a87ca48818e2ace06e3be6b223
|
data/lib/simple-polygons.rb
CHANGED
@@ -1,5 +1,26 @@
|
|
1
1
|
require ( 'locationclass' )
|
2
2
|
|
3
|
+
class Array
|
4
|
+
def greatest_val()
|
5
|
+
greatest = nil
|
6
|
+
|
7
|
+
self.each() do |v|
|
8
|
+
greatest = v if (greatest == nil) or (v > greatest)
|
9
|
+
end
|
10
|
+
|
11
|
+
return greatest
|
12
|
+
end
|
13
|
+
def least_val()
|
14
|
+
least = nil
|
15
|
+
|
16
|
+
self.each() do |v|
|
17
|
+
least = v if (least == nil) or (v < least)
|
18
|
+
end
|
19
|
+
|
20
|
+
return least
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
3
24
|
module SimplePolygons
|
4
25
|
class InvalidLocationArrayError < StandardError
|
5
26
|
|
@@ -12,13 +33,14 @@ module SimplePolygons
|
|
12
33
|
def initialize(point_array=[])
|
13
34
|
@points = point_array
|
14
35
|
end
|
15
|
-
#Returns
|
36
|
+
#Returns true if @points includes loc.
|
16
37
|
def include?(loc)
|
17
38
|
@points.each() do |p|
|
18
39
|
return true if (p.x() == loc.x() and p.y() == loc.y())
|
19
40
|
end
|
20
41
|
return false
|
21
42
|
end
|
43
|
+
#Returns false if @points includes loc.
|
22
44
|
def not_include?(loc)
|
23
45
|
return !include?(loc)
|
24
46
|
end
|
@@ -41,6 +63,7 @@ module SimplePolygons
|
|
41
63
|
super(start_loc, side_length, side_length)
|
42
64
|
end
|
43
65
|
end
|
66
|
+
#Represents a triangle. It can be any of the 3 kinds.
|
44
67
|
class Triangle < Polygon
|
45
68
|
#All parameters should be Location objects.
|
46
69
|
def initialize(loc1, loc2, loc3)
|
@@ -49,9 +72,25 @@ module SimplePolygons
|
|
49
72
|
end
|
50
73
|
super([loc1, loc2, loc3])
|
51
74
|
end
|
52
|
-
#
|
53
|
-
def self.valid_points?(
|
75
|
+
#Returns true if a, b, and c can form a triangle. a, b, and c should be locations.
|
76
|
+
def self.valid_points?(a, b, c)
|
77
|
+
return (self.valid?(a.x(), b.x(), c.x()) and (self.valid?(a.y(), b.y(), c.y())))
|
78
|
+
end
|
79
|
+
|
80
|
+
private
|
81
|
+
def self.valid?(a, b, c)
|
82
|
+
place_list = [a,b,c].sort()
|
83
|
+
|
84
|
+
least = place_list[0]
|
85
|
+
middle = place_list[1]
|
86
|
+
greatest = place_list[2]
|
87
|
+
|
88
|
+
return false unless middle === (place_list.greatest_val()..place_list.least_val())
|
89
|
+
|
54
90
|
return true
|
55
91
|
end
|
56
92
|
end
|
57
|
-
end
|
93
|
+
end
|
94
|
+
|
95
|
+
include SimplePolygons
|
96
|
+
puts Triangle.valid_points?(Location.new(10, 10), Location.new(20, 20), Location.new(30, 30))
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simple-polygons
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.0.
|
4
|
+
version: 0.0.0.pre6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- SugarRush
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-10-
|
11
|
+
date: 2018-10-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: locationclass
|
@@ -25,7 +25,7 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1'
|
27
27
|
description: "A gem that has several classes representing 2D polygons. The first full
|
28
|
-
release will be out by \n October 20."
|
28
|
+
release will be out by \n October 20. This is the final pre-release."
|
29
29
|
email:
|
30
30
|
executables: []
|
31
31
|
extensions: []
|