EDmouse WhiteBoard

From WiiLi

Jump to: navigation, search


// Wii-Whiteboard GloovePIE Script
// by Jochen Zaunert, JAN-2008

//|| Edited by marsuten @gmail.com to make it easy to use:
//|| -Dont need the calibration image
//|| -Simply click (or press Space) on the calibration cursors
//||  with your IR pen (or what you`ve got :D)
//|| -The cursor movement is smoother and more accurate
//|| -It's valid for any resolution
//||
//|| I upload the script like EDmouse WhiteBoard but
//|| all credits goes to Jochen Zaunert

// feel free to test it!
// comments and improments are very welcome
//
// you can contact me by mail:  j g z 7 (at) g m x . n e t
//
// project homepage: http://www.zaunert.de/jochenz/wii
// (there is also a a samll demonstation video)

// ---> Old manual, you dont need it at now
// there is also a calibration image (JPG) for this script
// if you don't have it right now go to my homepage and download it
// Remeber: Display the Calibartion image as "full screen size"!
// or just set it as desktop background :-)
// IMPORTANT:
// This script is designed for a resolution of 1280 x 1024
// if your resolution ist different you'll need to modify the script
// and the calibration image...
//  <---


//Left click
if wiimote1.dot1vis and wiimote1.dot2vis  then mouse.leftbutton=true else mouse.leftbutton=false

//Right click (&%$#Ç@)
if wiimote1.dot2vis and not wiimote1.dot1vis  then mouse.rightbutton=true else mouse.RightButton=false

//Edited Calibration Points
if var.leercounter=0 then
cursor2.x=1/(screen.Width/(70))
cursor2.y=1/(screen.Height/(70))
cursor2.Caption="[1] Click here"
cursor2.PermanentCursor=15
endif

if var.leercounter=1 then
cursor2.x=1/(screen.Width/(screen.Width-70))
cursor2.y=1/(screen.Height/(70))
cursor2.Caption="[2] Click here"
endif

if var.leercounter=2 then
cursor2.x=1/(screen.Width/(70))
cursor2.y=1/(screen.Height/(screen.Height-70))
cursor2.Caption="[3] Click here"
endif

if var.leercounter=3 then
cursor2.x=1/(screen.Width/(screen.Width-70))
cursor2.y=1/(screen.Height/(screen.Height-70))
cursor2.Caption="[4] Click here"
endif

if var.leercounter=4 then cursor2.visible=false

if keyboard.Space or pressed(helddown(mouse.leftbutton , 0ms ))
   wait 500ms
   if var.leercounter = 0
      var.x1 = var.dot1x
      var.y1 = var.dot1y
      Say "Point 1. OK"
   endif
   if var.leercounter = 1
      var.x2 = var.dot1x
      var.y2 = var.dot1y
      Say "Point 2. OK"
   endif
   if var.leercounter = 2
      var.x3 = var.dot1x
      var.y3 = var.dot1y
      Say "Point 3. OK"
   endif
   if var.leercounter=3
      var.x4=var.dot1x
      var.y4=var.dot1y
      Say "Point 4. OK. calibration done"

var.r1=70
var.r2=screen.Width-70
var.r3=70
var.r4=screen.Width-70
var.h1=screen.height-70
var.h2=screen.height-70
var.h3=70
var.h4=70

// there must be a better solution to solve a 8x8 matrix with gloovepie...
// but I don't how... therefore I use manual mode... :-(

// fill martix... 64 variables... oh no...

var.m11=-1
var.m12=-1
var.m13=-1
var.m14=-1
var.m15=0
var.m16=0
var.m17=0
var.m18=0

var.m21=-var.x1
var.m22=-var.x2
var.m23=-var.x3
var.m24=-var.x4
var.m25=0
var.m26=0
var.m27=0
var.m28=0

var.m31=-var.y1
var.m32=-var.y2
var.m33=-var.y3
var.m34=-var.y4
var.m35=0
var.m36=0
var.m37=0
var.m38=0

