GlovePIE:Nunchuk Thumbstick Angle
From WiiLi
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

