Accelerometer and Open GL
-
Upload
john-wilker -
Category
Technology
-
view
1.333 -
download
3
description
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