Пример #1
0
void Player::mousePress(QPointF& p) //нажатие на кнопку мыши
{
    if (listening_&mousePressListening) //слушать нажатия
        moveMouse(p);
}
Пример #2
0
void updateHandPosition(PointCloud handPcl) {
	
	int i, j;
	
	int pointCount = barycenter(handPcl, &barycX, &barycY, &barycZ) ;
	if (pointCount < MIN_HAND_POINT_NUMBER) {
		return;
	}
		

	isOpenHand = openHand(handPcl);
	
	double posCovarMat[3][3];
	double posCovarMatEigVec[3][3];
	double posCovarMatEigVal[3];
	
	
	for (i=0; i<3; i++) {
		for (j=0; j<3; j++) {
			posCovarMat[i][j] = 0;
		}
	}
	
	
	for(j=0; j<FREENECT_FRAME_H; j++) {
		for(i=0; i<FREENECT_FRAME_W; i++) {
			if (handPcl[j][i].valid) {
				posCovarMat[0][0] += (handPcl[j][i].x - barycX)*(handPcl[j][i].x - barycX);
				posCovarMat[0][1] += (handPcl[j][i].x - barycX)*(handPcl[j][i].y - barycY);
				posCovarMat[0][2] += (handPcl[j][i].x - barycX)*(handPcl[j][i].z - barycZ);
				
				posCovarMat[1][0] += (handPcl[j][i].y - barycY)*(handPcl[j][i].x - barycX);
				posCovarMat[1][1] += (handPcl[j][i].y - barycY)*(handPcl[j][i].y - barycY);
				posCovarMat[1][2] += (handPcl[j][i].y - barycY)*(handPcl[j][i].z - barycZ);
				
				posCovarMat[2][0] += (handPcl[j][i].z - barycZ)*(handPcl[j][i].x - barycX);
				posCovarMat[2][1] += (handPcl[j][i].z - barycZ)*(handPcl[j][i].y - barycY);
				posCovarMat[2][2] += (handPcl[j][i].z - barycZ)*(handPcl[j][i].z - barycZ);
			}
		}
	}
	
	for (i=0; i<3; i++) {
		for (j=0; j<3; j++) {
			posCovarMat[i][j] = posCovarMat[i][j] / pointCount;
		}
	}
	
	eigen_decomposition(posCovarMat, posCovarMatEigVec, posCovarMatEigVal);
	
//	printMatrix("Covar Mat", posCovarMat, 3);
//	printMatrix("Pos Eigen Vec", posCovarMatEigVec, 3);
	
	
	majorAxeX = posCovarMatEigVec[1][2] > 0 ? posCovarMatEigVec[0][2] : - posCovarMatEigVec[0][2]; 
	majorAxeY = posCovarMatEigVec[1][2] > 0 ? posCovarMatEigVec[1][2] : - posCovarMatEigVec[1][2];
	majorAxeZ = posCovarMatEigVec[1][2] > 0 ? posCovarMatEigVec[2][2] : - posCovarMatEigVec[2][2];
	
	normVecX = posCovarMatEigVec[2][0] > 0 ? posCovarMatEigVec[0][0] : - posCovarMatEigVec[0][0]; 
	normVecY = posCovarMatEigVec[2][0] > 0 ? posCovarMatEigVec[1][0] : - posCovarMatEigVec[1][0];
	normVecZ = posCovarMatEigVec[2][0] > 0 ? posCovarMatEigVec[2][0] : - posCovarMatEigVec[2][0];
	
	//arduinoCmd();
	//printf("Barycenter: X: %.4f Y: %.4f  Z: %.4f\tDirection: X: %.4f Y: %.4f  Z: %.4f\n",  barycX, barycY, barycZ, normVecX, normVecY, normVecZ);
	
	moveMouse();
}
Пример #3
0
void Player::mouseMoved(QPointF& p) //движение мыши
{
    if (listening_&mouseMovedListening) //слушать передвижение мыши
        moveMouse(p);
}