sketchup-api-stubs 0.7.3 → 0.7.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (149) hide show
  1. checksums.yaml +5 -5
  2. data/.yardopts +9 -9
  3. data/lib/sketchup-api-stubs.rb +1 -1
  4. data/lib/sketchup-api-stubs/sketchup.rb +145 -145
  5. data/lib/sketchup-api-stubs/stubs/Geom/BoundingBox.rb +318 -318
  6. data/lib/sketchup-api-stubs/stubs/Geom/Bounds2d.rb +172 -172
  7. data/lib/sketchup-api-stubs/stubs/Geom/LatLong.rb +126 -126
  8. data/lib/sketchup-api-stubs/stubs/Geom/OrientedBounds2d.rb +102 -102
  9. data/lib/sketchup-api-stubs/stubs/Geom/Point2d.rb +400 -400
  10. data/lib/sketchup-api-stubs/stubs/Geom/Point3d.rb +661 -661
  11. data/lib/sketchup-api-stubs/stubs/Geom/PolygonMesh.rb +492 -492
  12. data/lib/sketchup-api-stubs/stubs/Geom/Transformation.rb +478 -478
  13. data/lib/sketchup-api-stubs/stubs/Geom/Transformation2d.rb +263 -263
  14. data/lib/sketchup-api-stubs/stubs/Geom/UTM.rb +141 -141
  15. data/lib/sketchup-api-stubs/stubs/Geom/Vector2d.rb +522 -522
  16. data/lib/sketchup-api-stubs/stubs/Geom/Vector3d.rb +691 -691
  17. data/lib/sketchup-api-stubs/stubs/Layout.rb +25 -25
  18. data/lib/sketchup-api-stubs/stubs/Layout/AngularDimension.rb +573 -573
  19. data/lib/sketchup-api-stubs/stubs/Layout/AutoTextDefinition.rb +411 -411
  20. data/lib/sketchup-api-stubs/stubs/Layout/AutoTextDefinitions.rb +174 -186
  21. data/lib/sketchup-api-stubs/stubs/Layout/ConnectionPoint.rb +70 -70
  22. data/lib/sketchup-api-stubs/stubs/Layout/Document.rb +514 -514
  23. data/lib/sketchup-api-stubs/stubs/Layout/Ellipse.rb +29 -29
  24. data/lib/sketchup-api-stubs/stubs/Layout/Entities.rb +143 -155
  25. data/lib/sketchup-api-stubs/stubs/Layout/Entity.rb +353 -353
  26. data/lib/sketchup-api-stubs/stubs/Layout/FormattedText.rb +349 -349
  27. data/lib/sketchup-api-stubs/stubs/Layout/Grid.rb +311 -311
  28. data/lib/sketchup-api-stubs/stubs/Layout/Group.rb +261 -261
  29. data/lib/sketchup-api-stubs/stubs/Layout/Image.rb +91 -91
  30. data/lib/sketchup-api-stubs/stubs/Layout/Label.rb +371 -371
  31. data/lib/sketchup-api-stubs/stubs/Layout/Layer.rb +218 -218
  32. data/lib/sketchup-api-stubs/stubs/Layout/LayerInstance.rb +128 -128
  33. data/lib/sketchup-api-stubs/stubs/Layout/Layers.rb +220 -232
  34. data/lib/sketchup-api-stubs/stubs/Layout/LinearDimension.rb +567 -567
  35. data/lib/sketchup-api-stubs/stubs/Layout/LockedEntityError.rb +10 -10
  36. data/lib/sketchup-api-stubs/stubs/Layout/LockedLayerError.rb +11 -11
  37. data/lib/sketchup-api-stubs/stubs/Layout/Page.rb +183 -183
  38. data/lib/sketchup-api-stubs/stubs/Layout/PageInfo.rb +387 -387
  39. data/lib/sketchup-api-stubs/stubs/Layout/Pages.rb +204 -216
  40. data/lib/sketchup-api-stubs/stubs/Layout/Path.rb +344 -344
  41. data/lib/sketchup-api-stubs/stubs/Layout/Rectangle.rb +174 -174
  42. data/lib/sketchup-api-stubs/stubs/Layout/SketchUpModel.rb +694 -694
  43. data/lib/sketchup-api-stubs/stubs/Layout/Style.rb +1519 -1519
  44. data/lib/sketchup-api-stubs/stubs/Layout/Table.rb +290 -290
  45. data/lib/sketchup-api-stubs/stubs/Layout/TableCell.rb +149 -149
  46. data/lib/sketchup-api-stubs/stubs/Layout/TableColumn.rb +139 -139
  47. data/lib/sketchup-api-stubs/stubs/Layout/TableRow.rb +135 -135
  48. data/lib/sketchup-api-stubs/stubs/Sketchup/Animation.rb +140 -140
  49. data/lib/sketchup-api-stubs/stubs/Sketchup/AppObserver.rb +157 -157
  50. data/lib/sketchup-api-stubs/stubs/Sketchup/ArcCurve.rb +209 -209
  51. data/lib/sketchup-api-stubs/stubs/Sketchup/AttributeDictionaries.rb +152 -152
  52. data/lib/sketchup-api-stubs/stubs/Sketchup/AttributeDictionary.rb +281 -281
  53. data/lib/sketchup-api-stubs/stubs/Sketchup/Axes.rb +149 -149
  54. data/lib/sketchup-api-stubs/stubs/Sketchup/Behavior.rb +328 -328
  55. data/lib/sketchup-api-stubs/stubs/Sketchup/Camera.rb +577 -577
  56. data/lib/sketchup-api-stubs/stubs/Sketchup/ClassificationSchema.rb +63 -63
  57. data/lib/sketchup-api-stubs/stubs/Sketchup/Classifications.rb +122 -122
  58. data/lib/sketchup-api-stubs/stubs/Sketchup/Color.rb +281 -281
  59. data/lib/sketchup-api-stubs/stubs/Sketchup/ComponentDefinition.rb +562 -562
  60. data/lib/sketchup-api-stubs/stubs/Sketchup/ComponentInstance.rb +593 -593
  61. data/lib/sketchup-api-stubs/stubs/Sketchup/Console.rb +76 -76
  62. data/lib/sketchup-api-stubs/stubs/Sketchup/ConstructionLine.rb +257 -257
  63. data/lib/sketchup-api-stubs/stubs/Sketchup/ConstructionPoint.rb +32 -32
  64. data/lib/sketchup-api-stubs/stubs/Sketchup/Curve.rb +194 -194
  65. data/lib/sketchup-api-stubs/stubs/Sketchup/DefinitionList.rb +329 -329
  66. data/lib/sketchup-api-stubs/stubs/Sketchup/DefinitionObserver.rb +72 -72
  67. data/lib/sketchup-api-stubs/stubs/Sketchup/DefinitionsObserver.rb +102 -102
  68. data/lib/sketchup-api-stubs/stubs/Sketchup/Dimension.rb +165 -165
  69. data/lib/sketchup-api-stubs/stubs/Sketchup/DimensionLinear.rb +312 -312
  70. data/lib/sketchup-api-stubs/stubs/Sketchup/DimensionObserver.rb +38 -38
  71. data/lib/sketchup-api-stubs/stubs/Sketchup/DimensionRadial.rb +87 -87
  72. data/lib/sketchup-api-stubs/stubs/Sketchup/Drawingelement.rb +390 -390
  73. data/lib/sketchup-api-stubs/stubs/Sketchup/Edge.rb +508 -508
  74. data/lib/sketchup-api-stubs/stubs/Sketchup/EdgeUse.rb +211 -211
  75. data/lib/sketchup-api-stubs/stubs/Sketchup/Entities.rb +1119 -1119
  76. data/lib/sketchup-api-stubs/stubs/Sketchup/EntitiesObserver.rb +125 -125
  77. data/lib/sketchup-api-stubs/stubs/Sketchup/Entity.rb +544 -544
  78. data/lib/sketchup-api-stubs/stubs/Sketchup/EntityObserver.rb +59 -59
  79. data/lib/sketchup-api-stubs/stubs/Sketchup/ExtensionsManager.rb +125 -125
  80. data/lib/sketchup-api-stubs/stubs/Sketchup/Face.rb +750 -750
  81. data/lib/sketchup-api-stubs/stubs/Sketchup/FrameChangeObserver.rb +104 -104
  82. data/lib/sketchup-api-stubs/stubs/Sketchup/Group.rb +697 -697
  83. data/lib/sketchup-api-stubs/stubs/Sketchup/Http.rb +27 -27
  84. data/lib/sketchup-api-stubs/stubs/Sketchup/Http/Request.rb +285 -285
  85. data/lib/sketchup-api-stubs/stubs/Sketchup/Http/Response.rb +62 -62
  86. data/lib/sketchup-api-stubs/stubs/Sketchup/Image.rb +409 -409
  87. data/lib/sketchup-api-stubs/stubs/Sketchup/ImageRep.rb +226 -226
  88. data/lib/sketchup-api-stubs/stubs/Sketchup/Importer.rb +190 -190
  89. data/lib/sketchup-api-stubs/stubs/Sketchup/InputPoint.rb +393 -393
  90. data/lib/sketchup-api-stubs/stubs/Sketchup/InstanceObserver.rb +82 -82
  91. data/lib/sketchup-api-stubs/stubs/Sketchup/InstancePath.rb +303 -303
  92. data/lib/sketchup-api-stubs/stubs/Sketchup/Layer.rb +285 -280
  93. data/lib/sketchup-api-stubs/stubs/Sketchup/Layers.rb +244 -231
  94. data/lib/sketchup-api-stubs/stubs/Sketchup/LayersObserver.rb +136 -136
  95. data/lib/sketchup-api-stubs/stubs/Sketchup/Licensing.rb +48 -48
  96. data/lib/sketchup-api-stubs/stubs/Sketchup/Licensing/ExtensionLicense.rb +86 -86
  97. data/lib/sketchup-api-stubs/stubs/Sketchup/LineStyle.rb +24 -24
  98. data/lib/sketchup-api-stubs/stubs/Sketchup/LineStyles.rb +112 -123
  99. data/lib/sketchup-api-stubs/stubs/Sketchup/Loop.rb +137 -137
  100. data/lib/sketchup-api-stubs/stubs/Sketchup/Material.rb +416 -416
  101. data/lib/sketchup-api-stubs/stubs/Sketchup/Materials.rb +311 -311
  102. data/lib/sketchup-api-stubs/stubs/Sketchup/MaterialsObserver.rb +141 -141
  103. data/lib/sketchup-api-stubs/stubs/Sketchup/Menu.rb +95 -95
  104. data/lib/sketchup-api-stubs/stubs/Sketchup/Model.rb +1638 -1601
  105. data/lib/sketchup-api-stubs/stubs/Sketchup/ModelObserver.rb +356 -356
  106. data/lib/sketchup-api-stubs/stubs/Sketchup/OptionsManager.rb +132 -132
  107. data/lib/sketchup-api-stubs/stubs/Sketchup/OptionsProvider.rb +284 -284
  108. data/lib/sketchup-api-stubs/stubs/Sketchup/OptionsProviderObserver.rb +58 -58
  109. data/lib/sketchup-api-stubs/stubs/Sketchup/Page.rb +770 -770
  110. data/lib/sketchup-api-stubs/stubs/Sketchup/Pages.rb +353 -353
  111. data/lib/sketchup-api-stubs/stubs/Sketchup/PagesObserver.rb +76 -76
  112. data/lib/sketchup-api-stubs/stubs/Sketchup/PickHelper.rb +456 -456
  113. data/lib/sketchup-api-stubs/stubs/Sketchup/RegionalSettings.rb +43 -43
  114. data/lib/sketchup-api-stubs/stubs/Sketchup/RenderingOptions.rb +364 -364
  115. data/lib/sketchup-api-stubs/stubs/Sketchup/RenderingOptionsObserver.rb +44 -44
  116. data/lib/sketchup-api-stubs/stubs/Sketchup/SectionPlane.rb +150 -150
  117. data/lib/sketchup-api-stubs/stubs/Sketchup/Selection.rb +454 -454
  118. data/lib/sketchup-api-stubs/stubs/Sketchup/SelectionObserver.rb +115 -115
  119. data/lib/sketchup-api-stubs/stubs/Sketchup/Set.rb +212 -212
  120. data/lib/sketchup-api-stubs/stubs/Sketchup/ShadowInfo.rb +257 -257
  121. data/lib/sketchup-api-stubs/stubs/Sketchup/ShadowInfoObserver.rb +57 -57
  122. data/lib/sketchup-api-stubs/stubs/Sketchup/Style.rb +69 -69
  123. data/lib/sketchup-api-stubs/stubs/Sketchup/Styles.rb +211 -211
  124. data/lib/sketchup-api-stubs/stubs/Sketchup/Text.rb +262 -262
  125. data/lib/sketchup-api-stubs/stubs/Sketchup/Texture.rb +225 -225
  126. data/lib/sketchup-api-stubs/stubs/Sketchup/TextureWriter.rb +237 -237
  127. data/lib/sketchup-api-stubs/stubs/Sketchup/Tool.rb +829 -829
  128. data/lib/sketchup-api-stubs/stubs/Sketchup/Tools.rb +132 -132
  129. data/lib/sketchup-api-stubs/stubs/Sketchup/ToolsObserver.rb +154 -154
  130. data/lib/sketchup-api-stubs/stubs/Sketchup/UVHelper.rb +61 -61
  131. data/lib/sketchup-api-stubs/stubs/Sketchup/Vertex.rb +142 -142
  132. data/lib/sketchup-api-stubs/stubs/Sketchup/View.rb +1301 -1301
  133. data/lib/sketchup-api-stubs/stubs/Sketchup/ViewObserver.rb +43 -43
  134. data/lib/sketchup-api-stubs/stubs/UI/Command.rb +310 -310
  135. data/lib/sketchup-api-stubs/stubs/UI/HtmlDialog.rb +356 -356
  136. data/lib/sketchup-api-stubs/stubs/UI/Notification.rb +229 -229
  137. data/lib/sketchup-api-stubs/stubs/UI/Toolbar.rb +240 -240
  138. data/lib/sketchup-api-stubs/stubs/UI/WebDialog.rb +633 -633
  139. data/lib/sketchup-api-stubs/stubs/_top_level.rb +311 -311
  140. data/lib/sketchup-api-stubs/stubs/array.rb +741 -741
  141. data/lib/sketchup-api-stubs/stubs/geom.rb +348 -348
  142. data/lib/sketchup-api-stubs/stubs/languagehandler.rb +92 -92
  143. data/lib/sketchup-api-stubs/stubs/length.rb +278 -278
  144. data/lib/sketchup-api-stubs/stubs/numeric.rb +249 -249
  145. data/lib/sketchup-api-stubs/stubs/sketchup.rb +1310 -1310
  146. data/lib/sketchup-api-stubs/stubs/sketchupextension.rb +353 -353
  147. data/lib/sketchup-api-stubs/stubs/string.rb +24 -24
  148. data/lib/sketchup-api-stubs/stubs/ui.rb +667 -667
  149. metadata +3 -4
