-
Notifications
You must be signed in to change notification settings - Fork 0
/
Del02.py
108 lines (75 loc) · 2.09 KB
/
Del02.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
import sys
sys.path.insert(0, '..')
import Leap
from Leap import Finger
from Leap import Bone
import random
from pygameWindow import PYGAME_WINDOW
import constants
x = 100
y = 100
width = 10
pygameWindow = PYGAME_WINDOW()
def Handle_Frame(frame):
global x,y,xMin,xMax,yMin,yMax
hand = frame.hands[0]
fingers = hand.fingers
for i in range(5):
finger = hand.fingers[i]
Handle_Finger(finger)
# finger2 =
# bone = finger1.bone(Bone.TYPE_PROXIMAL)
indexFingerList = hand.fingers.finger_type(Finger.TYPE_INDEX)
indexFinger = indexFingerList[0]
distalPhalanx = indexFinger.bone(Bone.TYPE_DISTAL)
tip = distalPhalanx.next_joint
x = int(tip[0])
y = int(tip[1])
if (x < xMin):
xMin = x
if (x > xMax):
xMax = x
if (y < yMin):
yMin = y
if (y > yMax):
yMax = y
def Handle_Finger(finger):
global width
width = 10
for b in range(0, 4):
Handle_Bone(finger.bone(b))
width = width - 2
# original 8 c bone = finger.bone(b)
def Handle_Bone(bone):
base = bone.prev_joint
tip = bone.next_joint
baseCo = Handle_Vector_From_Leap(base)
tipCo = Handle_Vector_From_Leap(tip)
pygameWindow.Draw_Black_Line(baseCo,tipCo,width)
def Handle_Vector_From_Leap(v):
print(int(v[0]),int(v[2]))
x = int(ScalePygameValue(int(v[0]),xMin,xMax,0, constants.pygameWindowWidth))
y = int(ScalePygameValue(int(v[2]),yMin,yMax,0, constants.pygameWindowDepth))
print(x,y)
return x, y
def ScalePygameValue(oldValue,oldMin,oldMax,newMin,newMax):
oldRange = (oldMax - oldMin)
if oldRange == 0:
newValue = newMin
else:
newRange = (newMax - newMin)
newValue = (((oldValue - oldMin) * newRange) / oldRange) + newMin
return newValue
controller = Leap.Controller()
xMin = -100.0
xMax = 100.0
yMin = -100.0
yMax = 100.0
while True:
pygameWindow.Prepare()
frame = controller.frame()
handlist = frame.hands
for hand in handlist:
if (len(str(hand)) > 0):
Handle_Frame(frame)
pygameWindow.Reveal()