Accelerometer and Open GL

Post on 18-May-2015

1.333 views 3 download

Tags:

description

Jon Liang - Accelerometer and Open GL. 360|iDev San Jose '09

Transcript of Accelerometer and Open GL

Introduction to Accelerometers and OpenGL ES on the iPhone

● Jon Liang● Mobility Lead – Mobclix● http://www.mobclix.com

● Jeff LaMarche ● Author - Beginning iPhone Development: Exploring

the iPhone SDK● http://iphonedevelopment.blogspot.com/

Introduction to Accelerometers and OpenGL ES on the iPhone

● OpenGL ES● Accelerometer● More OpenGL

OpenGL ES 1.1 - Open Graphics Library for Embedded Systems

OpenGL

Source:http://www.cs.unc.edu/~walk/pap//fig1.gif

OpenGL (continued)

● Platform independent● Input

● Points, Lines, Polygons● Transforms● Textures● Transparency● Lighting

OpenGL Pipeline

Source: Apple

Code: Hello World

Quartz 2D vs. OpenGL for 2D

● Quartz 2D● Higher Level API

– Compatible with CoreAnimation

– Easier to Display Text● Inverted y-axis

● OpenGL● Low Level API

– More Control– Less Overhead

● 3D

Source: Apple

iPhone Limitations

● 24 MB of Memory for textures and surfaces.● The maximum texture size is 1024 x 1024.● 2D texture targets are supported; other texture

targets are not.● Stencil buffers aren’t available.● More Info:

– http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/GraphicsandDrawing/chapter_6_section_5.html#//apple_ref/doc/uid/TP40007072-CH10-SW18

Open GL → OpenGL ES

● Removed glBegin() and glEnd()● Use glDrawArrays() or glDrawElements()

● Added Fixed Point data types● Embedded systems often don't have FPU's.

● Removed convenience functions● More lightweight implementation.

Questions?

Accelerometer

Accelerometer

● Hardware● 3-Axis MEMS Accelerometer

– Part Number: LIS302DL– Max Sample Rate: 400 Hz– Max Acceleration: ± 8g

● No Gyroscope

● Implications● No Direct Angular Acceleration Data● Zeroed at Free Fall● Limited Amplitude (± 4g per axis)

Basic Tasks: Signal Processing

● Isolating Large Movements● Low-Pass Filter:

xn = x

n-1/2 + x/2

● Isolating Small Movements● High-Pass Filter:

xn = x - x

n-1

Sournce: http://jp.physoc.org/content/vol550/issue3/fulltext/873/Figures/HiRes/873-F2.gif

Basic Tasks: Ground Angle

● 2 Dimensions:Θ = atan(y/x)

● Axis-Plane:Θ = atan(z/sqrt(x2+y2))

Source: http://www.forestgumpsays.com/wp-content/uploads/2008/03/3iphoneaxes.jpg

Basic Tasks: Simple Gestures

● SwipePositive-Negative Spike

● ShakeOscillating Wave

● Rotations2-Axis Change

Classes

UIAccelerometer

Methods+ sharedAccelerometer

PropertiesupdateIntervaldelegate

MyClass <UIAccelerationDelegate>

Methods- (void) accelerometer:(UIAccelerometer*) accelerometer

didAccelerate:(UIAcceleration*) acceleration

UIAcceleration

PropertiesUIAccelerationValue xUIAccelerationValue yUIAccelerationValue z NSTimeInterval timestamp

MyOtherClass

Code: Hello World (continued)

Questions?

More Open GL

Apple Sample Code

● Accelerometer Graph● Crash Landing● GLGravity● GLPaint● GLSprite● Touchfighter II

Additional Resources

● Open GL● http://www.khronos.org/opengles/sdk/1.1/docs/man/● http://www.glprogramming.com/red/

● Accelerometer● www.st.com/stonline/products/literature/ds/12726.p

df● http://squallchua.blogspot.com/2008/12/wiimote-gesture-recognition.html● http://ifiddling.blogspot.com/2009/01/dummy2.html

Additional Resources (continued)

● Collision Models● http://www.metanetsoftware.com/technique/tutorialA

.html● http://www.metanetsoftware.com/technique/tutorialB

.html● http://www.euclideanspace.com/physics/dynamics/c

ollision/index.htm