var.m41=0
var.m42=0
var.m43=0
var.m44=0
var.m45=-1
var.m46=-1
var.m47=-1
var.m48=-1

var.m51=0
var.m52=0
var.m53=0
var.m54=0
var.m55=-var.x1
var.m56=-var.x2
var.m57=-var.x3
var.m58=-var.x4

var.m61=0
var.m62=0
var.m63=0
var.m64=0
var.m65=-var.y1
var.m66=-var.y2
var.m67=-var.y3
var.m68=-var.y4

var.m71=var.x1*var.r1
var.m72=var.x2*var.r2
var.m73=var.x3*var.r3
var.m74=var.x4*var.r4
var.m75=var.x1*var.h1
var.m76=var.x2*var.h2
var.m77=var.x3*var.h3
var.m78=var.x4*var.h4

var.m81=var.y1*var.r1
var.m82=var.y2*var.r2
var.m83=var.y3*var.r3
var.m84=var.y4*var.r4
var.m85=var.y1*var.h1
var.m86=var.y2*var.h2
var.m87=var.y3*var.h3
var.m88=var.y4*var.h4

var.bb1=-var.r1
var.bb2=-var.r2
var.bb3=-var.r3
var.bb4=-var.r4
var.bb5=-var.h1
var.bb6=-var.h2
var.bb7=-var.h3
var.bb8=-var.h4

// here starts the calculation...
// gauß-elimination
var.m22=-var.m22+var.m21
var.m32=-var.m32+var.m31
var.m42=-var.m42+var.m41
var.m52=-var.m52+var.m51
var.m62=-var.m62+var.m61
var.m72=-var.m72+var.m71
var.m82=-var.m82+var.m81
var.bb2=-var.bb2+var.bb1
var.m12=0

var.m23=-var.m23+var.m21
var.m33=-var.m33+var.m31
var.m43=-var.m43+var.m41
var.m53=-var.m53+var.m51
var.m63=-var.m63+var.m61
var.m73=-var.m73+var.m71
var.m83=-var.m83+var.m81
var.bb3=-var.bb3+var.bb1
var.m13=0

var.m24=-var.m24+var.m21
var.m34=-var.m34+var.m31
var.m44=-var.m44+var.m41
var.m54=-var.m54+var.m51
var.m64=-var.m64+var.m61
var.m74=-var.m74+var.m71
var.m84=-var.m84+var.m81
var.bb4=-var.bb4+var.bb1
var.m14=0

var.m33=-var.m33/var.m23*var.m22+var.m32
var.m43=-var.m43/var.m23*var.m22+var.m42
var.m53=-var.m53/var.m23*var.m22+var.m52
var.m63=-var.m63/var.m23*var.m22+var.m62
var.m73=-var.m73/var.m23*var.m22+var.m72
var.m83=-var.m83/var.m23*var.m22+var.m82
var.bb3=-var.bb3/var.m23*var.m22+var.bb2
var.m23=0

var.m34=-var.m34/var.m24*var.m22+var.m32
var.m44=-var.m44/var.m24*var.m22+var.m42
var.m54=-var.m54/var.m24*var.m22+var.m52
var.m64=-var.m64/var.m24*var.m22+var.m62
var.m74=-var.m74/var.m24*var.m22+var.m72
var.m84=-var.m84/var.m24*var.m22+var.m82
var.bb4=-var.bb4/var.m24*var.m22+var.bb2
var.m24=0

var.m44=-var.m44/var.m34*var.m33+var.m43
var.m54=-var.m54/var.m34*var.m33+var.m53
var.m64=-var.m64/var.m34*var.m33+var.m63
var.m74=-var.m74/var.m34*var.m33+var.m73
var.m84=-var.m84/var.m34*var.m33+var.m83
var.bb4=-var.bb4/var.m34*var.m33+var.bb3
var.m34=0
// the last calculation returs a line which can be easyly used afterwards...

