GlovePIE:Nunchuk Thumbstick Angle

From WiiLi

Jump to: navigation, search


Determines the nunchuk thumbstick angle. Details of script can be found here: http://www.wiili.org/forum/nunchuk-keyboard-t1666.html

Maps Angle as follows:
      0
      |
270------90
      |
     180
//Maps axis to look like a normal xy axis (up & right = positive, down & left = negative)
var.X = Wiimote.Nunchuk.JoyX
var.Y = -Wiimote.Nunchuk.JoyY

//Total distance from center of thumbstick
var.Distance = hypot(var.X, var.Y)

//Deadzone distance
var.DistanceThreshold = 0.3

//Angle Starts from top (0 Degrees @ Upper vertical axis, degrees added clockwise )
if (var.Distance) > var.DistanceThreshold
   if var.X > 0 && var.Y > 0
      var.Angle = arctan(var.X / var.Y)
   elseif (var.X > 0 && var.Y < 0) || (var.X < 0 && var.Y < 0)
      var.Angle = 180 + arctan(var.X / var.Y)
   elseif var.X < 0 && var.Y > 0
      var.Angle = 360 + arctan(var.X / var.Y)
   elseif var.Y = 0
      if var.X > 0
         var.Angle = 90 degrees
      else
         var.Angle = 270 degrees
      endif
   elseif var.X = 0
      if var.Y > 0
         var.Angle = 0 degrees
      else
         var.Angle = 180 degrees
      endif
   endif
else
   var.Angle = ""
endif

debug = var.Angle


The following script is similar to the above script but maps the angle to its true angle:

Maps Angle as follows:
      90
      |
180------0
      |
     270
//Maps axis to look like a normal xy axis (up & right = positive, down & left = negative)
var.X = Wiimote.Nunchuk.JoyX
var.Y = -Wiimote.Nunchuk.JoyY

//Total distance from center of thumbstick
var.Distance = hypot(var.X, var.Y)

//Deadzone distance
var.DistanceThreshold = 0.3

if (var.Distance) > var.DistanceThreshold
   if var.X > 0 && var.Y > 0
      var.Angle = arctan(var.Y / var.X)
   elseif (var.X < 0 && var.Y > 0) || (var.X < 0 && var.Y < 0)
      var.Angle = arctan(var.Y / var.X) + 180
   elseif var.X > 0 && var.Y < 0
      var.Angle = 360 + arctan(var.Y / var.X)
   elseif var.Y = 0
      if var.X > 0
         var.Angle = 0 degrees
      else
         var.Angle = 180 degrees
      endif
   elseif var.X = 0
      if var.Y > 0
         var.Angle = 90 degrees
      else
         var.Angle = 270 degrees
      endif
   endif
else
   var.Angle = ""
endif

debug = var.Angle
Personal tools