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; }
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; }
glm::vec3 Vec3::fromPolar(float elevation, float azimuth) { glm::vec3 v = glm::vec3(elevation, azimuth, 1.0f); return fromPolar(v); }