Upload
john-wilker
View
3.589
Download
3
Tags:
Embed Size (px)
DESCRIPTION
Jon liang stepped in to pinch hit on two sessions that the presenters had to miss. OpenGL and Acceleromter. Hit it out of the park. Non Game App Dev Track. 360|iDev San Jose 09
Citation preview
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