2010-10-15 21 views
6

iPhone'un yaw'sını, zifti ve rulosunu gövde çerçevesinden dünya çerçevesine, yani azimutu, zifti ve ruloya dönüştürmek istiyorum. http://blog.mysticlakesoftware.com/2009/07/sensor-accelerometer-magnetics.htmlAygıt çerçevesini nesnel c nesnesine dönüştürün c

benzer yöntemler iPhone için kullanılabilir veya birisi bu dönüşümü nasıl bana doğru yönde işaret edebilir: Burada ayrıntılı olarak Android'de bu kolayca SensorManager.remapCoordinateSystem(), SensorManager.getOrientation yöntemlerle yapılır?

Teşekkür

cevap

0

ivmeölçer (UIAccelerometer) düz aşağı size cihazın ivmeölçer yongası bir vektör verecektir. Cihazın oldukça sabit tutulduğunu varsayabilirseniz (, yani, yani gerçek hareketten ivme okumazsınız), cihazın yönünü belirlemek için basit trig (acos(), asin()) kullanabilirsiniz.

Aygıtın hareket edebileceğinden endişeleniyorsanız, hemen hemen aynı olan bir sırada birkaç ivme okumasını bekleyebilirsiniz. Ayrıca, herhangi bir vektörü, ± TOLERANS (tanımladığınız gibi) 1,0

ile filtreleyebilirsiniz. Daha genel bir ifadeyle, aygıtın "yer çekimini hissetme" dışında, yönünü bilmenin bir yolu yoktur. ivmeölçer ile yapılır. İvmeölçerin tüm ivmeyi hissedeceği, yer çekiminin sadece tek bir kaynak olduğu gerçeği etrafındaki merkezler.

1

İvmeölçer, aygıt koordinat sisteminde yerçekimi yön vektörünü elde etmek için yeterlidir. Cihaz sakinleştiğinde durum böyle olur.

Tam aygıt yönlendirmesi için bir sonraki adım, CLLocationManager kullanmak ve gerçek kuzey vektörünü aygıt koordinat sisteminde kullanmaktır. Normalize edilmiş gerçek kuzey vektörü ve yer çekimi vektörüyle, nokta ve çapraz vektörler ürününü kullanarak tüm diğer yönlere kolaylıkla ulaşabilirsiniz.

0

Bir jiroskopu olan bir aygıtı hedefliyorsanız (yazma sırasında iPhone 4), CoreMotion çerçevesinin CMMotionManager size CMDeviceMotion güncelleştirmelerini sağlayabilir. Çerçeve, ham sensör verilerini işlemek ve sizin için gravity ve userAcceleration'u ayırmak için iyi bir iş yapar. Perdeyi tanımlayabilen ve biraz trig ile dönebilen yerçekimi vektörüyle ilgileniyorsunuz. Yaw eklemek için, (yerçekimi vektörü etrafında cihaz döndürme) pusula başlığı güncellemelerini almak için CoreLocation çerçevesinin CLLocationManager'ını kullanmanız gerekecektir.

İlgili konular