方向传感器
基于方向传感器的接口
实例属性
OrientationSensor.quaternion
只读-
返回一个四元素
Array
,其元素包含表示设备方向的单位四元数的组件。
实例方法
OrientationSensor.populateMatrix()
-
使用基于最新传感器读数的旋转矩阵填充给定对象。
示例
基本示例
以下示例(松散地基于英特尔的 Orientation Phone 演示)实例化了一个频率为每秒 60 次的AbsoluteOrientationSensor
。在每次读取时,它使用OrientationSensor.quaternion
来旋转手机的视觉模型。
js
const options = { frequency: 60, referenceFrame: "device" };
const sensor = new AbsoluteOrientationSensor(options);
sensor.addEventListener("reading", () => {
// model is a Three.js object instantiated elsewhere.
model.quaternion.fromArray(sensor.quaternion).inverse();
});
sensor.addEventListener("error", (error) => {
if (event.error.name === "NotReadableError") {
console.log("Sensor is not available.");
}
});
sensor.start();
权限示例
使用方向传感器需要请求多个设备传感器的权限。由于Permissions
接口使用 Promise,因此请求权限的好方法是使用Promise.all
。
js
const sensor = new AbsoluteOrientationSensor();
Promise.all([
navigator.permissions.query({ name: "accelerometer" }),
navigator.permissions.query({ name: "magnetometer" }),
navigator.permissions.query({ name: "gyroscope" }),
]).then((results) => {
if (results.every((result) => result.state === "granted")) {
sensor.start();
// …
} else {
console.log("No permissions to use AbsoluteOrientationSensor.");
}
});
规范
规范 |
---|
方向传感器 # orientationsensor-interface |
浏览器兼容性
BCD 表仅在启用 JavaScript 的浏览器中加载。