2011-07-11 33 views
6

Tôi muốn di chuyển các đối tượng trên màn hình iPhone (hình chữ nhật, hình tròn và vân vân) bằng cách di chuyển iPhone. Ví dụ: tôi di chuyển iPhone dọc theo trục X và đối tượng di chuyển dọc theo trục X. Tương tự cho Y, trục Z.Khoảng cách được di chuyển bởi Accelerometer

Làm thế nào tôi có thể làm điều này? Tôi có thể lấy thuật toán cho nó không?

Cảm ơn bạn.

P.S: Tôi đã tìm một lúc và có vẻ như có thể sử dụng gia tốc kế.

Trả lời

13

Bạn nhận được vị trí bằng cách tích hợp gia tốc tuyến tính hai lần nhưng lỗi là khủng khiếp. Nó là vô ích trong thực tế.

Đây là an explanation why (Google Tech Talk) lúc 23:20. Tôi đánh giá cao đề xuất video này.

Tuy nhiên, con quay hồi chuyển chuột có thể hoạt động cho ứng dụng của bạn, xem trong khoảng từ 37: 00-38: 25 trong video.

câu hỏi tương tự:

track small movements of iphone with no GPS
What is the real world accuracy of phone accelerometers when used for positioning?
how to calculate phone's movement in the vertical direction from rest?
iOS: Movement Precision in 3D Space
How to use Accelerometer to measure distance for Android Application Development
How can I find distance traveled with a gyroscope and accelerometer?

3

Không dễ thực hiện chính xác. Công cụ gia tốc chỉ báo cáo tăng tốc , không chuyển động. Bạn có thể thử (số) tích hợp tăng tốc theo thời gian, nhưng bạn có khả năng kết thúc với các lỗi tích lũy cộng lại và dẫn đến chuyển động ngoài ý muốn.

Mã giả, rõ ràng là chưa được kiểm tra:

init: 
    loc = {0, 0, 0} ; location of object on screen 
    vel = {0, 0, 0} ; velocity of object on screen 
    t = 0    ; last time measured 

step: 
    t0 = time   ; get amount of time since last measurement 
    dt = t0 - t 
    accel = readAccelerometer() 
    vel += accel * dt ; update velocity 
    loc += vel * dt ; update position 
    displayObjectAt(loc) 
+0

Vì vậy, bạn đang nói nó không phải là điều thực tế để làm trên iphone? – MeIr

+1

Chính xác. Các liên kết trong phản ứng của Ali cho thấy rằng điều này có thể sẽ không hoạt động hữu ích. – duskwuff

1

Tại sao bạn không sử dụng gia tốc tự thay vì khoảng cách di chuyển? Ví dụ; Nếu gia tốc của bạn là 1,4G đông, đối tượng của bạn nên di chuyển về phía đông 14pixels mỗi giây cho đến khi tăng tốc của bạn thay đổi.

Vì vậy, chuyển động của đối tượng sẽ giống như nó dưới một lực lượng tương đối và tôi nghĩ nó thực tế hơn. Thiết bị di chuyển nhanh hơn, lực lớn hơn để tác động lên đối tượng.

Ngoài ra nhìn:

http://www.freescale.com/files/sensors/doc/app_note/AN3397.pdf

Using accelerometer, gyroscope and compass to calculate device's movement in 3D world

+0

Khi nào bạn sẽ làm cho một phong trào, ví dụ bên trái, bạn sẽ nhận được kết quả như thế này: -1g 0g 0g 0g 1g bởi vì khi bạn sẽ ngừng chuyển động, bạn sẽ nhận lực lượng này sẽ được tiêu cực đến lực ban đầu tạo ra chuyển động. bạn cần lọc bằng cách nào đó và không dễ dàng. –

Các vấn đề liên quan