var.m56=-var.m56+var.m55
var.m66=-var.m66+var.m65
var.m76=-var.m76+var.m75
var.m86=-var.m86+var.m85
var.bb6=-var.bb6+var.bb5
var.m46=0

var.m57=-var.m57+var.m55
var.m67=-var.m67+var.m65
var.m77=-var.m77+var.m75
var.m87=-var.m87+var.m85
var.bb7=-var.bb7+var.bb5
var.m47=0

var.m58=-var.m58+var.m55
var.m68=-var.m68+var.m65
var.m78=-var.m78+var.m75
var.m88=-var.m88+var.m85
var.bb8=-var.bb8+var.bb5
var.m48=0

var.m67=-var.m67/var.m57*var.m56+var.m66
var.m77=-var.m77/var.m57*var.m56+var.m76
var.m87=-var.m87/var.m57*var.m56+var.m86
var.bb7=-var.bb7/var.m57*var.m56+var.bb6
var.m57=0


var.m68=-var.m68/var.m58*var.m56+var.m66
var.m78=-var.m78/var.m58*var.m56+var.m76
var.m88=-var.m88/var.m58*var.m56+var.m86
var.bb8=-var.bb8/var.m58*var.m56+var.bb6
var.m58=0

var.m78=-var.m78/var.m68*var.m67+var.m77
var.m88=-var.m88/var.m68*var.m67+var.m87
var.bb8=-var.bb8/var.m68*var.m67+var.bb7
var.m68=0

// special case in the 4th line
var.m88=-var.m88/var.m78*var.m74+var.m84
var.bb8=-var.bb8/var.m78*var.m74+var.bb4
var.m78=0

// finally, the 8 calculations for the 8 parameters
var.b3=var.bb8/var.m88
var.a3=(var.bb4-(var.m84*var.b3))/var.m74
var.b2=(var.bb7-(var.m87*var.b3+var.m77*var.a3))/var.m67
var.a2=(var.bb6-(var.m86*var.b3+var.m76*var.a3+var.m66*var.b2))/var.m56
var.c2=(var.bb5-(var.m85*var.b3+var.m75*var.a3+var.m65*var.b2+var.m55*var.a2))/var.m45

var.b1=(var.bb3-(var.m83*var.b3+var.m73*var.a3+var.m63*var.b2+var.m53*var.a2+var.m43*var.c2))/var.m33
var.a1=(var.bb2-(var.m82*var.b3+var.m72*var.a3+var.m62*var.b2+var.m52*var.a2+var.m42*var.c2+var.m32*var.b1))/var.m22
var.c1=(var.bb1-(var.m81*var.b3+var.m71*var.a3+var.m61*var.b2+var.m51*var.a2+var.m41*var.c2+var.m31*var.b1+var.m21*var.a1))/var.m11

   endif
Inc(var.leercounter)
endif

// hey, this is just the simple main script - the essential

if wiimote.dot1vis  then
  var.dot1x =wiimote.dot1x
  var.dot1y =wiimote.dot1y
  var.groesse1 = wiimote.dot1size
  var.x_fb=Wiimote1.dot1x
  var.y_fb=Wiimote1.dot1y
  var.corrx = (var.a1*var.x_fb+var.b1*var.y_fb+var.c1)/(var.a3*var.x_fb+var.b3*var.y_fb+1)
  var.corry = (var.a2*var.x_fb+var.b2*var.y_fb+var.c2)/(var.a3*var.x_fb+var.b3*var.y_fb+1)
  //Edited for smother movement
  mouse.x=smooth((1/(screen.Width/var.corrx)),3)
  mouse.y=smooth((1/(screen.Height/(screen.Height-var.corry))),3)
endif

//High framerate to get precision
pie.FrameRate=100 Hz
Personal tools
Online Casino - best online casino reviews.
Facebook Developers - facebook applications, facebook developers, facebook development, social network application development and viral widget social media strategy