ruby-gr 0.0.14 → 0.0.15

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: cbb0e07aec1fa9f4377df0a4c6c0765802f56ca299975970716b86d8aebf2273
4
- data.tar.gz: 61a995043b20ba81623a96f45ca4689a9be49e8a5451497bc997cbbdee412361
3
+ metadata.gz: 1d9ef46d38e4a4cb1d52b933af0b1d3a44de17e780bbb0dc404ac62a40026827
4
+ data.tar.gz: 9084d96ecd560a87d7540d736e87312cc3351f85bcdc4a2ed1a4eb5b590b3ed0
5
5
  SHA512:
6
- metadata.gz: 168285500cbd4c3a343001f3ad7649d03f37155da471546796569bf107018bd83d9c0b9af5c2a9c58b03b49163fc211f24156037abefc4f7bab459d4f1ed488a
7
- data.tar.gz: da487fbc4d174d079b550e7fd2539defb66a4a9981c3af2b8d518e84f97dcc0bfecf52e83e9271817e2fe149252ef735b23132b33aa95a587009343951ad9d26
6
+ metadata.gz: 5b4acddc1c8237754644b1e75b9b11d87364e0ef2d5fac59e9ce5685464dcab180817e130a0b244cf27ac3716d0c9e1e6f78192b031a229b42cc1157117aea70
7
+ data.tar.gz: cf0daf98117cf7408bb1b8f3e33006043a0cd3c7f17da6f0521d98b2ebf5788be88defc0e6909ed00101a1f3a9023dbfb3cc9879b86c79193fc6750d8f6022f9
@@ -20,3 +20,27 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
20
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
21
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22
22
  THE SOFTWARE.
23
+
24
+ The Fiddley module is:
25
+
26
+ Copyright (c) 2017 NAKAMURA Usaku usa@garbagecollect.jp
27
+
28
+ Redistribution and use in source and binary forms, with or without
29
+ modification, are permitted provided that the following conditions are met:
30
+
31
+ 1. Redistributions of source code must retain the above copyright notice, this
32
+ list of conditions and the following disclaimer.
33
+ 2. Redistributions in binary form must reproduce the above copyright notice,
34
+ this list of conditions and the following disclaimer in the documentation
35
+ and/or other materials provided with the distribution.
36
+
37
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
38
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
39
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
40
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
41
+ ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
42
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
43
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
44
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
45
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
46
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
data/README.md CHANGED
@@ -49,10 +49,49 @@ GR.plot(x, y)
49
49
 
50
50
  ## Examples
51
51
 
