ruby-gr 0.0.23 → 0.58.1.0
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/LICENSE.txt +2 -2
- data/README.md +65 -19
- data/lib/gr.rb +1117 -852
- data/lib/gr/ffi.rb +9 -2
- data/lib/gr/plot.rb +176 -85
- data/lib/gr3.rb +313 -238
- data/lib/gr3/ffi.rb +3 -1
- data/lib/gr_commons/define_methods.rb +5 -5
- data/lib/gr_commons/fiddley.rb +6 -6
- data/lib/gr_commons/gr_common_utils.rb +4 -4
- data/lib/gr_commons/gr_commons.rb +2 -2
- data/lib/gr_commons/gr_lib.rb +104 -0
- data/lib/gr_commons/gr_logger.rb +118 -0
- data/lib/gr_commons/jupyter_support.rb +7 -7
- data/lib/gr_commons/{extern.rb → try_extern.rb} +1 -1
- data/lib/gr_commons/version.rb +1 -1
- data/lib/grm.rb +21 -8
- data/lib/grm/ffi.rb +8 -4
- metadata +6 -20
- data/lib/gr/plot.rb.md +0 -172
- data/lib/gr_commons/search_shared_library.rb +0 -73
    
        data/lib/gr3.rb
    CHANGED
    
    | @@ -40,39 +40,54 @@ | |
| 40 40 | 
             
            #
         | 
| 41 41 | 
             
            # Fiddley is Ruby-FFI compatible API layer for Fiddle.
         | 
| 42 42 | 
             
            #
         | 
| 43 | 
            -
            #  | 
| 44 | 
            -
            #  | 
| 45 | 
            -
            # | 
| 46 | 
            -
            # | 
| 43 | 
            +
            # @note
         | 
| 44 | 
            +
            #   Why not GR::GR3?
         | 
| 45 | 
            +
            #   * kojix2 did not want to force gr3 to be loaded when gr is loaded.
         | 
| 46 | 
            +
            #   * kojix2 did not want to write `GR3 = GR::GR3` or something.
         | 
| 47 | 
            +
            #   * This is a opinion of kojix2 and may be changed by future maintainers.
         | 
| 47 48 | 
             
            #
         | 
| 48 | 
            -
            #  | 
| 49 | 
            -
            # | 
| 50 | 
            -
            # | 
| 51 | 
            -
            # | 
| 52 | 
            -
            #   *  | 
| 49 | 
            +
            # @note
         | 
| 50 | 
            +
            #   GR3 uses Numo::Narrray.
         | 
| 51 | 
            +
            #   * It is difficult to write GR3 modules with only Ruby arrays.
         | 
| 52 | 
            +
            #   * Numo::Narray has better performance and is easier to read.
         | 
| 53 | 
            +
            #   * Numo::Narray does not work with JRuby.
         | 
| 54 | 
            +
            #     * https://github.com/ruby-numo/numo-narray/issues/147
         | 
| 53 55 | 
             
            #
         | 
| 54 56 | 
             
            # This is a procedural interface to the GR3 in GR plotting library,
         | 
| 55 57 | 
             
            # https://github.com/sciapp/gr
         | 
| 56 58 | 
             
            module GR3
         | 
| 57 59 | 
             
              class Error < StandardError; end
         | 
| 58 60 |  | 
| 61 | 
            +
              class NotFoundError < Error; end
         | 
| 62 | 
            +
             | 
| 59 63 | 
             
              class << self
         | 
| 60 64 | 
             
                attr_accessor :ffi_lib
         | 
| 61 65 | 
             
              end
         | 
| 62 66 |  | 
| 63 67 | 
             
              require_relative 'gr_commons/gr_commons'
         | 
| 64 | 
            -
              extend GRCommons::SearchSharedLibrary
         | 
| 65 68 |  | 
| 66 69 | 
             
              # Platforms |  path
         | 
| 67 70 | 
             
              # Windows   |  bin/libGR3.dll
         | 
| 68 | 
            -
              # MacOSX    |  lib/libGR3. | 
| 71 | 
            +
              # MacOSX    |  lib/libGR3.dylib ( <= v0.53.0 .so)
         | 
| 69 72 | 
             
              # Ubuntu    |  lib/libGR3.so
         | 
| 70 | 
            -
               | 
| 71 | 
            -
             | 
| 72 | 
            -
             | 
| 73 | 
            -
             | 
| 74 | 
            -
             | 
| 75 | 
            -
             | 
| 73 | 
            +
              platform = RbConfig::CONFIG['host_os']
         | 
| 74 | 
            +
              lib_names, pkg_name = \
         | 
| 75 | 
            +
                case platform
         | 
| 76 | 
            +
                when /mswin|msys|mingw|cygwin|bccwin|wince|emc/
         | 
| 77 | 
            +
                  [['libGR3.dll'], 'gr3']
         | 
| 78 | 
            +
                when /darwin|mac os/
         | 
| 79 | 
            +
                  [['libGR3.dylib', 'libGR3.so'], 'gr3']
         | 
| 80 | 
            +
                else
         | 
| 81 | 
            +
                  [['libGR3.so'], 'gr3']
         | 
| 82 | 
            +
                end
         | 
| 83 | 
            +
             | 
| 84 | 
            +
              # On Windows + RubyInstaller,
         | 
| 85 | 
            +
              # the environment variable GKS_FONTPATH will be set.
         | 
| 86 | 
            +
              lib_path = GRCommons::GRLib.search(lib_names, pkg_name)
         | 
| 87 | 
            +
             | 
| 88 | 
            +
              raise NotFoundError, "#{lib_names} not found" if lib_path.nil?
         | 
| 89 | 
            +
             | 
| 90 | 
            +
              self.ffi_lib = lib_path
         | 
| 76 91 |  | 
| 77 92 | 
             
              require_relative 'gr3/version'
         | 
| 78 93 | 
             
              require_relative 'gr3/ffi'
         | 
| @@ -117,70 +132,82 @@ module GR3 | |
| 117 132 | 
             
              end
         | 
| 118 133 | 
             
              extend CheckError
         | 
| 119 134 |  | 
| 120 | 
            -
              # Now you can see a lot of methods just calling super here.
         | 
| 121 | 
            -
              # They are written to help the yard generate the documentation.
         | 
| 122 135 | 
             
              class << self
         | 
| 123 136 | 
             
                # This method initializes the gr3 context.
         | 
| 137 | 
            +
                #
         | 
| 124 138 | 
             
                # @return [Integer]
         | 
| 125 | 
            -
                 | 
| 126 | 
            -
             | 
| 127 | 
            -
                end
         | 
| 139 | 
            +
                #
         | 
| 140 | 
            +
                # @!method gr3_init
         | 
| 128 141 |  | 
| 129 | 
            -
                 | 
| 130 | 
            -
                  super
         | 
| 131 | 
            -
                end
         | 
| 142 | 
            +
                # @!method free
         | 