@@ -1,348 +1,348 @@
1
- # Copyright:: Copyright 2020 Trimble Inc.
2
- # License:: The MIT License (MIT)
3
-
4
- # The Geom module defines a number of Module methods that let you perform
5
- # different geometric operations.
6
- #
7
- # The methods in this module take lines
8
- # and planes as arguments. There is no special class for representing lines or
9
- # planes. Arrays are used for both.
10
- #
11
- # A line can be represented as either an Array of a point and a
12
- # vector, or as an Array of two points.
13
- # line1 = [Geom::Point3d.new(0, 0, 0), Geom::Vector3d.new(0, 0, 1)]
14
- # line2 = [Geom::Point3d.new(0, 0, 0), Geom::Point3d.new(0, 0, 100)]
15
- #
16
- # A plane can be represented as either an Array
17
- # of a point and a vector, or as an Array of 4 numbers that give the
18
- # coefficients of a plane equation.
19
- # plane1 = [Geom::Point3d.new(0, 0, 0), Geom::Vector3d.new(0, 0, 1)]
20
- # plane2 = [0, 0, 1, 0]
21
- #
22
- # There are several good books on 3D math if you are new to
23
- # the concepts of a line, plane, and vector.
24
- #
25
- # @note Lines and Planes are infinite.
26
- #
27
- # @version SketchUp 6.0
28
- module Geom
29
-
30
- # Class Methods
31
-
32
- # The {.closest_points} method is used to compute the closest points on two
33
- # lines.
34
- #
35
- # line.
36
- #
37
- # @example
38
- # line1 = [Geom::Point3d.new(0, 2, 0), Geom::Vector3d.new(1, 0, 0)]
39
- # line2 = [Geom::Point3d.new(3, 0, 0), Geom::Vector3d.new(0, 1, 0)]
40
- # # This will return a point Point3d(3, 2, 0).
41
- # points = Geom.closest_points(line1, line2)
42
- #
43
- # @param [Array(Geom::Point3d, Geom::Vector3d)] line1
44
- # The first line to
45
- # intersect
46
- #
47
- # @param [Array(Geom::Point3d, Geom::Vector3d)] line2
48
- # The second line to
49
- # intersect
50
- #
51
- # @return [Array(Geom::Point3d, Geom::Point3d)] An array of two points. The
52
- # first point is on the first line and the second point is on the second
53
- #
54
- # @version SketchUp 6.0
55
- def self.closest_points(line1, line2)
56
- end
57
-
58
- # The {.fit_plane_to_points} method is used to compute a plane that is a best
59
- # fit to an array of points. If more than three points are given some of the
60
- # points may not be on the plane.
61
- #
62
- # The plane is returned as an {Array} of 4 numbers which are the
63
- # coefficients of the plane equation <code>Ax + By + Cz + D = 0</code>.
64
- #
65
- # @example
66
- # point1 = Geom::Point3d.new(0, 0, 0)
67
- # point2 = Geom::Point3d.new(10, 10, 10)
68
- # point3 = Geom::Point3d.new(25, 25, 25)
69
- # plane = Geom.fit_plane_to_points(point1, point2, point3)
70
- #
71
- # @overload fit_plane_to_points(point1, point2, point3, ...)
72
- #
73
- # @param [Geom::Point3d] point1
74
- # @param [Geom::Point3d] point2
75
- # @param [Geom::Point3d] point3
76
- # @return [Array(Geom::Point3d, Geom::Vector3d)] A plane
77
- #
78
- # @overload fit_plane_to_points(points)
79
- #
80
- # @param [Array<Geom::Point3d>] points
81
- # @return [Array(Geom::Point3d, Geom::Vector3d)] A plane
82
- #
83
- # @version SketchUp 6.0
84
- def self.fit_plane_to_points(*args)
85
- end
86
-
87
- # The {.intersect_line_line} computes the intersection of two lines.
88
- #
89
- # @example
90
- # # Defines a line parallel to the Y axis, offset 20 units.
91
- # line1 = [Geom::Point3d.new(20, 0, 0), Geom::Vector3d.new(0, 1, 0)]
92
- # # Defines a line parallel to the X axis, offset 10 units.
93
- # line2 = [Geom::Point3d.new(0, 10, 0), Geom::Point3d.new(20, 10, 0)]
94
- # # This will return a point Point3d(20, 10, 0).
95
- # point = Geom.intersect_line_line(line1, line2)
96
- #
97
- # @param [Array(Geom::Point3d, Geom::Vector3d)] line1
98
- # The first line to
99
- # intersect.
100
- #
101
- # @param [Array(Geom::Point3d, Geom::Vector3d)] line2
102
- # The second line to
103
- # intersect.
104
- #
105
- # @return [Geom::Point3d, nil] The intersection point. Returns +nil+ if they
106
- # do not intersect.
107
- #
108
- # @see Geom
109
- # The Geom module for alternative versions of defining a line.
110
- #
111
- # @version SketchUp 6.0
112
- def self.intersect_line_line(line1, line2)
113
- end
114
-
115
- # The {.intersect_line_plane} method is used to compute the intersection of a
116
- # line and a plane.
117
- #
118
- # @example
119
- # # Defines a line parallel to the X axis, offset 20 units.
120
- # line = [Geom::Point3d.new(-10, 20, 0), Geom::Vector3d.new(1, 0, 0)]
121
- # # Defines a plane with it's normal parallel to the x axis.
122
- # plane = [Geom::Point3d.new(10, 0 ,0), Geom::Vector3d.new(1, 0, 0)]
123
- # # This will return a point Point3d(10, 20, 0).
124
- # point = Geom.intersect_line_plane(line, plane)
125
- #
126
- # @param [Array(Geom::Point3d, Geom::Vector3d)] line
127
- #
128
- # @param [Array(Geom::Point3d, Geom::Point3d)] plane
129
- #
130
- # @return [Geom::Point3d, nil] A Point3d object. Returns +nil+ if they do not
131
- # intersect.
132
- #
133
- # @see Geom
134
- # The Geom module for alternative versions of defining lines and
135
- # planes.
136
- #
137
- # @version SketchUp 6.0
138
- def self.intersect_line_plane(line, plane)
139
- end
140
-
141
- # The {.intersect_plane_plane} method is used to compute the intersection of
142
- # two planes.
143
- #
144
- # @example
145
- # # Defines a plane with it's normal parallel to the x axis.
146
- # plane1 = [Geom::Point3d.new(10, 0 ,0), Geom::Vector3d.new(1, 0, 0)]
147
- # # Defines a plane with it's normal parallel to the y axis.
148
- # plane2 = [Geom::Point3d.new(0, 20 ,0), Geom::Vector3d.new(0, 1, 0)]
149
- # # This will return a line [Point3d(10, 20, 0), Vector3d(0, 0, 1)].
150
- # line = Geom.intersect_plane_plane(plane1, plane2)
151
- #
152
- # @param [Array(Geom::Point3d, Geom::Point3d)] plane1
153
- # The first plane to
154
- # intersect
155
- #
156
- # @param [Array(Geom::Point3d, Geom::Point3d)] plane2
157
- # The second plane to
158
- # intersect
159
- #
160
- # @return [Array(Geom::Point3d, Geom::Vector3d)] A line where the planes
161
- # intersect if successful. Returns +nil+ if the planes do not intersect.
162
- #
163
- # @version SketchUp 6.0
164
- def self.intersect_plane_plane(plane1, plane2)
165
- end
166
-
167
- # The {.linear_combination} method is used to compute the linear combination of
168
- # points or vectors.
169
- #
170
- # @example
171
- # point1 = Geom::Point3d.new(1, 1, 1)
172
- # point2 = Geom::Point3d.new(10, 10, 10)
173
- # # Gets the point on the line segment connecting point1 and point2 that is
174
- # # 3/4 the way from point1 to point2: Point3d(7.75, 7.75, 7.75).
175
- # point = Geom.linear_combination(0.25, point1, 0.75, point2)
176
- #
177
- # @overload linear_combination(weight1, point1, weight2, point2)
178
- #
179
- # @param [Float] weight1
180
- # @param [Geom::Point3d] point1
181
- # @param [Float] weight2
182
- # @param [Geom::Point3d] point2
183
- # @return [Geom::Point3d]
184
- #
185
- # @overload linear_combination(weight1, vector1, weight2, vector2)
186
- #
187
- # @param [Float] weight1
188
- # @param [Geom::Vector3d] vector1
189
- # @param [Float] weight2
190
- # @param [Geom::Vector3d] vector2
191
- # @return [Geom::Vector3d]
192
- #
193
- # @version SketchUp 6.0
194
- def self.linear_combination(weight1, pt_or_vect1, weight2, pt_or_vect2)
195
- end
196
-
197
- # The {.point_in_polygon_2D} method is used to determine whether a point is
198
- # inside a polygon. The z component of both the point you're checking and
199
- # the points in the polygon are ignored, effectively making it a 2-d check.
200
- #
201
- # @example
202
- # # Create a point that we want to check. (Note that the 3rd coordinate,
203
- # # the z, is ignored for purposes of the check.)
204
- # point = Geom::Point3d.new(5, 0, 10)
205
- #
206
- # # Create a series of points of a triangle we want to check against.
207
- # triangle = []
208
- # triangle << Geom::Point3d.new(0, 0, 0)
209
- # triangle << Geom::Point3d.new(10, 0, 0)
210
- # triangle << Geom::Point3d.new(0, 10, 0)
211
- #
212
- # # Test to see if our point is inside the triangle, counting hits on
213
- # # the border as an intersection in this case.
214
- # hits_on_border_count = true
215
- # status = Geom.point_in_polygon_2D(point, triangle, hits_on_border_count)
216
- #
217
- # @param [Geom::Point3d] point
218
- #
219
- # @param [Array<Geom::Point3d>] polygon
220
- # An array of points that represent the
221
- # corners of the polygon you are checking against.
222
- #
223
- # @param [Boolean] check_border
224
- # Pass true if a point on the border should be
225
- # counted as inside the polygon.
226
- #
227
- # @return [Boolean] +true+ if the point is inside the polygon.
228
- #
229
- # @version SketchUp 6.0
230
- def self.point_in_polygon_2D(point, polygon, check_border)
231
- end
232
-
233
- # Tessellates a polygon, represented as a collection of 3D points. Can include
234
- # holes by providing collections of points describing the inner loops. This is
235
- # intended to be used for planar polygons.
236
- #
237
- # Useful to draw concave polygons using {Sketchup::View#draw} or
238
- # {Sketchup::View#draw2d}.
239
- #
240
- # It can also be useful for importers where the input format describes only the
241
- # loops for a polygon and you want to work with a collection of triangles.
242
- #
243
- # <b>Polygon with two holes, one empty and one filled:</b>
244
- #
245
- # <i>(See "Drawing a polygon with holes from a custom tool" example)</i>
246
- #
247
- # rdoc-image:images/geom-tesselation-polygon-with-holes.png
248
- #
249
- # @example Iterate over each triangle in the returned set
250
- # polygon = [
251
- # Geom::Point3d.new(0, 0, 0),
252
- # Geom::Point3d.new(90, 0, 0),
253
- # Geom::Point3d.new(60, 40, 0),
254
- # Geom::Point3d.new(90, 90, 0),
255
- # Geom::Point3d.new(30, 70, 0),
256
- # ]
257
- # triangles = Geom.tesselate(polygon)
258
- # triangles.each_slice(3) { |triangle|
259
- # # Work with each triangle set...
260
- # }
261
- # # Or get an array of triangles:
262
- # triangles_set = triangles.each_slice(3).to_a
263
- #
264
- # @example Drawing a polygon with holes from a custom tool
265
- # class ExampleTool
266
- #
267
- # def initialize
268
- # polygon = [
269
- # Geom::Point3d.new(0, 0, 0),
270
- # Geom::Point3d.new(90, 0, 0),
271
- # Geom::Point3d.new(60, 40, 0),
272
- # Geom::Point3d.new(90, 90, 0),
273
- # Geom::Point3d.new(30, 70, 0),
274
- # ] # Counter-clockwise order
275
- # hole1 = [
276
- # Geom::Point3d.new(20, 10, 0),
277
- # Geom::Point3d.new(40, 10, 0),
278
- # Geom::Point3d.new(45, 25, 0),
279
- # Geom::Point3d.new(30, 20, 0),
280
- # Geom::Point3d.new(25, 25, 0),
281
- # ].reverse # Clockwise order - empty hole
282
- # hole2 = [
283
- # Geom::Point3d.new(30, 40, 0),
284
- # Geom::Point3d.new(50, 40, 0),
285
- # Geom::Point3d.new(50, 50, 0),
286
- # Geom::Point3d.new(30, 50, 0),
287
- # ].reverse # Counter-clockwise order - filled hole
288
- # @triangles = Geom.tesselate(polygon, hole1, hole2)
289
- # end
290
- #
291
- # def activate
292
- # Sketchup.active_model.active_view.invalidate
293
- # end
294
- #
295
- # def onMouseMove(flags, x, y, view)
296
- # view.invalidate
297
- # end
298
- #
299
- # def getExtents
300
- # bounds = Geom::BoundingBox.new
301
- # bounds.add(@triangles)
302
- # bounds
303
- # end
304
- #
305
- # def draw(view)
306
- # view.drawing_color = Sketchup::Color.new(192, 0, 0)
307
- # view.draw(GL_TRIANGLES, @triangles)
308
- # end
309
- #
310
- # end
311
- #
312
- # Sketchup.active_model.select_tool(ExampleTool.new)
313
- #
314
- # @note The winding order of the polygons matter. The outer loop should be
315
- # in counter-clockwise order. To cut an empty hole the inner loops should be
316
- # in clockwise order, otherwise they will create a loop filled with
317
- # triangles.
318
- #
319
- # @note The tesselation is using the same logic as SketchUp its rendering
320
- # pipeline. But the exact result is an implementation detail which may change
321
- # between versions. In particularly the results of degenerate polygons and
322
- # non-planar polygons is undefined as part of the API contract. Such
323
- # polygons are for example polygons where all points are colinear, polygons
324
- # with duplicate points, non-planar polygons.
325
- #
326
- # @note If you want the triangles from an existing {Sketchup::Face} it's better
327
- # to use {Sketchup::Face#mesh}.
328
- #
329
- # @param [Array<Geom::Point3d>] polygon_loop_points
330
- #
331
- # @param [Array<Array<Geom::Point3d>>] inner_loop_points
332
- #
333
- # @raise [ArgumentError] if any of the loops contain less than three points.
334
- #
335
- # @raise [RuntimeError] if the tesselator returned an error.
336
- #
337
- # @return [Array<Geom::Point3d>] an array of points with a stride of three
338
- # representing a set of triangles.
339
- #
340
- # @see Sketchup::View#draw
341
- #
342
- # @see Sketchup::View#draw2d
343
- #
344
- # @version SketchUp 2020.0
345
- def self.tesselate(polygon_loop_points, *inner_loop_points)
346
- end
347
-
348
- end
1
+ # Copyright:: Copyright 2020 Trimble Inc.
2
+ # License:: The MIT License (MIT)
3
+
4
+ # The Geom module defines a number of Module methods that let you perform
5
+ # different geometric operations.
6
+ #
7
+ # The methods in this module take lines
8
+ # and planes as arguments. There is no special class for representing lines or
9
+ # planes. Arrays are used for both.
10
+ #
11
+ # A line can be represented as either an Array of a point and a
12
+ # vector, or as an Array of two points.
13
+ # line1 = [Geom::Point3d.new(0, 0, 0), Geom::Vector3d.new(0, 0, 1)]
14
+ # line2 = [Geom::Point3d.new(0, 0, 0), Geom::Point3d.new(0, 0, 100)]
15
+ #
16
+ # A plane can be represented as either an Array
17
+ # of a point and a vector, or as an Array of 4 numbers that give the
18
+ # coefficients of a plane equation.
19
+ # plane1 = [Geom::Point3d.new(0, 0, 0), Geom::Vector3d.new(0, 0, 1)]
20
+ # plane2 = [0, 0, 1, 0]
21
+ #
22
+ # There are several good books on 3D math if you are new to
23
+ # the concepts of a line, plane, and vector.
24
+ #
25
+ # @note Lines and Planes are infinite.
26
+ #
27
+ # @version SketchUp 6.0
28
+ module Geom
29
+
30
+ # Class Methods
31
+
32
+ # The {.closest_points} method is used to compute the closest points on two
33
+ # lines.
34
+ #
35
+ # line.
36
+ #
37
+ # @example
38
+ # line1 = [Geom::Point3d.new(0, 2, 0), Geom::Vector3d.new(1, 0, 0)]
39
+ # line2 = [Geom::Point3d.new(3, 0, 0), Geom::Vector3d.new(0, 1, 0)]
40
+ # # This will return a point Point3d(3, 2, 0).
41
+ # points = Geom.closest_points(line1, line2)
42
+ #
43
+ # @param [Array(Geom::Point3d, Geom::Vector3d)] line1
44
+ # The first line to
45
+ # intersect
46
+ #
47
+ # @param [Array(Geom::Point3d, Geom::Vector3d)] line2
48
+ # The second line to
49
+ # intersect
50
+ #
51
+ # @return [Array(Geom::Point3d, Geom::Point3d)] An array of two points. The
52
+ # first point is on the first line and the second point is on the second
53
+ #
54
+ # @version SketchUp 6.0
55
+ def self.closest_points(line1, line2)
56
+ end
57
+
58
+ # The {.fit_plane_to_points} method is used to compute a plane that is a best
59
+ # fit to an array of points. If more than three points are given some of the
60
+ # points may not be on the plane.
61
+ #
62
+ # The plane is returned as an {Array} of 4 numbers which are the
63
+ # coefficients of the plane equation <code>Ax + By + Cz + D = 0</code>.
64
+ #
65
+ # @example
66
+ # point1 = Geom::Point3d.new(0, 0, 0)
67
+ # point2 = Geom::Point3d.new(10, 10, 10)
68
+ # point3 = Geom::Point3d.new(25, 25, 25)
69
+ # plane = Geom.fit_plane_to_points(point1, point2, point3)
70
+ #
71
+ # @overload fit_plane_to_points(point1, point2, point3, ...)
72
+ #
73
+ # @param [Geom::Point3d] point1
74
+ # @param [Geom::Point3d] point2
75
+ # @param [Geom::Point3d] point3
76
+ # @return [Array(Geom::Point3d, Geom::Vector3d)] A plane
77
+ #
78
+ # @overload fit_plane_to_points(points)
79
+ #
80
+ # @param [Array<Geom::Point3d>] points
81
+ # @return [Array(Geom::Point3d, Geom::Vector3d)] A plane
82
+ #
83
+ # @version SketchUp 6.0
84
+ def self.fit_plane_to_points(*args)
85
+ end
86
+
87
+ # The {.intersect_line_line} computes the intersection of two lines.
88
+ #
89
+ # @example
90
+ # # Defines a line parallel to the Y axis, offset 20 units.
91
+ # line1 = [Geom::Point3d.new(20, 0, 0), Geom::Vector3d.new(0, 1, 0)]
92
+ # # Defines a line parallel to the X axis, offset 10 units.
93
+ # line2 = [Geom::Point3d.new(0, 10, 0), Geom::Point3d.new(20, 10, 0)]
94
+ # # This will return a point Point3d(20, 10, 0).
95
+ # point = Geom.intersect_line_line(line1, line2)
96
+ #
97
+ # @param [Array(Geom::Point3d, Geom::Vector3d)] line1
98
+ # The first line to
99
+ # intersect.
100
+ #
101
+ # @param [Array(Geom::Point3d, Geom::Vector3d)] line2
102
+ # The second line to
103
+ # intersect.
104
+ #
105
+ # @return [Geom::Point3d, nil] The intersection point. Returns +nil+ if they
106
+ # do not intersect.
107
+ #
108
+ # @see Geom
109
+ # The Geom module for alternative versions of defining a line.
110
+ #
111
+ # @version SketchUp 6.0
112
+ def self.intersect_line_line(line1, line2)
113
+ end
114
+
115
+ # The {.intersect_line_plane} method is used to compute the intersection of a
116
+ # line and a plane.
117
+ #
118
+ # @example
119
+ # # Defines a line parallel to the X axis, offset 20 units.
120
+ # line = [Geom::Point3d.new(-10, 20, 0), Geom::Vector3d.new(1, 0, 0)]
121
+ # # Defines a plane with it's normal parallel to the x axis.
122
+ # plane = [Geom::Point3d.new(10, 0 ,0), Geom::Vector3d.new(1, 0, 0)]
123
+ # # This will return a point Point3d(10, 20, 0).
124
+ # point = Geom.intersect_line_plane(line, plane)
125
+ #
126
+ # @param [Array(Geom::Point3d, Geom::Vector3d)] line
127
+ #
128
+ # @param [Array(Geom::Point3d, Geom::Point3d)] plane
129
+ #
130
+ # @return [Geom::Point3d, nil] A Point3d object. Returns +nil+ if they do not
131
+ # intersect.
132
+ #
133
+ # @see Geom
134
+ # The Geom module for alternative versions of defining lines and
135
+ # planes.
136
+ #
137
+ # @version SketchUp 6.0
138
+ def self.intersect_line_plane(line, plane)
139
+ end
140
+
141
+ # The {.intersect_plane_plane} method is used to compute the intersection of
142
+ # two planes.
143
+ #
144
+ # @example
145
+ # # Defines a plane with it's normal parallel to the x axis.
146
+ # plane1 = [Geom::Point3d.new(10, 0 ,0), Geom::Vector3d.new(1, 0, 0)]
147
+ # # Defines a plane with it's normal parallel to the y axis.
148
+ # plane2 = [Geom::Point3d.new(0, 20 ,0), Geom::Vector3d.new(0, 1, 0)]
149
+ # # This will return a line [Point3d(10, 20, 0), Vector3d(0, 0, 1)].
150
+ # line = Geom.intersect_plane_plane(plane1, plane2)
151
+ #
152
+ # @param [Array(Geom::Point3d, Geom::Point3d)] plane1
153
+ # The first plane to
154
+ # intersect
155
+ #
156
+ # @param [Array(Geom::Point3d, Geom::Point3d)] plane2
157
+ # The second plane to
158
+ # intersect
159
+ #
160
+ # @return [Array(Geom::Point3d, Geom::Vector3d)] A line where the planes
161
+ # intersect if successful. Returns +nil+ if the planes do not intersect.
162
+ #
163
+ # @version SketchUp 6.0
164
+ def self.intersect_plane_plane(plane1, plane2)
165
+ end
166
+
167
+ # The {.linear_combination} method is used to compute the linear combination of
168
+ # points or vectors.
169
+ #
170
+ # @example
171
+ # point1 = Geom::Point3d.new(1, 1, 1)
172
+ # point2 = Geom::Point3d.new(10, 10, 10)
173
+ # # Gets the point on the line segment connecting point1 and point2 that is
174
+ # # 3/4 the way from point1 to point2: Point3d(7.75, 7.75, 7.75).
175
+ # point = Geom.linear_combination(0.25, point1, 0.75, point2)
176
+ #
177
+ # @overload linear_combination(weight1, point1, weight2, point2)
178
+ #
179
+ # @param [Float] weight1
180
+ # @param [Geom::Point3d] point1
181
+ # @param [Float] weight2
182
+ # @param [Geom::Point3d] point2
183
+ # @return [Geom::Point3d]
184
+ #
185
+ # @overload linear_combination(weight1, vector1, weight2, vector2)
186
+ #
187
+ # @param [Float] weight1
188
+ # @param [Geom::Vector3d] vector1
189
+ # @param [Float] weight2
190
+ # @param [Geom::Vector3d] vector2
191
+ # @return [Geom::Vector3d]
192
+ #
193
+ # @version SketchUp 6.0
194
+ def self.linear_combination(weight1, pt_or_vect1, weight2, pt_or_vect2)
195
+ end
196
+
197
+ # The {.point_in_polygon_2D} method is used to determine whether a point is
198
+ # inside a polygon. The z component of both the point you're checking and
199
+ # the points in the polygon are ignored, effectively making it a 2-d check.
200
+ #
201
+ # @example
202
+ # # Create a point that we want to check. (Note that the 3rd coordinate,
203
+ # # the z, is ignored for purposes of the check.)
204
+ # point = Geom::Point3d.new(5, 0, 10)
205
+ #
206
+ # # Create a series of points of a triangle we want to check against.
207
+ # triangle = []
208
+ # triangle << Geom::Point3d.new(0, 0, 0)
209
+ # triangle << Geom::Point3d.new(10, 0, 0)
210
+ # triangle << Geom::Point3d.new(0, 10, 0)
211
+ #
212
+ # # Test to see if our point is inside the triangle, counting hits on
213
+ # # the border as an intersection in this case.
214
+ # hits_on_border_count = true
215
+ # status = Geom.point_in_polygon_2D(point, triangle, hits_on_border_count)
216
+ #
217
+ # @param [Geom::Point3d] point
218
+ #
219
+ # @param [Array<Geom::Point3d>] polygon
220
+ # An array of points that represent the
221
+ # corners of the polygon you are checking against.
222
+ #
223
+ # @param [Boolean] check_border
224
+ # Pass true if a point on the border should be
225
+ # counted as inside the polygon.
226
+ #
227
+ # @return [Boolean] +true+ if the point is inside the polygon.
228
+ #
229
+ # @version SketchUp 6.0
230
+ def self.point_in_polygon_2D(point, polygon, check_border)
231
+ end
232
+
233
+ # Tessellates a polygon, represented as a collection of 3D points. Can include
234
+ # holes by providing collections of points describing the inner loops. This is
235
+ # intended to be used for planar polygons.
236
+ #
237
+ # Useful to draw concave polygons using {Sketchup::View#draw} or
238
+ # {Sketchup::View#draw2d}.
239
+ #
240
+ # It can also be useful for importers where the input format describes only the
241
+ # loops for a polygon and you want to work with a collection of triangles.
242
+ #
243
+ # <b>Polygon with two holes, one empty and one filled:</b>
244
+ #
245
+ # <i>(See "Drawing a polygon with holes from a custom tool" example)</i>
246
+ #
247
+ # rdoc-image:images/geom-tesselation-polygon-with-holes.png
248
+ #
249
+ # @example Iterate over each triangle in the returned set
250
+ # polygon = [
251
+ # Geom::Point3d.new(0, 0, 0),
252
+ # Geom::Point3d.new(90, 0, 0),
253
+ # Geom::Point3d.new(60, 40, 0),
254
+ # Geom::Point3d.new(90, 90, 0),
255
+ # Geom::Point3d.new(30, 70, 0),
256
+ # ]
257
+ # triangles = Geom.tesselate(polygon)
258
+ # triangles.each_slice(3) { |triangle|
259
+ # # Work with each triangle set...
260
+ # }
261
+ # # Or get an array of triangles:
262
+ # triangles_set = triangles.each_slice(3).to_a
263
+ #
264
+ # @example Drawing a polygon with holes from a custom tool
265
+ # class ExampleTool
266
+ #
267
+ # def initialize
268
+ # polygon = [
269
+ # Geom::Point3d.new(0, 0, 0),
270
+ # Geom::Point3d.new(90, 0, 0),
271
+ # Geom::Point3d.new(60, 40, 0),
272
+ # Geom::Point3d.new(90, 90, 0),
273
+ # Geom::Point3d.new(30, 70, 0),
274
+ # ] # Counter-clockwise order
275
+ # hole1 = [
276
+ # Geom::Point3d.new(20, 10, 0),
277
+ # Geom::Point3d.new(40, 10, 0),
278
+ # Geom::Point3d.new(45, 25, 0),
279
+ # Geom::Point3d.new(30, 20, 0),
280
+ # Geom::Point3d.new(25, 25, 0),
281
+ # ].reverse # Clockwise order - empty hole
282
+ # hole2 = [
283
+ # Geom::Point3d.new(30, 40, 0),
284
+ # Geom::Point3d.new(50, 40, 0),
285
+ # Geom::Point3d.new(50, 50, 0),
286
+ # Geom::Point3d.new(30, 50, 0),
287
+ # ].reverse # Counter-clockwise order - filled hole
288
+ # @triangles = Geom.tesselate(polygon, hole1, hole2)
289
+ # end
290
+ #
291
+ # def activate
292
+ # Sketchup.active_model.active_view.invalidate
293
+ # end
294
+ #
295
+ # def onMouseMove(flags, x, y, view)
296
+ # view.invalidate
297
+ # end
298
+ #
299
+ # def getExtents
300
+ # bounds = Geom::BoundingBox.new
301
+ # bounds.add(@triangles)
302
+ # bounds
303
+ # end
304
+ #
305
+ # def draw(view)
306
+ # view.drawing_color = Sketchup::Color.new(192, 0, 0)
307
+ # view.draw(GL_TRIANGLES, @triangles)
308
+ # end
309
+ #
310
+ # end
311
+ #
312
+ # Sketchup.active_model.select_tool(ExampleTool.new)
313
+ #
314
+ # @note The winding order of the polygons matter. The outer loop should be
315
+ # in counter-clockwise order. To cut an empty hole the inner loops should be
316
+ # in clockwise order, otherwise they will create a loop filled with
317
+ # triangles.
318
+ #
319
+ # @note The tesselation is using the same logic as SketchUp its rendering
320
+ # pipeline. But the exact result is an implementation detail which may change
321
+ # between versions. In particularly the results of degenerate polygons and
322
+ # non-planar polygons is undefined as part of the API contract. Such
323
+ # polygons are for example polygons where all points are colinear, polygons
324
+ # with duplicate points, non-planar polygons.
325
+ #
326
+ # @note If you want the triangles from an existing {Sketchup::Face} it's better
327
+ # to use {Sketchup::Face#mesh}.
328
+ #
329
+ # @param [Array<Geom::Point3d>] polygon_loop_points
330
+ #
331
+ # @param [Array<Array<Geom::Point3d>>] inner_loop_points
332
+ #
333
+ # @raise [ArgumentError] if any of the loops contain less than three points.
334
+ #
335
+ # @raise [RuntimeError] if the tesselator returned an error.
336
+ #
337
+ # @return [Array<Geom::Point3d>] an array of points with a stride of three
338
+ # representing a set of triangles.
339
+ #
340
+ # @see Sketchup::View#draw
341
+ #
342
+ # @see Sketchup::View#draw2d
343
+ #
344
+ # @version SketchUp 2020.0
345
+ def self.tesselate(polygon_loop_points, *inner_loop_points)
346
+ end
347
+
348
+ end