Tôi muốn biết cách sử dụng đúng đầu ra từ "Cảm biến Vector Xoay". Hiện nay tôi đã đưa ra những điều sau đây và muốn tính toán yaw và pitch từ result[]
, để biết nơi thiết bị đang trỏ (nằm trong chế độ ngang). Nhưng tôi gặp rắc rối với kết quả. Tính toán yaw là khá chính xác nhưng sân là hành xử kỳ lạ. Có lẽ ai cũng có thể chỉ cho tôi đúng hướng về cách sử dụng dữ liệu. Một điều tôi cũng muốn biết là liệu các định hướng thiết bị (phong cảnh hoặc chân dung) có bất kỳ ảnh hưởng ở đầu ra của cảm biến này. Cảm ơn trước.Sử dụng Cảm biến Vector Xoay
private double max = Math.PI/2 - 0.01;
private double min = -max;
private float[] rotationVectorAction(float[] values) {
float[] result = new float[3];
float vec[] = values;
float quat[] = new float[4];
float[] orientation = new float[3];
SensorManager.getQuaternionFromVector(quat, vec);
float[] rotMat = new float[9];
SensorManager.getRotationMatrixFromVector(rotMat, quat);
SensorManager.getOrientation(rotMat, orientation);
result[0] = (float) orientation[0];
result[1] = (float) orientation[1];
result[2] = (float) orientation[2];
return result;
}
private void main() {
float[] result = rotationVectorAction(sensorInput);
yaw = result[0];
pitch = result[1];
pitch = (float) Math.max(min, pitch);
pitch = (float) Math.min(max, pitch);
float dx = (float) (Math.sin(yaw) * (-Math.cos(pitch)));
float dy = (float) Math.sin(pitch);
float dz = (float) (Math.cos(yaw) * Math.cos(pitch));
}
Và trong OpenGL ES 2.0 Tôi thiết lập này để di chuyển máy ảnh của tôi xung quanh:
Matrix.setLookAtM(mVMatrix, 0, 0, 0, 0, dx, dy, dz, 0, 1, 0);
Bạn có thể thêm một số mã không? Xin vui lòng. –