| 132 143 |  | 
| 133 144 | 
             
                # This function terminates the gr3 context.
         | 
| 134 | 
            -
                 | 
| 135 | 
            -
             | 
| 136 | 
            -
                 | 
| 145 | 
            +
                #
         | 
| 146 | 
            +
                # After calling this function, gr3 is in the same state as when it was first
         | 
| 147 | 
            +
                # loaded, except for context-independent variables, i.e. the logging callback.
         | 
| 148 | 
            +
                #
         | 
| 149 | 
            +
                # @!method terminate
         | 
| 137 150 |  | 
| 138 | 
            -
                #  | 
| 151 | 
            +
                # @note This method is defined in the CheckError module.
         | 
| 152 | 
            +
                #
         | 
| 139 153 | 
             
                # This function returns information on the most recent GR3 error.
         | 
| 154 | 
            +
                #
         | 
| 140 155 | 
             
                # @return [Integer]
         | 
| 141 | 
            -
                # | 
| 156 | 
            +
                #
         | 
| 157 | 
            +
                # @!method geterror
         | 
| 142 158 |  | 
| 143 159 | 
             
                # This function allows the user to find out how his commands are rendered.
         | 
| 160 | 
            +
                #
         | 
| 144 161 | 
             
                # If gr3 is initialized, a string in the format:
         | 
| 145 | 
            -
                # `"gr3 - " + window toolkit + " - " + framebuffer extension + " - " | 
| 146 | 
            -
                #  | 
| 147 | 
            -
                #  | 
| 162 | 
            +
                # `"gr3 - " + window toolkit + " - " + framebuffer extension + " - "
         | 
| 163 | 
            +
                # + OpenGL version + " - " + OpenGL renderer string`.
         | 
| 164 | 
            +
                # For example
         | 
| 165 | 
            +
                # `"gr3 - GLX - GL_ARB_framebuffer_object - 2.1 Mesa 7.10.2 - Software Rasterizer"`
         | 
| 166 | 
            +
                # might be returned on a Linux system (using GLX) with an available
         | 
| 167 | 
            +
                # GL_ARB_framebuffer_object implementation.
         | 
| 148 168 | 
             
                # If gr3 is not initialized `"Not initialized"` is returned.
         | 
| 169 | 
            +
                #
         | 
| 149 170 | 
             
                # @return [String]
         | 
| 171 | 
            +
                #
         | 
| 150 172 | 
             
                def getrenderpathstring(*)
         | 
| 151 173 | 
             
                  super.to_s
         | 
| 152 174 | 
             
                end
         | 
| 153 175 |  | 
| 154 176 | 
             
                # This function returns a string representation of a given error code.
         | 
| 177 | 
            +
                #
         | 
| 155 178 | 
             
                # @return [String]
         | 
| 179 | 
            +
                #
         | 
| 156 180 | 
             
                def geterrorstring(*)
         | 
| 157 181 | 
             
                  super.to_s
         | 
| 158 182 | 
             
                end
         | 
| 159 183 |  | 
| 160 184 | 
             
                # This function clears the draw list.
         | 
| 185 | 
            +
                #
         | 
| 161 186 | 
             
                # @return [Integer]
         | 
| 162 | 
            -
                 | 
| 163 | 
            -
             | 
| 164 | 
            -
                end
         | 
| 187 | 
            +
                #
         | 
| 188 | 
            +
                # @!method clear
         | 
| 165 189 |  | 
| 166 | 
            -
                # Use the currently bound framebuffer as the framebuffer used for drawing to | 
| 167 | 
            -
                #  | 
| 168 | 
            -
                 | 
| 169 | 
            -
             | 
| 170 | 
            -
                 | 
| 190 | 
            +
                # Use the currently bound framebuffer as the framebuffer used for drawing to
         | 
| 191 | 
            +
                # OpenGL (using gr3.drawimage).
         | 
| 192 | 
            +
                # This function is only needed when you do not want to render to 0, the
         | 
| 193 | 
            +
                # default framebuffer.
         | 
| 194 | 
            +
                #
         | 
| 195 | 
            +
                # @!method usecurrentframebuffer
         | 
| 171 196 |  | 
| 172 197 | 
             
                # Set the framebuffer used for drawing to OpenGL (using gr3.drawimage).
         | 
| 173 | 
            -
                # | 
| 174 | 
            -
                 | 
| 175 | 
            -
             | 
| 176 | 
            -
                 | 
| 198 | 
            +
                #
         | 
| 199 | 
            +
                # This function is only needed when you do not want to render to 0, the
         | 
| 200 | 
            +
                # default framebuffer.
         | 
| 201 | 
            +
                #
         | 
| 202 | 
            +
                # @!method useframebuffer
         | 
| 177 203 |  | 
| 178 204 | 
             
                # Set rendering quality
         | 
| 205 | 
            +
                #
         | 
| 179 206 | 
             
                # @param quality [] The quality to set
         | 
| 207 | 
            +
                #
         | 
| 180 208 | 
             
                # @return [Integer]
         | 
| 181 | 
            -
                 | 
| 182 | 
            -
             | 
| 183 | 
            -
                end
         | 
| 209 | 
            +
                #
         | 
| 210 | 
            +
                # @!method setquality
         | 
| 184 211 |  | 
| 185 212 | 
             
                # @return [Integer]
         | 
| 186 213 | 
             
                def getimage(width, height, use_alpha = true)
         | 
| @@ -191,31 +218,31 @@ module GR3 | |
| 191 218 | 
             
                end
         | 
| 192 219 |  | 
| 193 220 | 
             
                # @return [Integer]
         | 
| 194 | 
            -
                 | 
| 195 | 
            -
                  super
         | 
| 196 | 
            -
                end
         | 
| 221 | 
            +
                # @!method export
         | 
| 197 222 |  | 
| 198 223 | 
             
                # @return [Integer]
         | 
| 199 | 
            -
                 | 
| 200 | 
            -
                  super
         | 
| 201 | 
            -
                end
         | 
| 224 | 
            +
                # @!method drawimage
         | 
| 202 225 |  | 
| 203 | 
            -
                #  | 
| 226 | 
            +
                # This function creates a mesh from vertex position, normal and color data.
         | 
| 227 | 
            +
                #
         | 
| 204 228 | 
             
                # @return [Integer]
         | 
