Cardoso Gabriel Schade - Microsoft Kinect: Crie aplicações interativas стр 6.

Шрифт
Фон

vir a cabeça neste momento, mas é importante termos em mente que as aplicações

do Kinect vão além de um computador ou notebook, existem diversos projetos em

que o Kinect é utilizado em um totem ou em um dispositivo que se move, ou seja, o uso do acelerômetro se estende por todos os casos em que orientação do sensor é alterada.

Entendendo o acelerômetro no SDK

As informações do acelerômetro no SDK são disponibilizadas atra-

vés de um método da já conhecida classe

KinectSensor.

O método

AccelerometerGetCurrentReading()

retorna as informações sobre o

acelerômetro em um vetor de 4 posições (X, Y, Z e W) sendo que W sempre terá o

valor zero.

Apesar de parecer estranho em um primeiro momento que haja a posição W no

retorno de algo que deveria estar em um sistemas de coordenadas de três dimensões, faz total sentido se conhecermos o conceito de coordenadas homogêneas. Trata-se de uma ideia bem simples e poderosa: basicamente você representa as coordenadas X, Y e Z em uma quádrupla ordenada*[X, Y, Z e W] onde X = X/W + 1, Y = Y/W + 1

e Z = Z/W +1. Este sistema permite representar projeções conhecidas como pontos impróprios, que são utilizados para representar o feixe de retas paralelas a um outro eixo. Existem diversas outras vantagens para isso ser utilizado, mas não cabe ao escopo deste livro descrever todas.

O sistema de coordenadas do acelerômetro do sensor está centralizado com o

dispositivo. Por padrão o retorno deste método, caso o Kinect esteja em uma superfície plana, será próximo a (x:0, y:-1.0, z:0 e w:0).

Infelizmente não há um evento nativo para quando estas informações são alte-

radas, é necessário monitorarmos manualmente, mas podemos e iremos criar um

sistema de eventos para fazer isso.

Aplicação

Vamos criar uma aplicação para medir o resultado do acelerômetro de tempos

em tempos, será bem simples e rápido e nos ajudará a perceber as variações que

ocorrem quando movimentamos o sensor (dependendo da quantidade de precisão

18

Casa do Código

Capítulo 3. Acelerômetro e Eixo Motorizado

que você utilize, ocorrerão pequenas variações mesmo com o dispositivo parado).

A primeira coisa a fazer é criar um novo projeto WPF no visual studio,

como já fizemos no capítulo 2. Os passos para configurar o sensor serão muito

simples, basta criar uma referência para nossa DLL auxiliar e utilizar o método InicializarPrimeiroSensor descrito em 2.1. Desta vez não precisamos ativar

nenhum outro recurso do Kinect, então poderemos simplesmente utilizar o método

já criado no construtor da janela, conforme o código a seguir.

public MainWindow()

{

InitializeComponent();

kinect = InicializadorKinect.InicializarPrimeiroSensor(0);

}

Você pode notar que não estamos declarando o objeto

KinectSensor

kinect no escopo do construtor da janela, você deve declará-lo no escopo da classe, pois iremos reutilizá-lo em outro método. Feito isso, já temos novamente nossa inicialização do sensor, agora iremos criar os componentes de tela para exibir os valores do acelerômetro nos eixos X, Y e Z, ignoraremos o eixo W, pois como citado acima ele sempre estará em 0 (zero).

Ao criar um novo projeto WPF o formulário deve estar apenas com um painel

do tipo Grid, vamos utilizar este mesmo painel para construir um layout em forma de tabela

cuja primeira coluna irá listar os eixos e a segunda, o valor de cada um.

XAML

Os projetos WPF utilizam o XAML (eXtensible Application Markup

Language) para a construção da interface, esta é uma linguagem de mar-

cação simples que possui foco em aplicações desktop com um papel si-

milar ao HTML e CSS para aplicações Web.

Para que esta janela ocupe apenas o espaço necessário, iremos diminuir o seu

tamanho, para isso vamos alterar os valores das propriedades Width e Height

para os valores 300 e 150 respectivamente. Com isso, a janela ficou bem pequena, mas é suficiente para mostrarmos essas informações.

Feito isso, já podemos escolher o tamanho das linhas e colunas para exibir as

informações. Como já dito antes iremos mostrar os valores dos eixos X, Y e Z, por-19

3.1. Acelerômetro

Casa do Código

tanto precisamos de três linhas do mesmo tamanho. Para fazer isso você deve criar a definição das linhas, conforme o código a seguir.

<Grid>

<Grid.RowDefinitions>

<RowDefinition Height="*"/>

<RowDefinition Height="*"/>

<RowDefinition Height="*"/>

</Grid.RowDefinitions>

</Grid>

Esta é a sintaxe para a criação das definições de linhas. Note que a propriedade Height está com o valor (*), este valor indica proporcionalidade, ou seja, todas as linhas ficarão com o mesmo tamanho caso uma linha receba o valor (2*), ela teria o dobro do tamanho das outras.

Agora iremos definir as duas colunas. A sintaxe é muito similar, mas ao invés

de utilizarmos a propriedade Height que indica altura, iremos utilizar a propriedade Width que indica largura. Além disso, as colunas não irão possuir os mesmos valores proporcionalmente, pois a primeira irá exibir apenas uma letra referente ao seu eixo e a segunda irá receber um número com diversas casas decimais. O tamanho da primeira coluna será fixo em 50 pixels enquanto que a segunda irá ocupar todo o restante da janela, o código a seguir mostra como a tag Grid ficou após estas definições.

Ваша оценка очень важна

0
Шрифт
Фон

Помогите Вашим друзьям узнать о библиотеке