Class: SDL2::Haptic::Direction

Inherits:
Struct
  • Object
show all
Defined in:
lib/sdl2/haptic.rb

Overview

Structure that represents a haptic direction. The following was copied directly from SDL_haptic.h, v2.0.0 and translated by BadQuanta into Ruby code using sdl2_ffi.

Directions can be specified by:
 - SDL2::Haptic::POLAR : Specified by polar coordinates.
 - SDL2::Haptic::CARTESIAN : Specified by cartesian coordinates.
 - SDL2::Haptic::SPHERICAL : Specified by spherical coordinates.

Cardinal directions of the haptic device are relative to the positioning
of the device.  North is considered to be away from the user.

The following diagram represents the cardinal directions:
\verbatim
             .--.
             |__| .-------.
             |=.| |.-----.|
             |--| ||     ||
             |  | |'-----'|
             |__|~')_____('
               [ COMPUTER ]

                 North (0,-1)
                     ^
                     |
                     |
(1,0)  West <----[ HAPTIC ]----> East (-1,0)
                     |
                     |
                     v
                  South (0,1)

                  [ USER ]
                    \|||/
                    (o o)
              ---ooO-(_)-Ooo---
\endverbatim

If type is SDL::Haptic::POLAR, direction is encoded by hundredths of a
degree starting north and turning clockwise.  SDL::Haptic::POLAR only uses
the first \c dir parameter.  The cardinal directions would be:
 - North: 0 (0 degrees)
 - East: 9000 (90 degrees)
 - South: 18000 (180 degrees)
 - West: 27000 (270 degrees)

If type is SDL::Haptic::CARTESIAN, direction is encoded by three positions
(X axis, Y axis and Z axis (with 3 axes)).  SDL::Haptic::CARTESIAN uses
the first three \c dir parameters.  The cardinal directions would be:
 - North:  0,-1, 0
 - East:  -1, 0, 0
 - South:  0, 1, 0
 - West:   1, 0, 0

The Z axis represents the height of the effect if supported, otherwise
it's unused.  In cartesian encoding (1, 2) would be the same as (2, 4), you
can use any multiple you want, only the direction matters.

If type is SDL::Haptic::SPHERICAL, direction is encoded by two rotations.
The first two \c dir parameters are used.  The \c dir parameters are as
follows (all values are in hundredths of degrees):
 - Degrees from (1, 0) rotated towards (0, 1).
 - Degrees towards (0, 0, 1) (device needs at least 3 axes).

Example of force coming from the south with all encodings (force coming
from the south means the user will have to pull the stick to counteract):

@code

direction = SDL2::Haptic::Direction.new

 # Cartesian directions
 direction.type = SDL2::Haptic::CARTESIAN # Using cartesian direction encoding.
 direction.dir[0] = 0 # X position
 direction.dir[1] = 1 # Y position

 # Polar directions
 direction.type = SDL2::Haptic::POLAR #We'll be using polar direction encoding.
 direction.dir[0] = 18000 # Polar only uses first parameter

 # Spherical coordinates
 direction.type = SDL2::Haptic::SPHERICAL # Spherical encoding
 direction.dir[0] = 9000 # Since we only have two axes we don't need more parameters

@code

\sa SDL_HAPTIC_POLAR
\sa SDL_HAPTIC_CARTESIAN
\sa SDL_HAPTIC_SPHERICAL
\sa SDL_HapticEffect
\sa SDL_HapticNumAxes

END OF SOMETHING COPIED AND PASTED FROM SDL_haptic.h !!!!!!!!!!!!!!!!!

Method Summary

Methods inherited from Struct

#==, cast, #initialize, release

Methods included from StructHelper

#member_readers, #member_writers

Constructor Details

This class inherits a constructor from SDL2::Struct