| 205 | 
            -
                def createmesh_nocopy( | 
| 229 | 
            +
                def createmesh_nocopy(n, vertices, normals, colors)
         | 
| 206 230 | 
             
                  inquiry_int do |mesh|
         | 
| 207 | 
            -
                    super(mesh, vertices, normals, colors)
         | 
| 231 | 
            +
                    super(mesh, n, vertices, normals, colors)
         | 
| 208 232 | 
             
                  end
         | 
| 209 233 | 
             
                end
         | 
| 210 234 |  | 
| 211 235 | 
             
                # This function creates a int from vertex position, normal and color data.
         | 
| 212 236 | 
             
                # Returns a mesh.
         | 
| 213 | 
            -
                # | 
| 237 | 
            +
                #
         | 
| 238 | 
            +
                # @param n        [Integer]       the number of vertices in the mesh
         | 
| 214 239 | 
             
                # @param vertices [Array, NArray] the vertex positions
         | 
| 215 | 
            -
                # @param normals | 
| 216 | 
            -
                # @param colors | 
| 217 | 
            -
                # | 
| 240 | 
            +
                # @param normals  [Array, NArray] the vertex normals
         | 
| 241 | 
            +
                # @param colors   [Array, NArray] the vertex colors, they should be
         | 
| 242 | 
            +
                #   white (1,1,1) if you want to change the color for each drawn mesh
         | 
| 243 | 
            +
                #
         | 
| 218 244 | 
             
                # @return [Integer]
         | 
| 245 | 
            +
                #
         | 
| 219 246 | 
             
                def createmesh(n, vertices, normals, colors)
         | 
| 220 247 | 
             
                  inquiry_int do |mesh|
         | 
| 221 248 | 
             
                    super(mesh, n, vertices, normals, colors)
         | 
| @@ -223,6 +250,7 @@ module GR3 | |
| 223 250 | 
             
                end
         | 
| 224 251 |  | 
| 225 252 | 
             
                # This function creates a mesh from vertex position, normal and color data.
         | 
| 253 | 
            +
                #
         | 
| 226 254 | 
             
                # @return [Integer]
         | 
| 227 255 | 
             
                def createindexedmesh_nocopy(num_vertices, vertices, normals, colors, num_indices, indices)
         | 
| 228 256 | 
             
                  inquiry_int do |mesh|
         | 
| @@ -233,150 +261,159 @@ module GR3 | |
| 233 261 | 
             
                # This function creates an indexed mesh from vertex information (position,
         | 
| 234 262 | 
             
                # normal and color) and triangle information (indices).
         | 
| 235 263 | 
             
                # Returns a mesh.
         | 
| 236 | 
            -
                # | 
| 237 | 
            -
                # @param  | 
| 238 | 
            -
                # @param  | 
| 239 | 
            -
                # @param  | 
| 240 | 
            -
                # | 
| 241 | 
            -
                #  | 
| 242 | 
            -
                # | 
| 264 | 
            +
                #
         | 
| 265 | 
            +
                # @param num_vertices [Integer]       the number of vertices in the mesh
         | 
| 266 | 
            +
                # @param vertices     [Array, NArray] the vertex positions
         | 
| 267 | 
            +
                # @param normals      [Array, NArray] the vertex normals
         | 
| 268 | 
            +
                # @param colors       [Array, NArray] the vertex colors, they should be
         | 
| 269 | 
            +
                #                                     white (1,1,1) if you want to change
         | 
| 270 | 
            +
                #                                     the color for each drawn mesh
         | 
| 271 | 
            +
                # @param num_indices  [Integer]       the number of indices in the mesh
         | 
| 272 | 
            +
                #                                     (three times the number of triangles)
         | 
| 273 | 
            +
                # @param indices      [Array, NArray] the index array (vertex indices for
         | 
| 274 | 
            +
                #                                     each triangle)
         | 
| 275 | 
            +
                #
         | 
| 243 276 | 
             
                # @return [Integer]
         | 
| 277 | 
            +
                #
         | 
| 244 278 | 
             
                def createindexedmesh(num_vertices, vertices, normals, colors, num_indices, indices)
         | 
| 245 279 | 
             
                  inquiry_int do |mesh|
         | 
| 246 280 | 
             
                    super(mesh, num_vertices, vertices, normals, colors, num_indices, indices)
         | 
| 247 281 | 
             
                  end
         | 
| 248 282 | 
             
                end
         | 
| 249 283 |  | 
| 250 | 
            -
                # This function adds a mesh to the draw list, so it will be drawn when the | 
| 251 | 
            -
                # The given data stays owned by the user, a copy will | 
| 252 | 
            -
                #  | 
| 253 | 
            -
                # | 
| 254 | 
            -
                #  | 
| 284 | 
            +
                # This function adds a mesh to the draw list, so it will be drawn when the
         | 
| 285 | 
            +
                # user calls getpixmap. The given data stays owned by the user, a copy will
         | 
| 286 | 
            +
                # be saved in the draw list and the mesh reference counter will be increased.
         | 
| 287 | 
            +
                #
         | 
| 288 | 
            +
                # This function does not return an error code, because of its asynchronous
         | 
| 289 | 
            +
                # nature. If gr3_getpixmap_() returns a GR3_ERROR_OPENGL_ERR, this might be
         | 
| 290 | 
            +
                # caused by this function saving unuseable data into the draw list.
         | 
| 291 | 
            +
                #
         | 
| 292 | 
            +
                # @param mesh       [Integer]       The mesh to be drawn
         | 
| 293 | 
            +
                # @param n          [Integer]       The number of meshes to be drawn
         | 
| 294 | 
            +
                # @param positions  [Array, NArray] The positions where the meshes should be drawn
         | 
| 255 295 | 
             
                # @param directions [Array, NArray] The forward directions the meshes should be facing at
         | 
| 256 | 
            -
                # @param ups | 
| 257 | 
            -
                # @param colors | 
| 258 | 
            -
                #  | 
| 259 | 
            -
                 | 
| 260 | 
            -
             | 
| 261 | 
            -
                 | 
| 262 | 
            -
             | 
| 263 | 
            -
                # This function marks a mesh for deletion and removes the user’s reference | 
| 264 | 
            -
                # so a user must not use the mesh after | 
| 296 | 
            +
                # @param ups        [Array, NArray] The up directions
         | 
| 297 | 
            +
                # @param colors     [Array, NArray] The colors the meshes should be drawn in,
         | 
| 298 | 
            +
                #                                   it will be multiplied with each vertex color
         | 
| 299 | 
            +
                # @param scales     [Array, NArray] The scaling factors
         | 
| 300 | 
            +
                #
         | 
| 301 | 
            +
                # @!method drawmesh
         | 
| 302 | 
            +
             | 
| 303 | 
            +
                # This function marks a mesh for deletion and removes the user’s reference
         | 
| 304 | 
            +
                # from the mesh’s referenc counter, so a user must not use the mesh after
         | 
| 305 | 
            +
                # calling this function.
         | 
| 306 | 
            +
                #
         | 
| 265 307 | 
             
                # @param mesh [Integer] The mesh that should be marked for deletion
         | 
| 266 | 
            -
                 | 
| 267 | 
            -
             | 
| 268 | 
            -
                end
         | 
| 308 | 
            +
                #
         | 
| 309 | 
            +
                # @!method deletemesh
         | 
| 269 310 |  | 
| 270 311 | 
             
                # This function sets the view matrix by getting the position of the camera,
         | 
| 271 312 | 
             
                # the position of the center of focus and the direction which should point up.
         | 
| 313 | 
            +
                # This function takes effect when the next image is created. Therefore if
         | 
| 314 | 
            +
                # you want to take pictures of the same data from different perspectives,
         | 
| 315 | 
            +
                # you can call and gr3_cameralookat(), gr3_getpixmap_(), gr3_cameralookat(),
         | 
| 316 | 
            +
                # gr3_getpixmap_(), … without calling gr3_clear() and gr3_drawmesh() again.
         | 
| 317 | 
            +
                #
         | 
| 272 318 | 
             
                # @param  camera_x [Array, NArray] The x-coordinate of the camera
         | 
| 273 319 | 
             
                # @param  camera_y [Array, NArray] The y-coordinate of the camera
         | 
| 274 320 | 
             
                # @param  camera_z [Array, NArray] The z-coordinate of the camera
         | 
| 275 321 | 
             
                # @param  center_x [Array, NArray] The x-coordinate of the center of focus
         | 
| 276 322 | 
             
                # @param  center_y [Array, NArray] The y-coordinate of the center of focus
         | 
| 277 323 | 
             
                # @param  center_z [Array, NArray] The z-coordinate of the center of focus
         | 
| 278 | 
            -
                # @param  up_x | 
| 279 | 
            -
                # @param  up_y | 
| 280 | 
            -
                # @param  up_z | 
| 281 | 
            -
                 | 
| 282 | 
            -
             | 
| 283 | 
            -
                end
         | 
| 324 | 
            +
                # @param  up_x     [Array, NArray] The x-component of the up direction
         | 
| 325 | 
            +
                # @param  up_y     [Array, NArray] The y-component of the up direction
         | 
| 326 | 
            +
                # @param  up_z     [Array, NArray] The z-component of the up direction
         | 
| 327 | 
            +
                #
         | 
| 328 | 
            +
                # @!method cameralookat
         | 
| 284 329 |  | 
| 285 330 | 
             
                # This function sets the projection parameters.
         | 
| 286 331 | 
             
                # This function takes effect when the next image is created.
         | 
| 287 | 
            -
                # | 
| 288 | 
            -
                # | 
| 332 | 
            +
                #
         | 
| 333 | 
            +
                # The ratio between zFar and zNear influences the precision of the depth
         | 
| 334 | 
            +
                # buffer, the greater (zFar/zNear), the more likely are errors. So you should
         | 
| 335 | 
            +
                # try to keep both values as close to each other as possible while making
         | 
| 336 | 
            +
                # sure everything you want to be visible, is visible.
         | 
| 337 | 
            +
                #
         | 
| 338 | 
            +
                # @param vertical_field_of_view [Numeric]
         | 
| 339 | 
            +
                #   This parameter is the vertical field of view in degrees.
         | 
| 340 | 
            +
                #   It must be greater than 0 and less than 180.
         | 
| 289 341 | 
             
                # @param zNear [Numeric] The distance to the near clipping plane.
         | 
| 290 | 
            -
                # @param zFar | 
| 342 | 
            +
                # @param zFar  [Numeric] The distance to the far clipping plane.
         | 
| 343 | 
            +
                #
         | 
| 291 344 | 
             
                # @return [Integer]
         | 
| 292 | 
            -
                 | 
| 293 | 
            -
             | 
| 294 | 
            -
                end
         | 
| 345 | 
            +
                #
         | 
| 346 | 
            +
                # @!method setcameraprojectionparameters
         | 
| 295 347 |  | 
| 296 348 | 
             
                # Get the projection parameters.
         | 
| 349 | 
            +
                #
         | 
| 350 | 
            +
                # @param vfov  [Array, NArray] Vertical field of view in degrees
         | 
| 351 | 
            +
                # @param znear [Array, NArray] The distance to the near clipping plane.
         | 
| 352 | 
            +
                # @param zfar  [Array, NArray] The distance to the far clipping plane.
         | 
| 353 | 
            +
                #
         | 
| 297 354 | 
             
                # @return [Integer]
         | 
| 298 | 
            -
                 | 
| 299 | 
            -
             | 
| 300 | 
            -
                end
         | 
| 355 | 
            +
                #
         | 
| 356 | 
            +
                # @!method getcameraprojectionparameters
         | 
| 301 357 |  | 
| 302 | 
            -
                # This function sets the direction of light.
         | 
| 303 | 
            -
                #  | 
| 358 | 
            +
                # This function sets the direction of light. If it is called with (0, 0, 0),
         | 
| 359 | 
            +
                # the light is always pointing into the same direction as the camera.
         | 
| 360 | 
            +
                #
         | 
| 304 361 | 
             
                # @param x [Numeric] The x-component of the light's direction
         | 
| 305 362 | 
             
                # @param y [Numeric] The y-component of the light's direction
         | 
| 306 363 | 
             
                # @param z [Numeric] The z-component of the light's direction
         | 
| 307 | 
            -
                 | 
| 308 | 
            -
             | 
| 309 | 
            -
                end
         | 
| 364 | 
            +
                #
         | 
| 365 | 
            +
                # @!method setlightdirection
         | 
| 310 366 |  | 
| 311 367 | 
             
                # This function sets the background color.
         | 
| 312 | 
            -
                 | 
| 313 | 
            -
                  super
         | 
| 314 | 
            -
                end
         | 
| 368 | 
            +
                # @!method setbackgroundcolor
         | 
| 315 369 |  | 
| 316 370 | 
             
                # @return [Integer]
         | 
| 317 | 
            -
                 | 
| 318 | 
            -
                  super
         | 
| 319 | 
            -
                end
         | 
| 371 | 
            +
                # @!method createheightmapmesh
         | 
| 320 372 |  | 
| 321 | 
            -
                 | 
| 322 | 
            -
                  super
         | 
| 323 | 
            -
                end
         | 
| 373 | 
            +
                # @!method drawheightmap
         | 
| 324 374 |  | 
| 325 375 | 
             
                # This function allows drawing a cylinder without requiring a mesh.
         | 
| 326 | 
            -
                 | 
| 327 | 
            -
                  super
         | 
| 328 | 
            -
                end
         | 
| 376 | 
            +
                # @!method drawconemesh
         | 
| 329 377 |  | 
| 330 378 | 
             
                # This function allows drawing a cylinder without requiring a mesh.
         | 
| 331 | 
            -
                 | 
| 332 | 
            -
                  super
         | 
| 333 | 
            -
                end
         | 
| 379 | 
            +
                # @!method drawcylindermesh
         | 
| 334 380 |  | 
| 335 381 | 
             
                # This function allows drawing a sphere without requiring a mesh.
         | 
| 336 | 
            -
                 | 
| 337 | 
            -
                  super
         | 
| 338 | 
            -
                end
         | 
| 382 | 
            +
                # @!method drawspheremesh
         | 
| 339 383 |  | 
| 340 | 
            -
                 | 
| 341 | 
            -
                  super
         | 
| 342 | 
            -
                end
         | 
| 384 | 
            +
                # @!method drawcubemesh
         | 
| 343 385 |  | 
| 344 | 
            -
                 | 
| 345 | 
            -
                  super
         | 
| 346 | 
            -
                end
         | 
| 386 | 
            +
                # @!method setobjectid
         | 
| 347 387 |  | 
| 348 388 | 
             
                # @return [Integer]
         | 
| 349 | 
            -
                 | 
| 350 | 
            -
                  super
         | 
| 351 | 
            -
                end
         | 
| 389 | 
            +
                # @!method selectid
         | 
| 352 390 |  | 
| 353 | 
            -
                 | 
| 354 | 
            -
             | 
| 355 | 
            -
                end
         | 
| 391 | 
            +
                # @param m [Array, NArray] the 4x4 column major view matrix
         | 
| 392 | 
            +
                # @!method getviewmatrix
         | 
| 356 393 |  | 
| 357 | 
            -
                 | 
| 358 | 
            -
             | 
| 359 | 
            -
                end
         | 
| 394 | 
            +
                # @param m [Array, NArray] the 4x4 column major view matrix
         | 
| 395 | 
            +
                # @!method setviewmatrix
         | 
| 360 396 |  | 
| 361 | 
            -
                # the current projection type: GR3_PROJECTION_PERSPECTIVE or GR3_PROJECTION_PARALLEL
         | 
| 362 397 | 
             
                # @return [Integer]
         | 
| 363 | 
            -
                 | 
| 364 | 
            -
             | 
| 365 | 
            -
                end
         | 
| 398 | 
            +
                #   the current projection type: GR3_PROJECTION_PERSPECTIVE or GR3_PROJECTION_PARALLEL
         | 
| 399 | 
            +
                # @!method getprojectiontype
         | 
| 366 400 |  | 
| 367 | 
            -
                # @param type [Integer] | 
| 368 | 
            -
                 | 
| 369 | 
            -
             | 
| 370 | 
            -
                 | 
| 401 | 
            +
                # @param type [Integer]
         | 
| 402 | 
            +
                #   the new projection type: GR3_PROJECTION_PERSPECTIVE,
         | 
| 403 | 
            +
                #   GR3_PROJECTION_PARALLEL or GR3_PROJECTION_ORTHOGRAPHIC
         | 
| 404 | 
            +
                # @!method setprojectiontype
         | 
| 371 405 |  | 
| 372 406 | 
             
                # This function creates an isosurface from voxel data using the
         | 
| 373 407 | 
             
                # marching cubes algorithm.
         | 
| 374 408 | 
             
                # Returns a mesh.
         | 
| 375 | 
            -
                # | 
| 376 | 
            -
                # @param  | 
| 377 | 
            -
                # @param  | 
| 378 | 
            -
                # @param  | 
| 409 | 
            +
                #
         | 
| 410 | 
            +
                # @param grid     [NArray]        3D narray array containing the voxel data
         | 
| 411 | 
            +
                # @param step     [Array, NArray] voxel sizes in each direction
         | 
| 412 | 
            +
                # @param offset   [Array, NArray] coordinate origin in each direction
         | 
| 413 | 
            +
                # @param isolevel [Integer]       isovalue at which the surface will be created
         | 
| 414 | 
            +
                #
         | 
| 379 415 | 
             
                # @return [Integer]
         | 
| 416 | 
            +
                #
         | 
| 380 417 | 
             
                def createisosurfacemesh(grid, step, offset, isolevel)
         | 
| 381 418 | 
             
                  args = _preprocess_createslicemesh(grid, step, offset)
         | 
| 382 419 | 
             
                  grid = args.shift
         | 
| @@ -388,10 +425,11 @@ module GR3 | |
| 388 425 | 
             
                # Create a mesh of a surface plot similar to gr_surface.
         | 
| 389 426 | 
             
                # Uses the current colormap. To apply changes of the colormap
         | 
| 390 427 | 
             
                # a new mesh has to be created.
         | 
| 391 | 
            -
                # | 
| 392 | 
            -
                # @param  | 
| 393 | 
            -
                # @param  | 
| 394 | 
            -
                # @param  | 
| 428 | 
            +
                #
         | 
| 429 | 
            +
                # @param nx       [Integer] number of points in x-direction
         | 
| 430 | 
            +
                # @param ny       [Integer] number of points in y-direction
         | 
| 431 | 
            +
                # @param x  [Array, NArray] an array containing the x-coordinates
         | 
| 432 | 
            +
                # @param y  [Array, NArray] an array containing the y-coordinates
         | 
| 395 433 | 
             
                # @param z  [Array, NArray] an array of length nx * ny containing the z-coordinates
         | 
| 396 434 | 
             
                # @param option [Integer] option for the surface mesh; the GR3_SURFACE constants can be combined with bitwise or. See the table below.
         | 
| 397 435 | 
             
                #  * 0  : GR3_SURFACE_DEFAULT
         | 
| @@ -406,6 +444,7 @@ module GR3 | |
| 406 444 | 
             
                #    *    color the surface according to the current gr colormap
         | 
| 407 445 | 
             
                #  * 16 : GR3_SURFACE_GRZSHADED
         | 
| 408 446 | 
             
                #    *    like GR3_SURFACE_GRCOLOR, but use the z-value directly as color index
         | 
| 447 | 
            +
                #
         | 
| 409 448 | 
             
                # @return [Integer]
         | 
| 410 449 | 
             
                def createsurfacemesh(nx, ny, x, y, z, option = 0)
         | 
| 411 450 | 
             
                  inquiry_int do |mesh|
         | 
| @@ -419,29 +458,32 @@ module GR3 | |
| 419 458 | 
             
                # the viewmatrix and the light direction. If necessary, the user has to
         | 
| 420 459 | 
             
                # save them before the call to this function and restore them after
         | 
| 421 460 | 
             
                # the call to gr3_drawimage.
         | 
| 422 | 
            -
                # | 
| 423 | 
            -
                # @param  | 
| 424 | 
            -
                # @param  | 
| 461 | 
            +
                #
         | 
| 462 | 
            +
                # @param mesh             [Integer] the mesh to be drawn
         | 
| 463 | 
            +
                # @param n                [Integer] the number of meshes to be drawn
         | 
| 464 | 
            +
                # @param positions  [Array, NArray] the positions where the meshes should be drawn
         | 
| 425 465 | 
             
                # @param directions [Array, NArray] the forward directions the meshes should be facing at
         | 
| 426 | 
            -
                # @param ups | 
| 427 | 
            -
                # @param colors | 
| 428 | 
            -
                #  | 
| 429 | 
            -
                 | 
| 430 | 
            -
             | 
| 431 | 
            -
                 | 
| 466 | 
            +
                # @param ups        [Array, NArray] the up directions
         | 
| 467 | 
            +
                # @param colors     [Array, NArray] the colors the meshes should be drawn in,
         | 
| 468 | 
            +
                #                                   it will be multiplied with each vertex color
         | 
| 469 | 
            +
                # @param scales     [Array, NArray] the scaling factors
         | 
| 470 | 
            +
                #
         | 
| 471 | 
            +
                # @!method drawmesh_grlike
         | 
| 432 472 |  | 
| 433 473 | 
             
                # Convenience function for drawing a surfacemesh.
         | 
| 474 | 
            +
                #
         | 
| 434 475 | 
             
                # @param mesh [Integer] the mesh to be drawn
         | 
| 435 | 
            -
                 | 
| 436 | 
            -
             | 
| 437 | 
            -
                end
         | 
| 476 | 
            +
                #
         | 
| 477 | 
            +
                # @!method drawsurface
         | 
| 438 478 |  | 
| 439 479 | 
             
                # Create a surface plot with gr3 and draw it with gks as cellarray.
         | 
| 440 | 
            -
                # | 
| 441 | 
            -
                # @param  | 
| 442 | 
            -
                # @param  | 
| 443 | 
            -
                # @param  | 
| 444 | 
            -
                # | 
| 480 | 
            +
                #
         | 
| 481 | 
            +
                # @param x      [Array, NArray] an array containing the x-coordinates
         | 
| 482 | 
            +
                # @param y      [Array, NArray] an array containing the y-coordinates
         | 
| 483 | 
            +
                # @param z      [Array, NArray] an array of length nx * ny containing the z-coordinates
         | 
| 484 | 
            +
                # @param option       [Integer] see the option parameter of gr_surface.
         | 
| 485 | 
            +
                #                OPTION_COLORED_MESH and OPTION_Z_SHADED_MESH are supported.
         | 
| 486 | 
            +
                #
         | 
| 445 487 | 
             
                def surface(x, y, z, option)
         | 
| 446 488 | 
             
                  nx = x.length
         | 
| 447 489 | 
             
                  ny = y.length
         | 
| @@ -449,17 +491,20 @@ module GR3 | |
| 449 491 | 
             
                  super(nx, ny, x, y, z, option)
         | 
| 450 492 | 
             
                end
         | 
| 451 493 |  | 
| 452 | 
            -
                # drawtubemesh
         | 
| 453 494 | 
             
                # Draw a tube following a path given by a list of points. The colors and
         | 
| 454 495 | 
             
                # radii arrays specify the color and radius at each point.
         | 
| 455 | 
            -
                # | 
| 496 | 
            +
                #
         | 
| 497 | 
            +
                # @param n            [Integer] the number of points given
         | 
| 456 498 | 
             
                # @param points [Array, NArray] the points the tube should go through
         | 
| 457 499 | 
             
                # @param colors [Array, NArray] the color at each point
         | 
| 458 | 
            -
                # @param radii | 
| 459 | 
            -
                # @param num_steps | 
| 460 | 
            -
                #  | 
| 461 | 
            -
                # | 
| 500 | 
            +
                # @param radii  [Array, NArray] the desired tube radius at each point
         | 
| 501 | 
            +
                # @param num_steps    [Integer] the number of steps between each point,
         | 
| 502 | 
            +
                #                               allowing for a more smooth tube
         | 
| 503 | 
            +
                # @param num_segments [Integer] the number of segments each ring of the tube
         | 
| 504 | 
            +
                #                               consists of, e.g. 3 would yield a triangular tube
         | 
| 505 | 
            +
                #
         | 
| 462 506 | 
             
                # @return [Integer]
         | 
| 507 | 
            +
                #
         | 
| 463 508 | 
             
                def drawtubemesh(n, points, colors, radii, num_steps = 10, num_segments = 20)
         | 
| 464 509 | 
             
                  super(n, points, colors, radii, num_steps, num_segments)
         | 
| 465 510 | 
             
                end
         | 
| @@ -467,12 +512,17 @@ module GR3 | |
| 467 512 | 
             
                # Create a mesh object in the shape of a tube following a path given by a
         | 
| 468 513 | 
             
                # list of points. The colors and radii arrays specify the color and radius at
         | 
| 469 514 | 
             
                # each point.
         | 
| 470 | 
            -
                # | 
| 471 | 
            -
                # @param  | 
| 472 | 
            -
                # @param  | 
| 473 | 
            -
                # @param  | 
| 474 | 
            -
                # @param  | 
| 475 | 
            -
                # @param  | 
| 515 | 
            +
                #
         | 
| 516 | 
            +
                # @param n            [Integer]       the number of points given
         | 
| 517 | 
            +
                # @param points       [Array, NArray] the points the tube should go through
         | 
| 518 | 
            +
                # @param colors       [Array, NArray] the color at each point
         | 
| 519 | 
            +
                # @param radii        [Array, NArray] the desired tube radius at each point
         | 
| 520 | 
            +
                # @param num_steps    [Integer]       the number of steps between each point,
         | 
| 521 | 
            +
                #                                     allowing for a more smooth tube
         | 
| 522 | 
            +
                # @param num_segments [Integer]       the number of segments each ring of the
         | 
| 523 | 
            +
                #                                     tube consists of, e.g. 3 would yield a
         | 
| 524 | 
            +
                #                                     triangular tube
         | 
| 525 | 
            +
                #
         | 
| 476 526 | 
             
                # @return [Integer]
         | 
| 477 527 | 
             
                def createtubemesh(n, points, colors, radii, num_steps = 10, num_segments = 20)
         | 
| 478 528 | 
             
                  inquiry_uint do |mesh| # mesh should be Int?
         | 
| @@ -547,12 +597,14 @@ module GR3 | |
| 547 597 | 
             
                # drawn and at which positions they should go through the data. If neither
         | 
| 548 598 | 
             
                # x nor y nor z are set, 0.5 will be used for all three.
         | 
| 549 599 | 
             
                # Returns meshes for the yz-slice, the xz-slice and the xy-slice.
         | 
| 550 | 
            -
                # | 
| 551 | 
            -
                # @param  | 
| 552 | 
            -
                # @param  | 
| 553 | 
            -
                # @param  | 
| 554 | 
            -
                # @param  | 
| 555 | 
            -
                # @param  | 
| 600 | 
            +
                #
         | 
| 601 | 
            +
                # @param grid   [NArray]        3D narray array containing the voxel data
         | 
| 602 | 
            +
                # @param x      [Numeric]       the position of the slice through the xz-plane (0 to 1)
         | 
| 603 | 
            +
                # @param y      [Numeric]       the position of the slice through the xz-plane (0 to 1)
         | 
| 604 | 
            +
                # @param z      [Numeric]       the position of the slice through the xz-plane (0 to 1)
         | 
| 605 | 
            +
                # @param step   [Array, NArray] voxel sizes in each direction
         | 
| 606 | 
            +
                # @param offset [Array, NArray] coordinate origin in each direction
         | 
| 607 | 
            +
                #
         | 
| 556 608 | 
             
                def createslicemeshes(grid, x = nil, y = nil, z = nil, step = nil, offset = nil)
         | 
| 557 609 | 
             
                  if [x, y, z].all?(&:nil?)
         | 
| 558 610 | 
             
                    x = 0.5
         | 
| @@ -569,10 +621,11 @@ module GR3 | |
| 569 621 | 
             
                # using the current GR colormap. Use the x parameter to set the position of
         | 
| 570 622 | 
             
                # the yz-slice.
         | 
| 571 623 | 
             
                # Returns a mesh for the yz-slice.
         | 
| 572 | 
            -
                # | 
| 573 | 
            -
                # @param  | 
| 574 | 
            -
                # @param  | 
| 575 | 
            -
                # @param  | 
| 624 | 
            +
                #
         | 
| 625 | 
            +
                # @param grid   [NArray]        3D narray array containing the voxel data
         | 
| 626 | 
            +
                # @param x      [Numeric]       the position of the slice through the xz-plane (0 to 1)
         | 
| 627 | 
            +
                # @param step   [Array, NArray] voxel sizes in each direction
         | 
| 628 | 
            +
                # @param offset [Array, NArray] coordinate origin in each direction
         | 
| 576 629 | 
             
                def createxslicemesh(grid, x = 0.5, step = nil, offset = nil)
         | 
| 577 630 | 
             
                  args = _preprocess_createslicemesh(grid, step, offset)
         | 
| 578 631 | 
             
                  grid = args.shift
         | 
| @@ -586,10 +639,12 @@ module GR3 | |
| 586 639 | 
             
                # using the current GR colormap. Use the y parameter to set the position of
         | 
| 587 640 | 
             
                # the xz-slice.
         | 
| 588 641 | 
             
                # Returns a mesh for the xz-slice.
         | 
| 589 | 
            -
                # | 
| 590 | 
            -
                # @param  | 
| 591 | 
            -
                # @param  | 
| 592 | 
            -
                # @param  | 
| 642 | 
            +
                #
         | 
| 643 | 
            +
                # @param grid   [NArray]        3D narray array containing the voxel data
         | 
| 644 | 
            +
                # @param y      [Numeric]       the position of the slice through the xz-plane (0 to 1)
         | 
| 645 | 
            +
                # @param step   [Array, NArray] voxel sizes in each direction
         | 
| 646 | 
            +
                # @param offset [Array, NArray] coordinate origin in each direction
         | 
| 647 | 
            +
                #
         | 
| 593 648 | 
             
                def createyslicemesh(grid, y = 0.5, step = nil, offset = nil)
         | 
| 594 649 | 
             
                  args = _preprocess_createslicemesh(grid, step, offset)
         | 
| 595 650 | 
             
                  grid = args.shift
         | 
| @@ -603,10 +658,12 @@ module GR3 | |
| 603 658 | 
             
                # using the current GR colormap. Use the z parameter to set the position of
         | 
| 604 659 | 
             
                # the xy-slice.
         | 
| 605 660 | 
             
                # Returns a mesh for the xy-slice.
         | 
| 606 | 
            -
                # | 
| 607 | 
            -
                # @param  | 
| 608 | 
            -
                # @param  | 
| 609 | 
            -
                # @param  | 
| 661 | 
            +
                #
         | 
| 662 | 
            +
                # @param grid   [NArray]        3D narray array containing the voxel data
         | 
| 663 | 
            +
                # @param z      [Numeric]       the position of the slice through the xz-plane (0 to 1)
         | 
| 664 | 
            +
                # @param step   [Array, NArray] voxel sizes in each direction
         | 
| 665 | 
            +
                # @param offset [Array, NArray] coordinate origin in each direction
         | 
| 666 | 
            +
                #
         | 
| 610 667 | 
             
                def createzslicemesh(grid, z = 0.5, step = nil, offset = nil)
         | 
| 611 668 | 
             
                  args = _preprocess_createslicemesh(grid, step, offset)
         | 
| 612 669 | 
             
                  grid = args.shift
         | 
| @@ -617,15 +674,18 @@ module GR3 | |
| 617 674 | 
             
                end
         | 
| 618 675 |  | 
| 619 676 | 
             
                # Draw a yz-slice through the given data, using the current GR colormap.
         | 
| 620 | 
            -
                # | 
| 621 | 
            -
                # @param  | 
| 622 | 
            -
                # @param  | 
| 623 | 
            -
                # @param  | 
| 624 | 
            -
                # @param  | 
| 625 | 
            -
                # @param  | 
| 626 | 
            -
                # @param  | 
| 627 | 
            -
                # @param  | 
| 628 | 
            -
                # @param  | 
| 677 | 
            +
                #
         | 
| 678 | 
            +
                # @param grid      [NArray]        3D narray array containing the voxel data
         | 
| 679 | 
            +
                # @param x         [Numeric]       the position of the slice through the yz-plane (0 to 1)
         | 
| 680 | 
            +
                # @param step      [Array, NArray] voxel sizes in each direction
         | 
| 681 | 
            +
                # @param offset    [Array, NArray] coordinate origin in each direction
         | 
| 682 | 
            +
                # @param position  [Array, NArray] the positions where the meshes should be drawn
         | 
| 683 | 
            +
                # @param direction [Array, NArray] the forward directions the meshes should be facing at
         | 
| 684 | 
            +
                # @param up        [Array, NArray] the up directions
         | 
| 685 | 
            +
                # @param color     [Array, NArray] the colors the meshes should be drawn in,
         | 
| 686 | 
            +
                #                                  it will be multiplied with each vertex color
         | 
| 687 | 
            +
                # @param scale     [Array, NArray] the scaling factors
         | 
| 688 | 
            +
                #
         | 
| 629 689 | 
             
                def drawxslicemesh(grid, x = 0.5, step = nil, offset = nil,
         | 
| 630 690 | 
             
                                   position = [0, 0, 0], direction = [0, 0, 1], up = [0, 1, 0],
         | 
| 631 691 | 
             
                                   color = [1, 1, 1], scale = [1, 1, 1])
         | 
| @@ -635,15 +695,18 @@ module GR3 | |
| 635 695 | 
             
                end
         | 
| 636 696 |  | 
| 637 697 | 
             
                # Draw a xz-slice through the given data, using the current GR colormap.
         | 
| 638 | 
            -
                # | 
| 639 | 
            -
                # @param  | 
| 640 | 
            -
                # @param  | 
| 641 | 
            -
                # @param  | 
| 642 | 
            -
                # @param  | 
| 643 | 
            -
                # @param  | 
| 644 | 
            -
                # @param  | 
| 645 | 
            -
                # @param  | 
| 646 | 
            -
                # @param  | 
| 698 | 
            +
                #
         | 
| 699 | 
            +
                # @param grid      [NArray]        3D narray array containing the voxel data
         | 
| 700 | 
            +
                # @param y         [Numeric]       the position of the slice through the xz-plane (0 to 1)
         | 
| 701 | 
            +
                # @param step      [Array, NArray] voxel sizes in each direction
         | 
| 702 | 
            +
                # @param offset    [Array, NArray] coordinate origin in each direction
         | 
| 703 | 
            +
                # @param position  [Array, NArray] the positions where the meshes should be drawn
         | 
| 704 | 
            +
                # @param direction [Array, NArray] the forward directions the meshes should be facing at
         | 
| 705 | 
            +
                # @param up        [Array, NArray] the up directions
         | 
| 706 | 
            +
                # @param color     [Array, NArray] the colors the meshes should be drawn in,
         | 
| 707 | 
            +
                #                                  it will be multiplied with each vertex color
         | 
| 708 | 
            +
                # @param scale     [Array, NArray] the scaling factors
         | 
| 709 | 
            +
                #
         | 
| 647 710 | 
             
                def drawyslicemesh(grid, y = 0.5, step = nil, offset = nil,
         | 
| 648 711 | 
             
                                   position = [0, 0, 0], direction = [0, 0, 1], up = [0, 1, 0],
         | 
| 649 712 | 
             
                                   color = [1, 1, 1], scale = [1, 1, 1])
         | 
| @@ -653,15 +716,18 @@ module GR3 | |
| 653 716 | 
             
                end
         | 
| 654 717 |  | 
| 655 718 | 
             
                # Draw a xy-slice through the given data, using the current GR colormap.
         | 
| 656 | 
            -
                # | 
| 657 | 
            -
                # @param  | 
| 658 | 
            -
                # @param  | 
| 659 | 
            -
                # @param  | 
| 660 | 
            -
                # @param  | 
| 661 | 
            -
                # @param  | 
| 662 | 
            -
                # @param  | 
| 663 | 
            -
                # @param  | 
| 664 | 
            -
                # @param  | 
| 719 | 
            +
                #
         | 
| 720 | 
            +
                # @param grid      [NArray]        3D narray array containing the voxel data
         | 
| 721 | 
            +
                # @param z         [Numeric]       the position of the slice through the xy-plane (0 to 1)
         | 
| 722 | 
            +
                # @param step      [Array, NArray] voxel sizes in each direction
         | 
| 723 | 
            +
                # @param offset    [Array, NArray] coordinate origin in each direction
         | 
| 724 | 
            +
                # @param position  [Array, NArray] the positions where the meshes should be drawn
         | 
| 725 | 
            +
                # @param direction [Array, NArray] the forward directions the meshes should be facing at
         | 
| 726 | 
            +
                # @param up        [Array, NArray] the up directions
         | 
| 727 | 
            +
                # @param color     [Array, NArray] the colors the meshes should be drawn in,
         | 
| 728 | 
            +
                #                                  it will be multiplied with each vertex color
         | 
| 729 | 
            +
                # @param scale     [Array, NArray] the scaling factors
         | 
| 730 | 
            +
                #
         | 
| 665 731 | 
             
                def drawzslicemesh(grid, z = 0.5, step = nil, offset = nil,
         | 
| 666 732 | 
             
                                   position = [0, 0, 0], direction = [0, 0, 1], up = [0, 1, 0],
         | 
| 667 733 | 
             
                                   color = [1, 1, 1], scale = [1, 1, 1])
         | 
| @@ -674,17 +740,20 @@ module GR3 | |
| 674 740 | 
             
                # Use the parameters x, y or z to specify what slices should be drawn and at
         | 
| 675 741 | 
             
                # which positions they should go through the data. If neither x nor y nor
         | 
| 676 742 | 
             
                # z are set, 0.5 will be used for all three.
         | 
| 743 | 
            +
                #
         | 
| 677 744 | 
             
                # @param grid [NArray] 3D narray array containing the voxel data
         | 
| 678 | 
            -
                # @param x | 
| 679 | 
            -
                # @param y | 
| 680 | 
            -
                # @param z | 
| 681 | 
            -
                # @param step | 
| 682 | 
            -
                # @param offset | 
| 683 | 
            -
                # @param position | 
| 684 | 
            -
                # @param direction [Array] the forward directions the meshes should be facing at
         | 
| 685 | 
            -
                # @param up | 
| 686 | 
            -
                # @param color | 
| 687 | 
            -
                #  | 
| 745 | 
            +
                # @param x         [Numeric]       the position of the slice through the yz-plane (0 to 1)
         | 
| 746 | 
            +
                # @param y         [Numeric]       the position of the slice through the xz-plane (0 to 1)
         | 
| 747 | 
            +
                # @param z         [Numeric]       the position of the slice through the xy-plane (0 to 1)
         | 
| 748 | 
            +
                # @param step      [Array, NArray] voxel sizes in each direction
         | 
| 749 | 
            +
                # @param offset    [Array, NArray] coordinate origin in each direction
         | 
| 750 | 
            +
                # @param position  [Array, NArray] the positions where the meshes should be drawn
         | 
| 751 | 
            +
                # @param direction [Array, NArray] the forward directions the meshes should be facing at
         | 
| 752 | 
            +
                # @param up        [Array, NArray] the up directions
         | 
| 753 | 
            +
                # @param color     [Array, NArray] the colors the meshes should be drawn in,
         | 
| 754 | 
            +
                #                                  it will be multiplied with each vertex color
         | 
| 755 | 
            +
                # @param scale     [Array, NArray] the scaling factors
         | 
| 756 | 
            +
                #
         | 
| 688 757 | 
             
                def drawslicemeshes(grid, x = nil, y = nil, z = nil, step = nil,
         | 
| 689 758 | 
             
                                    offset = nil, position = [0, 0, 0], direction = [0, 0, 1], up = [0, 1, 0],
         | 
| 690 759 | 
             
                                    color = [1, 1, 1], scale = [1, 1, 1])
         | 
| @@ -757,6 +826,7 @@ module GR3 | |
| 757 826 | 
             
              IA_END_OF_LIST        = 0
         | 
| 758 827 | 
             
              IA_FRAMEBUFFER_WIDTH  = 1
         | 
| 759 828 | 
             
              IA_FRAMEBUFFER_HEIGHT = 2
         | 
| 829 | 
            +
              IA_NUM_THREADS        = 3
         | 
| 760 830 |  | 
| 761 831 | 
             
              # Error
         | 
| 762 832 | 
             
              ERROR_NONE                   =  0
         | 
| @@ -787,6 +857,11 @@ module GR3 | |
| 787 857 | 
             
              DRAWABLE_OPENGL = 1
         | 
| 788 858 | 
             
              DRAWABLE_GKS    = 2
         | 
| 789 859 |  | 
| 860 | 
            +
              # Projection
         | 
| 861 | 
            +
              PROJECTION_PERSPECTIVE  = 0
         | 
| 862 | 
            +
              PROJECTION_PARALLEL     = 1
         | 
| 863 | 
            +
              PROJECTION_ORTHOGRAPHIC = 2
         | 
| 864 | 
            +
             | 
| 790 865 | 
             
              # SurfaceOption
         | 
| 791 866 | 
             
              SURFACE_DEFAULT     =  0
         | 
| 792 867 | 
             
              SURFACE_NORMALS     =  1
         |