TouchEventPtr AppleTrackpadInputDevice::createEvent(int avgID, Finger* pFinger,
        Event::Type eventType)
{
    glm::vec2 size = getWindowSize();
    IntPoint pos(pFinger->normalized.pos.x*size.x, (1-pFinger->normalized.pos.y)*size.y);
    glm::vec2 speed(pFinger->normalized.vel.x*size.x, pFinger->normalized.vel.y*size.y);
    float eccentricity = pFinger->majorAxis/pFinger->minorAxis;
    glm::vec2 majorAxis = fromPolar(pFinger->angle, pFinger->majorAxis);
    majorAxis.y = -majorAxis.y;
    glm::vec2 minorAxis = fromPolar(pFinger->angle+1.57, pFinger->minorAxis);
    minorAxis.y = -minorAxis.y;

    TouchEventPtr pEvent(new TouchEvent(avgID, eventType, pos, Event::TOUCH,
                                        speed, pFinger->angle, pFinger->size, eccentricity, majorAxis,
                                        minorAxis));
    return pEvent;
}
Esempio n. 2
0
bool Sprite::isPointInside( const Vec2f& pt )
{
	Vec2f polar = toPolar(pt - _center);
	polar.y -= toRadians(_degree);
	Vec2f local = fromPolar(polar);
	if (local.x > -_size.x/2 && local.x < _size.x/2 && 
		local.y > -_size.y/2 && local.y < _size.y/2)
		return true;
	else
		return false;
}
Esempio n. 3
0
glm::vec3 Vec3::fromPolar(float elevation, float azimuth) {
    glm::vec3 v = glm::vec3(elevation, azimuth, 1.0f);
    return fromPolar(v);
}