2016-12-19 2 views
0

Я хочу определить, указывает ли палец (или любой объект) на определенный ящик (на экране), как показано на изображении ниже.Отображение координат для взаимодействия с блоком 2D-взаимодействия

Следующий код может быть использован для получения кордных пальцев xy, но самый простой способ определить поля взаимодействия, а затем отобразить шнуры, чтобы увидеть, соответствует ли он любому из полей на внешней стороне экрана.

Я использую последнюю версию leap motion SDK (3.2.0) на Windows.

def on_frame(self, controller): 
    app_width = 800 
    app_height = 600 
    # Get the most recent frame and report some basic information 
    frame = controller.frame() 

    pointable = frame.pointables.frontmost 


    if pointable.is_valid: 
     iBox = frame.interaction_box 
     leapPoint = pointable.stabilized_tip_position 
     normalizedPoint = iBox.normalize_point(leapPoint, False) 

     app_x = normalizedPoint.x * app_width 
     app_y = (1 - normalizedPoint.y) * app_height 
     #The z-coordinate is not used 

     print ("X: " + str(app_x) + " Y: " + str(app_y)) 

выход будет выглядеть следующим образом:

X: 467.883825302 Y: 120.019626617 
X: 487.480115891 Y: 141.106081009 
X: 505.537891388 Y: 164.418339729 
X: 522.712898254 Y: 189.527964592 
X: 539.482307434 Y: 213.160014153 
X: 556.220436096 Y: 233.744287491 
X: 573.109865189 Y: 253.145456314 

interaction area

ответ

0

Прежде всего, этот код не будет сказать вам, где палец указывает. Это просто говорит вам, где кончик пальца находится в пространстве - важное, но, возможно, тонкое, различие.

Поскольку вы, по-видимому, имеете свои поля, определенные в координатах экрана, вы можете просто проверить каждый флажок, чтобы увидеть, находится ли кончик пальца внутри. Что-то вроде:

def check_in_box(box, point): 
    if point.x > box.left and point.x < box.right 
     and point.y > box.top and point.y < box.bottom: 

     return True 

    else: 
     return False 

Это предполагает, что у вас есть подходящий класс для представления двумерного окна.

+0

привет, я попросил простой способ определить коробки и способ решить это! Это уже лучший способ: 'import matplotlib.path as path' ' box_a = path.Path ([(0,0), (0, 100), (100, 100), (100, 0) ]) ' ' isInA = box_a.contains_points ([(app_x, app_y)]) ' – theAlse

Смежные вопросы