Giả sử một người đang sử dụng la bàn này và bắt đầu xoay 90 độ, chúng bắt đầu xoay theo chiều kim đồng hồ hoặc ngược chiều kim đồng hồ. Cách tốt nhất để đếm số lượng xoay 360 độ hoàn chỉnh là bao nhiêu? Giả sử họ sẽ quay hoặc chỉ theo chiều kim đồng hồ hoặc chỉ ngược chiều kim đồng hồ từ đầu đến cuối.La bàn - Theo dõi số quay 360 độ đầy đủ
Tôi tiếp tục đưa ra các giải pháp nếu ổ bắt đầu, 90 độ, tôi tiếp tục kiểm tra vòng bi tiếp theo khi dữ liệu cảm biến thay đổi và nếu nó di chuyển theo một hướng tôi biết chúng đang quay. Và nếu họ tiếp tục quay theo hướng đó và quay trở lại 90 độ, nó được tính là một vòng quay. Cách của tôi dường như rất phức tạp và không hiệu quả và tôi đang gặp khó khăn trong việc tìm ra một cách tốt hơn.
Trong trường hợp này, tôi mong đợi nhiều phép quay đầy đủ.
Tôi đánh giá cao bất kỳ trợ giúp nào. Cảm ơn bạn!
Tôi đã tìm thấy this câu trả lời có liên quan và tôi đang cố gắng tổng hợp mẫu mã cho điều đó. Nếu ai đó đã làm một cái gì đó tương tự, xin vui lòng gửi nó!
@Override
public void onSensorChanged(SensorEvent event)
{
switch(event.sensor.getType())
{
case Sensor.TYPE_GRAVITY:
{
mValuesAccelerometer = lowPass(event.values.clone(), mValuesAccelerometer);
break;
}
case Sensor.TYPE_MAGNETIC_FIELD:
{
mValuesMagneticField = lowPass(event.values.clone(), mValuesMagneticField);
break;
}
}
boolean success = SensorManager.getRotationMatrix(
mMatrixR,
mMatrixI,
mValuesAccelerometer,
mValuesMagneticField);
if (success)
{
SensorManager.getOrientation(mMatrixR, mMatrixValues);
float azimuth = toDegrees(mMatrixValues[0]);
float pitch = toDegrees(mMatrixValues[1]);
float roll = toDegrees(mMatrixValues[2]);
if (azimuth < 0.0d)
{
//The bearing in degrees
azimuth += 360.0d;
}
}
}