52
- Have a look in the [`examples`](https://github.com/red-data-tools/GR.rb/tree/master/examples) directory.
52
+ Have a look in the [`examples`](https://github.com/red-data-tools/GR.rb/tree/master/examples) directory. Start with [`fast_plot`](https://github.com/red-data-tools/GR.rb/blob/master/examples/fast_plots.rb).
53
+
54
+ ## Features
55
+
56
+ #### GR::Plot
57
+
58
+ A simple, matlab-style API.
59
+
60
+ ```ruby
61
+ require 'gr/plot'
62
+ ```
63
+
64
+ `plot` `step` `scatter` `stem` `histogram` `contour` `contourf` `hexbin` `heatmap` `wireframe` `surface` `plot3` `scatter3` `imshow` `isosurface` `polar` `polarhist` `polarheatmap` `trisurf` `tricont` `shade` `volume`
65
+
66
+ #### GR
67
+
68
+ ```ruby
69
+ require 'gr'
70
+ ```
71
+
72
+ #### GR3
73
+
74
+ ```ruby
75
+ require 'gr3'
76
+ ```
77
+
78
+ ## Documentation
79
+
80
+ - [GR Framework](https://gr-framework.org/)
81
+ - [GR.rb API Documentation](https://rubydoc.info/gems/ruby-gr)
53
82
 
54
83
  ## GR Installation
55
84
 
85
+ ### Official binary release
86
+
87
+ Download the [latest release](https://github.com/sciapp/gr/releases).
88
+
89
+ Set environment variable GRDIR.
90
+
91
+ ```sh
92
+ export GRDIR="your/path/to/gr"
93
+ ```
94
+
56
95
  ### Homebrew
57
96
 
58
97
  ```sh
@@ -65,16 +104,20 @@ Set environment variable GRDIR.
65
104
  export GRDIR=$(brew --prefix libgr)
66
105
  ```
67
106
 
68
- ### Mac Linux Windows
107
+ If you fail to build libgr using homebrew, Please feel free to [send us your feedback](https://github.com/red-data-tools/GR.rb/issues).
69
108
 
70
- Download the [latest release](https://github.com/sciapp/gr/releases).
109
+ ## Backend for Charty
71
110
 
72
- Set environment variable GRDIR.
73
-
74
- ```sh
75
- export GRDIR="your/path/to/gr"
76
- ```
111
+ GR.rb is expected to be the backend for [Charty](https://github.com/red-data-tools/charty) in the future.
77
112
 
78
113
  ## Contributing
79
114
 
80
- Bug reports and pull requests are welcome on GitHub at https://github.com/red-data-tools/GR.rb.
115
+ * Report bugs
116
+ * Fix bugs and submit pull requests
117
+ * Write, clarify, or fix documentation
118
+ * Suggest or add new features
119
+
120
+ ## Acknowledgements
121
+
122
+ We would like to thank Josef Heinen, the creator of [GR.jl](https://github.com/jheinen/GR.jl) and Florian Rhiem, the creator of [python-gr](https://github.com/sciapp/python-gr).
123
+
data/lib/gr.rb CHANGED
@@ -529,6 +529,13 @@ module GR
529
529
  super
530
530
  end
531
531
 
532
+ # Gets the current text color index.
533
+ # This function gets the color of text output primitives.
534
+ # @return [Integer] color The text color index (COLOR < 1256)
535
+ def inqtextcolorind
536
+ inquiry_int { |pt| super(pt) }
537
+ end
538
+
532
539
  # Set the current character height.
533
540
  # @param height [Numeric] Text height value
534
541
  # `setcharheight` defines the height of subsequent text output primitives. Text height
@@ -1399,12 +1406,14 @@ module GR
1399
1406
 
1400
1407
  # @return [Integer]
1401
1408
  def readimage(path)
1409
+ # Feel free to make a pull request if you catch a mistake
1410
+ # or you have an idea to improve it.
1402
1411
  data = Fiddle::Pointer.malloc(Fiddle::SIZEOF_INTPTR_T)
1403
1412
  w, h = inquiry [:int, :int] do |width, height|
1404
1413
  # data is a pointer of a pointer
1405
1414
  super(path, width, height, data.ref)
1406
1415
  end
1407
- d = data.to_str(w * h * 4).unpack('L*') # UINT8
1416
+ d = data.to_str(w * h * Fiddle::SIZEOF_INT).unpack('L*') # UInt32
1408
1417
  [w, h, d]
1409
1418
  end
1410
1419
 
@@ -1560,6 +1569,26 @@ module GR
1560
1569
  super
1561
1570
  end
1562
1571
 
1572
+ def delaunay(x, y)
1573
+ # Feel free to make a pull request if you catch a mistake
1574
+ # or you have an idea to improve it.
1575
+ npoints = equal_length(x, y)
1576
+ triangles = Fiddle::Pointer.malloc(Fiddle::SIZEOF_INTPTR_T)
1577
+ dim = 3
1578
+ n_tri = inquiry_int do |ntri|
1579
+ super(npoints, x, y, ntri, triangles.ref)
1580
+ end
1581
+ if n_tri > 0
1582
+ tri = triangles.to_str(3 * n_tri * Fiddle::SIZEOF_INT).unpack('l*') # Int32
1583
+ # Ruby : 0-based indexing
1584
+ # Julia : 1-based indexing
1585
+ tri = tri.each_slice(3).to_a
1586
+ [n_tri, tri]
1587
+ else
1588
+ 0
1589
+ end
1590
+ end
1591
+
1563
1592
  # Reduces the number of points of the x and y array.
1564
1593
  def reducepoints(xd, yd, n)
1565
1594
  nd = equal_length(xd, yd)
@@ -1913,6 +1942,39 @@ module GR
1913
1942
  super(*pts)
1914
1943
  end
1915
1944
  end
1945
+
1946
+ # Set the scale factor for each axis. A one means no scale.
1947
+ # All factor have to be != 0.
1948
+ # @param x_axis_scale [Numeric] factor for scaling the x-axis
1949
+ # @param y_axis_scale [Numeric] factor for scaling the y-axis
1950
+ # @param z_axis_scale [Numeric] factor for scaling the z-axis
1951
+ def setscalefactors3d(*)
1952
+ super
1953
+ end
1954
+
1955
+ # Returns the scale factors for each axis.
1956
+ def inqscalefactors3d
1957
+ inquiry %i[double double double] do |*opts|
1958
+ super(*opts)
1959
+ end
1960
+ end
1961
+
1962
+ # This is an interface for REPL based languages to enable an easier way to
1963
+ # rotate around an object.
1964
+ # The center of the 3d window is used as the focus point and the camera is
1965
+ # positioned relative to it, using spherical coordinates. This function can
1966
+ # therefore also be used if the user prefers spherical coordinates to setting
1967
+ # the direct camera position, but with reduced functionality in comparison
1968
+ # to gr.settransformationparameters, gr.setperspectiveprojection and
1969
+ # gr.setorthographicprojection.
1970
+ # @param phi [Numeric] phi angle of the spherical coordinates
1971
+ # @param theta [Numeric] theta angle of the spherical coordinates
1972
+ # @param fov [Numeric] vertical field of view (0 or NaN for orthographic projection)
1973
+ # @param radius [Numeric] distance between the camera and the focus point
1974
+ # (0 or NaN for the radius of the object's smallest bounding sphere)
1975
+ def transformationinterfaceforrepl(*)
1976
+ super
1977
+ end
1916
1978
  end
1917
1979
 
1918
1980
  ASF_BUNDLED = 0
@@ -2147,4 +2209,21 @@ module GR
2147
2209
  UPSAMPLE_HORIZONTAL_LANCZOS = 0x00000300
2148
2210
  DOWNSAMPLE_VERTICAL_LANCZOS = 0x00030000
2149
2211
  DOWNSAMPLE_HORIZONTAL_LANCZOS = 0x03000000
2212
+
2213
+ RESAMPLE_DEFAULT =
2214
+ (UPSAMPLE_VERTICAL_DEFAULT | UPSAMPLE_HORIZONTAL_DEFAULT |
2215
+ DOWNSAMPLE_VERTICAL_DEFAULT | DOWNSAMPLE_HORIZONTAL_DEFAULT)
2216
+ RESAMPLE_NEAREST =
2217
+ (UPSAMPLE_VERTICAL_NEAREST | UPSAMPLE_HORIZONTAL_NEAREST |
2218
+ DOWNSAMPLE_VERTICAL_NEAREST | DOWNSAMPLE_HORIZONTAL_NEAREST)
2219
+ RESAMPLE_LINEAR =
2220
+ (UPSAMPLE_VERTICAL_LINEAR | UPSAMPLE_HORIZONTAL_LINEAR |
2221
+ DOWNSAMPLE_VERTICAL_LINEAR | DOWNSAMPLE_HORIZONTAL_LINEAR)
2222
+ RESAMPLE_LANCZOS =
2223
+ (UPSAMPLE_VERTICAL_LANCZOS | UPSAMPLE_HORIZONTAL_LANCZOS |
2224
+ DOWNSAMPLE_VERTICAL_LANCZOS | DOWNSAMPLE_HORIZONTAL_LANCZOS)
2225
+
2226
+ PROJECTION_DEFAULT = 0
2227
+ PROJECTION_ORTHOGRAPHIC = 1
2228
+ PROJECTION_PERSPECTIVE = 2
2150
2229
  end
@@ -61,6 +61,7 @@ module GR
61
61
  try_extern 'void gr_setcharexpan(double)'
62
62
  try_extern 'void gr_setcharspace(double)'
63
63
  try_extern 'void gr_settextcolorind(int)'
64
+ try_extern 'void gr_inqtextcolorind(int *)'
64
65
  try_extern 'void gr_setcharheight(double)'
65
66
  try_extern 'void gr_setcharup(double, double)'
66
67
  try_extern 'void gr_settextpath(int)'
@@ -160,7 +161,7 @@ module GR
160
161
  try_extern 'void gr_selectcontext(int)'
161
162
  try_extern 'void gr_destroycontext(int)'
162
163
  try_extern 'int gr_uselinespec(char *)'
163
- # try_extern 'void gr_delaunay(int, const double *, const double *, int *, int **)'
164
+ try_extern 'void gr_delaunay(int, const double *, const double *, int *, int **)'
164
165
  try_extern 'void gr_reducepoints(int, const double *, const double *, int, double *, double *)'
165
166
  try_extern 'void gr_trisurface(int, double *, double *, double *)'
166
167
  try_extern 'void gr_gradient(int, int, double *, double *, double *, double *, double *)'
@@ -193,5 +194,8 @@ module GR
193
194
  try_extern 'void gr_camerainteraction(double, double, double, double)'
194
195
  try_extern 'void gr_setwindow3d(double, double, double, double, double, double)'
195
196
  try_extern 'void gr_inqwindow3d(double *, double *, double *, double *, double *, double *)'
197
+ try_extern 'void gr_setscalefactors3d(double, double, double)'
198
+ try_extern 'void gr_inqscalefactors3d(double *, double *, double *)'
199
+ try_extern 'void gr_transformationinterfaceforrepl(double, double, double, double)'
196
200
  end
197
201
  end
@@ -172,6 +172,7 @@ module GR
172
172
  scale |= GR::OPTION_FLIP_Y if kvs[:yflip]
173
173
  scale |= GR::OPTION_FLIP_Z if kvs[:zflip]
174
174
  end
175
+ kvs[:scale] = scale
175
176
  if kvs.has_key?(:panzoom)
176
177
  xmin, xmax, ymin, ymax = GR.panzoom(*kvs[:panzoom])
177
178
  kvs[:xrange] = [xmin, xmax]
@@ -561,6 +562,8 @@ module GR
561
562
  # Not yet.
562
563
  end
563
564
 
565
+ GR.settextfontprec(232, 3)
566
+
564
567
  set_viewport(kind, kvs[:subplot])
565
568
  unless kvs[:ax]
566
569
  set_window(kind)
@@ -821,7 +824,7 @@ module GR
821
824
  plot_polar(x, y)
822
825
 
823
826
  when :trisurf
824
- GR._trisurface_(x, y, z)
827
+ GR.trisurface(x, y, z)
825
828
  draw_axes(kind, 2)
826
829
  colorbar(0.05)
827
830
 
@@ -1035,9 +1038,12 @@ module GR
1035
1038
  def minmax
1036
1039
  xmin = ymin = zmin = cmin = Float::INFINITY
1037
1040
  xmax = ymax = zmax = cmax = -Float::INFINITY
1038
-
1041
+ scale = kvs[:scale]
1039
1042
  args.each do |x, y, z, c|
1040
1043
  if x
1044
+ if scale & GR::OPTION_X_LOG != 0
1045
+ x.map! { |v| v > 0 ? v : Float::NAN }
1046
+ end
1041
1047
  x0, x1 = x.minmax
1042
1048
  xmin = [x0, xmin].min
1043
1049
  xmax = [x1, xmax].max
@@ -1046,6 +1052,9 @@ module GR
1046
1052
  xmax = 1
1047
1053
  end
1048
1054
  if y
1055
+ if scale & GR::OPTION_Y_LOG != 0
1056
+ y.map! { |v| v > 0 ? v : Float::NAN }
1057
+ end
1049
1058
  y0, y1 = y.minmax
1050
1059
  ymin = [y0, ymin].min
1051
1060
  ymax = [y1, ymax].max
@@ -1054,6 +1063,9 @@ module GR
1054
1063
  ymax = 1
1055
1064
  end
1056
1065
  if z
1066
+ if scale & GR::OPTION_Z_LOG != 0
1067
+ z.map! { |v| v > 0 ? v : Float::NAN }
1068
+ end
1057
1069
  z0, z1 = z.minmax
1058
1070
  zmin = [z0, zmin].min
1059
1071
  zmax = [z1, zmax].max
@@ -1114,7 +1126,7 @@ module GR
1114
1126
  kvs[:labels].each do |label|
1115
1127
  label = label.to_s
1116
1128
  tbx, tby = inqtext(0, 0, label)
1117
- w = [w, tbx[2]].max
1129
+ w = [w, tbx[2] - tbx[0]].max
1118
1130
  h += [tby[2] - tby[0], 0.03].max
1119
1131
  end
1120
1132
  GR.setscale(scale)
@@ -1140,26 +1152,27 @@ module GR
1140
1152
  end
1141
1153
 
1142
1154
  class << self
1143
- # Draw one or more line plots.
1155
+ # (Plot) Draw one or more line plots.
1144
1156
  def plot(*args)
1145
1157
  create_plot(:line, *args)
1146
1158
  end
1147
1159
 
1148
- # Draw one or more step or staircase plots.
1160
+ # (Plot) Draw one or more step or staircase plots.
1149
1161
  def step(*args)
1150
1162
  create_plot(:step, *args)
1151
1163
  end
1152
1164
 
1153
- # Draw one or more scatter plots.
1165
+ # (Plot) Draw one or more scatter plots.
1154
1166
  def scatter(*args)
1155
1167
  create_plot(:scatter, *args)
1156
1168
  end
1157
1169
 
1158
- # Draw a stem plot.
1170
+ # (Plot) Draw a stem plot.
1159
1171
  def stem(*args)
1160
1172
  create_plot(:stem, *args)
1161
1173
  end
1162
1174
 
1175
+ # (Plot)
1163
1176
  def polarhistogram(x, kv = {})
1164
1177
  plt = GR::Plot.new(x, kv)
1165
1178
  plt.kvs[:kind] = :polarhist
@@ -1169,7 +1182,7 @@ module GR
1169
1182
  plt.plot_data
1170
1183
  end
1171
1184
 
1172
- # Draw a heatmap.
1185
+ # (Plot) Draw a heatmap.
1173
1186
  def heatmap(*args)
1174
1187
  # FIXME
1175
1188
  _x, _y, z, kv = parse_args(*args)
@@ -1182,6 +1195,7 @@ module GR
1182
1195
  end
1183
1196
  end
1184
1197
 
1198
+ # (Plot) Draw a polarheatmap.
1185
1199
  def polarheatmap(*args)
1186
1200
  d = args.shift
1187
1201
  # FIXME
@@ -1197,77 +1211,79 @@ module GR
1197
1211
  end
1198
1212
 
1199
1213
  alias _contour_ contour
1200
- # Draw a contour plot.
1214
+ # (Plot) Draw a contour plot.
1201
1215
  def contour(*args)
1202
1216
  x, y, z, kv = parse_args(*args)
1203
1217
  create_plot(:contour, x, y, z, kv)
1204
1218
  end
1205
1219
 
1206
1220
  alias _contourf_ contourf
1207
- # Draw a filled contour plot.
1221
+ # (Plot) Draw a filled contour plot.
1208
1222
  def contourf(*args)
1209
1223
  x, y, z, kv = parse_args(*args)
1210
1224
  create_plot(:contourf, x, y, z, kv)
1211
1225
  end
1212
1226
 
1213
1227
  alias _hexbin_ hexbin
1214
- # Draw a hexagon binning plot.
1228
+ # (Plot) Draw a hexagon binning plot.
1215
1229
  def hexbin(*args)
1216
1230
  create_plot(:hexbin, *args)
1217
1231
  end
1218
1232
 
1219
- # Draw a triangular contour plot.
1233
+ # (Plot) Draw a triangular contour plot.
1220
1234
  def tricont(*args)
1221
1235
  x, y, z, kv = parse_args(*args)
1222
1236
  create_plot(:tricont, x, y, z, kv)
1223
1237
  end
1224
1238
 
1225
- # Draw a three-dimensional wireframe plot.
1239
+ # (Plot) Draw a three-dimensional wireframe plot.
1226
1240
  def wireframe(*args)
1227
1241
  x, y, z, kv = parse_args(*args)
1228
1242
  create_plot(:wireframe, x, y, z, kv)
1229
1243
  end
1230
1244
 
1231
- # Draw a three-dimensional surface plot.
1245
+ # (Plot) Draw a three-dimensional surface plot.
1232
1246
  alias _surface_ surface
1233
1247
  def surface(*args)
1234
1248
  x, y, z, kv = parse_args(*args)
1235
1249
  create_plot(:surface, x, y, z, kv)
1236
1250
  end
1237
1251
 
1252
+ # (Plot)
1238
1253
  def polar(*args)
1239
1254
  create_plot(:polar, *args)
1240
1255
  end
1241
1256
 
1242
- alias _trisurface_ trisurface
1243
- # Draw a triangular surface plot.
1244
- def trisurface(*args)
1257
+ # (Plot) Draw a triangular surface plot.
1258
+ def trisurf(*args)
1245
1259
  x, y, z, kv = parse_args(*args)
1246
1260
  create_plot(:trisurf, x, y, z, kv)
1247
1261
  end
1248
1262
 
1249
- # Draw one or more three-dimensional line plots.
1263
+ # (Plot) Draw one or more three-dimensional line plots.
1250
1264
  def plot3(*args)
1251
1265
  create_plot(:plot3, *args)
1252
1266
  end
1253
1267
 
1254
- # Draw one or more three-dimensional scatter plots.
1268
+ # (Plot) Draw one or more three-dimensional scatter plots.
1255
1269
  def scatter3(*args)
1256
1270
  create_plot(:scatter3, *args)
1257
1271
  end
1258
1272
 
1259
1273
  alias _shade_ shade
1274
+ # (Plot)
1260
1275
  def shade(*args)
1261
1276
  create_plot(:shade, *args)
1262
1277
  end
1263
1278
 
1279
+ # (Plot)
1264
1280
  def volume(v, kv = {})
1265
1281
  create_plot(:volume, v, kv) do |plt|
1266
1282
  plt.args = [[nil, nil, v, nil, '']]
1267
1283
  end
1268
1284
  end
1269
1285
 
1270
- # Draw a bar plot.
1286
+ # (Plot) Draw a bar plot.
1271
1287
  def barplot(labels, heights, kv = {})
1272
1288
  labels = labels.map(&:to_s)
1273
1289
  wc, hc = barcoordinates(heights)
@@ -1285,7 +1301,7 @@ module GR
1285
1301
  end
1286
1302
  end
1287
1303
 
1288
- # Draw a histogram.
1304
+ # (Plot) Draw a histogram.
1289
1305
  def histogram(x, kv = {})
1290
1306
  create_plot(:hist, x, kv) do |plt|
1291
1307
  nbins = plt.kvs[:nbins] || 0
@@ -1294,7 +1310,7 @@ module GR
1294
1310
  end
1295
1311
  end
1296
1312
 
1297
- # Draw an image.
1313
+ # (Plot) Draw an image.
1298
1314
  def imshow(img, kv = {})
1299
1315
  img = Numo::DFloat.cast(img) # Umm...
1300
1316
  create_plot(:imshow, img, kv) do |plt|
@@ -1302,7 +1318,7 @@ module GR
1302
1318
  end
1303
1319
  end
1304
1320
 
1305
- # Draw an isosurface.
1321
+ # (Plot) Draw an isosurface.
1306
1322
  def isosurface(v, kv = {})
1307
1323
  v = Numo::DFloat.cast(v) # Umm...
1308
1324
  create_plot(:isosurface, v, kv) do |plt|
@@ -1310,6 +1326,7 @@ module GR
1310
1326
  end
1311
1327
  end
1312
1328
 
1329
+ # (Plot) Save the current figure to a file.
1313
1330
  def savefig(filename, kv = {})
1314
1331
  GR.beginprint(filename)
1315
1332
  plt = GR::Plot.last_plot
@@ -73,8 +73,17 @@ module GR3
73
73
  try_extern 'void gr3_setviewmatrix(const float *m)'
74
74
  try_extern 'int gr3_getprojectiontype(void)'
75
75
  try_extern 'void gr3_setprojectiontype(int type)'
76
- # try_extern 'unsigned int gr3_triangulate(const unsigned short *data, unsigned short isolevel, unsigned int dim_x, unsigned int dim_y, unsigned int dim_z, unsigned int stride_x, unsigned int stride_y, unsigned int stride_z, double step_x, double step_y, double step_z, double offset_x, double offset_y, double offset_z, gr3_triangle_t **triangles_p)'
77
- # try_extern 'void gr3_triangulateindexed(const unsigned short *data, unsigned short isolevel, unsigned int dim_x, unsigned int dim_y, unsigned int dim_z, unsigned int stride_x, unsigned int stride_y, unsigned int stride_z, double step_x, double step_y, double step_z, double offset_x, double offset_y, double offset_z, unsigned int *num_vertices, gr3_coord_t **vertices, gr3_coord_t **normals, unsigned int *num_indices, unsigned int **indices)'
76
+ # try_extern 'unsigned int gr3_triangulate(const unsigned short *data, ' \
77
+ # 'unsigned short isolevel, unsigned int dim_x, unsigned int dim_y, unsigned int dim_z, ' \
78
+ # 'unsigned int stride_x, unsigned int stride_y, unsigned int stride_z, ' \
79
+ # 'double step_x, double step_y, double step_z, double offset_x, double offset_y, double offset_z, ' \
80
+ # 'gr3_triangle_t **triangles_p)'
81
+ # try_extern 'void gr3_triangulateindexed(const unsigned short *data, ' \
82
+ # 'unsigned short isolevel, unsigned int dim_x, unsigned int dim_y, unsigned int dim_z, ' \
83
+ # 'unsigned int stride_x, unsigned int stride_y, unsigned int stride_z, ' \
84
+ # 'double step_x, double step_y, double step_z, double offset_x, double offset_y, double offset_z, ' \
85
+ # 'unsigned int *num_vertices, gr3_coord_t **vertices, gr3_coord_t **normals, ' \
86
+ # 'unsigned int *num_indices, unsigned int **indices)'
78
87
  try_extern 'int gr3_createisosurfacemesh(int *mesh, unsigned short *data, ' \
79
88
  'unsigned short isolevel, unsigned int dim_x, unsigned int dim_y, unsigned int dim_z, ' \
80
89
  'unsigned int stride_x, unsigned int stride_y, unsigned int stride_z, ' \
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GRCommons
4
- VERSION = '0.0.14'
4
+ VERSION = '0.0.15'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-gr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.14
4
+ version: 0.0.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - kojix2
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-04 00:00:00.000000000 Z
11
+ date: 2020-04-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler