방향 센서

W3C 작업 초안,

이 문서에 대한 자세한 정보
이 버전:
https://www.w3.org/TR/2026/WD-orientation-sensor-20260514/
최신 공개 버전:
https://www.w3.org/TR/orientation-sensor/
편집자 초안:
https://w3c.github.io/orientation-sensor/
이전 버전:
이력:
https://www.w3.org/standards/history/orientation-sensor/
피드백:
public-device-apis@w3.org 제목 줄 “[orientation-sensor] … 메시지 주제 …”로 보내기 (아카이브)
Orientation Sensor 이슈 저장소
편집자:
Kenneth Rohde Christiansen (Intel Corporation)
Anssi Kostiainen (Intel Corporation)
이전 편집자:
Mikhail Pozdnyakov (Intel Corporation)
Alexander Shalamov (Intel Corporation)
테스트 스위트:
GitHub의 web-platform-tests

초록

이 명세는 정지된 3차원 데카르트 좌표계와 관련하여 장치의 물리적 방향을 모니터링하기 위한 기본 방향 센서 인터페이스와 구체적인 센서 하위 클래스를 정의한다.

이 문서의 상태

이 절은 이 문서가 공개된 시점의 상태를 설명한다. 현재 W3C 공개 문서 목록과 이 기술 보고서의 최신 개정판은 W3C 기술 보고서 색인에서 확인할 수 있다.

이 문서는 Devices and Sensors Working Group권고안 트랙을 사용하여 작업 초안으로 공개했다. 이 문서는 W3C 권고안이 되는 것을 의도한다.

이 문서에 대한 의견을 보내려면 public-device-apis@w3.org (구독, 아카이브)로 보내 달라. 이메일을 보낼 때는 제목에 “orientation-sensor”라는 텍스트를 넣어 달라. 가능하면 다음과 같은 형식을 권장한다: “[orientation-sensor] …의견 요약…”. 모든 의견을 환영한다.

작업 초안으로 공개되었다고 해서 W3C 및 그 회원의 승인을 의미하지는 않는다. 이 문서는 초안 문서이며 언제든 다른 문서로 업데이트, 대체 또는 폐기될 수 있다. 이 문서를 진행 중인 작업이 아닌 것으로 인용하는 것은 부적절하다.

이 문서는 W3C 특허 정책에 따라 운영되는 그룹이 작성했다. W3C는 해당 그룹의 산출물과 관련하여 이루어진 모든 특허 공개의 공개 목록을 유지한다. 해당 페이지에는 특허 공개를 위한 지침도 포함되어 있다. 개인이 필수 청구항을 포함한다고 믿는 특허에 대해 실제 지식을 가지고 있는 경우, 그 개인은 W3C 특허 정책 6절에 따라 해당 정보를 공개해야 한다.

이 문서는 2025년 8월 18일 W3C 프로세스 문서의 적용을 받는다.

이 명세는 기존 배포를 위해 유지된다. 여러 브라우저 엔진이 이 명세에 대한 우려를 표명했다. 새 프로젝트의 경우 개발자는 크로스 엔진 지원이 있는 Device Orientation and Motion을 사용해야 한다. Working Group은 새로운 모션 감지 기능을 Device Orientation and Motion에서 개발할 예정이다.

Devices and Sensors Working Group은 이 명세와 개인정보 보호 및 보안 검토 관행 모두에서 2019년 10월 14일에 수평적 검토가 이루어진 이후 변화가 있었음을 고려하여 이 명세에 대한 최신 보안 및 개인정보 보호 검토를 추진하고 있다. 마찬가지로, 그룹은 최신 아키텍처 검토 관행을 반영하기 위해 이 명세에 대한 Technical Architecture Group 검토 업데이트를 추진하고 있다.

1. 소개

Orientation Sensor API는 Generic Sensor API [GENERIC-SENSOR]를 확장하여 3차원 데카르트 좌표계와 관련된 장치의 물리적 방향을 설명하는 일반 정보를 제공한다.

AbsoluteOrientationSensor 클래스는 OrientationSensor 인터페이스에서 상속되며, 지구의 기준 좌표계와 관련된 장치의 물리적 방향을 설명한다.

다른 하위 클래스는 진북과 같은 다른 정지 방향, 또는 장치 자체의 z 위치와 관련되어 가장 최근의 가장 안정적인 z 위치 쪽으로 드리프트하는 것과 같은 비정지 방향과 관련된 방향을 설명한다.

OrientationSensor 하위 클래스가 제공하는 데이터는 DeviceOrientationEvent의 데이터와 유사하지만, Orientation Sensor API에는 다음과 같은 중요한 차이가 있다:

  1. Orientation Sensor API는 방향 데이터를 WebGL과 호환되는 형식(쿼터니언, 회전 행렬)으로 표현한다.

  2. Orientation Sensor API는 더 엄격한 지연 시간 요구 사항을 충족한다.

  3. DeviceOrientationEvent와 달리, OrientationSensor 하위 클래스는 방향 데이터를 얻는 데 어떤 저수준 모션 센서가 사용되는지 명시적으로 정의하므로, 가능한 상호 운용성 문제를 없앤다.

  4. OrientationSensor 하위 클래스의 인스턴스는 SensorOptions 생성자 매개변수를 통해 구성할 수 있다.

2. 사용 사례 및 요구 사항

사용 사례 및 요구 사항은 Motion Sensors Explainer 문서에서 논의된다.

3. 예제

const sensor = new AbsoluteOrientationSensor();
const mat4 = new Float32Array(16);
sensor.start();
sensor.onerror = event => console.log(event.error.name, event.error.message);

sensor.onreading = () => {
  sensor.populateMatrix(mat4);
};
const sensor = new AbsoluteOrientationSensor({ frequency: 60 });
const mat4 = new Float32Array(16);
sensor.start();
sensor.onerror = event => console.log(event.error.name, event.error.message);

function draw(timestamp) {
  window.requestAnimationFrame(draw);
  try {
    sensor.populateMatrix(mat4);
  } catch(e) {
    // mat4 has not been updated.
  }
  // Drawing...
}

window.requestAnimationFrame(draw);

4. 보안 및 개인정보 보호 고려 사항

Generic Sensor API [GENERIC-SENSOR]에 설명된 것 외에는 특별한 보안 및 개인정보 보호 고려 사항이 없다.

5. 모델

OrientationSensor 클래스는 Sensor 클래스를 확장하며, 장치 방향 데이터를 나타내는 일반 인터페이스를 제공한다.

Orientation Sensor 센서 타입최신 판독값에 접근하려면, 사용자 에이전트는 구체적인 방향 센서가 사용하는 각 저수준 센서에 대해 센서 접근 요청 추상 연산을 호출해야 한다. 아래 표는 구체적인 방향 센서와 저수준 센서가 정의한 권한 토큰 사이의 매핑을 설명한다.

OrientationSensor 하위 클래스 권한 토큰
AbsoluteOrientationSensor "accelerometer", "gyroscope", "magnetometer"
RelativeOrientationSensor "accelerometer", "gyroscope"

AbsoluteOrientationSensor는 "accelerometer", "gyroscope", "magnetometer" 문자열로 식별되는 정책 제어 기능이다. 그 기본 허용 목록'self'이다.

RelativeOrientationSensor는 "accelerometer"와 "gyroscope" 문자열로 식별되는 정책 제어 기능이다. 그 기본 허용 목록'self'이다.

최신 판독값Orientation Sensor 센서 타입Sensor에 대해, 가 "quaternion"이고 이 네 요소 목록을 포함하는 항목을 포함한다. 목록의 요소는 단위 쿼터니언의 구성 요소 [QUATERNIONS] [Vx * sin(θ/2), Vy * sin(θ/2), Vz * sin(θ/2), cos(θ/2)]와 같다. 여기서 V는 회전축을 나타내는 단위 벡터(그 요소는 Vx, Vy, Vz)이고, θ는 단위 벡터 V가 정의하는 축에 대한 회전 각도이다.

참고: 쿼터니언 구성 요소는 목록에서 [q1, q2, q3, q0] [QUATERNIONS] 순서로 배치된다. 즉, 쿼터니언의 벡터 부분을 나타내는 구성 요소가 먼저 오고, cos(θ/2)와 같은 스칼라 부분 구성 요소가 그 뒤에 온다. 이 순서는 기존 WebGL 프레임워크 대부분과의 호환성을 높이기 위해 사용된다. 그러나 다른 라이브러리는 쿼터니언을 배열로 노출할 때 다른 순서, 예를 들어 [q0, q1, q2, q3]를 사용할 수 있다.

저수준 모션 센서의 센서 퓨전을 통해 생성되는 구체적인 OrientationSensor 하위 클래스는 아래 표에 제시되어 있다:

OrientationSensor 하위 클래스 저수준 모션 센서
AbsoluteOrientationSensor Accelerometer, Gyroscope, Magnetometer
RelativeOrientationSensor Accelerometer, Gyroscope

참고: Accelerometer, GyroscopeMagnetometer 저수준 센서는 각각 [ACCELEROMETER], [GYROSCOPE], [MAGNETOMETER] 명세에 정의되어 있다. 센서 퓨전은 플랫폼별이며 소프트웨어 또는 하드웨어, 즉 센서 허브에서 일어날 수 있다.

이 예제 코드는 AbsoluteOrientationSensor에 대해 start()를 호출하기 전에 명시적으로 권한을 질의한다.
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.");
             }
       });

다른 접근 방식은 단순히 start()를 호출하고 onerror 이벤트 핸들러를 구독하는 것이다.

const sensor = new AbsoluteOrientationSensor();
sensor.onerror = event => {
  if (event.error.name === 'NotAllowedError')
    console.log("No permissions to use AbsoluteOrientationSensor.");
};
sensor.start();

5.1. AbsoluteOrientationSensor 모델

Absolute Orientation Sensor 센서 타입Motion Sensors Explainer § absolute-orientation에 설명된 센서를 나타낸다. 그 관련 확장 센서 인터페이스AbsoluteOrientationSensor이며, OrientationSensor의 하위 클래스이다. 그 관련 가상 센서 타입은 "absolute-orientation"이다.

절대 방향 센서의 경우, 최신 판독값["quaternion"]의 값은 장치의 로컬 좌표계지구의 기준 좌표계와 관련하여 갖는 회전을 나타낸다. 이는 다음과 같은 3차원 데카르트 좌표계(x, y, z)로 정의된다:

장치의 로컬 좌표계저수준 모션 센서에 대해 정의된 것과 동일하다. 이는 장치 좌표계이거나 화면 좌표계일 수 있다.

참고: 아래 그림은 장치의 로컬 좌표계지구의 기준 좌표계가 정렬된 경우를 나타낸다. 따라서 orientation sensor의 최신 판독값은 각 축에 대한 0(rad) [SI] 회전을 나타낸다.

AbsoluteOrientationSensor coordinate system.

5.2. RelativeOrientationSensor 모델

Relative Orientation Sensor 센서 타입Motion Sensors Explainer § relative-orientation에 설명된 센서를 나타낸다. 그 관련 확장 센서 인터페이스RelativeOrientationSensor이며, OrientationSensor의 하위 클래스이다. 그 관련 가상 센서 타입은 "relative-orientation"이다.

상대 방향 센서의 경우, 최신 판독값["quaternion"]의 값은 장치의 로컬 좌표계정지 기준 좌표계와 관련하여 갖는 회전을 나타낸다. 정지 기준 좌표계는 자이로스코프 센서가 도입하는 바이어스로 인해 드리프트할 수 있으므로, 센서가 제공하는 회전 값은 시간이 지남에 따라 드리프트할 수 있다.

정지 기준 좌표계는 센서를 호스팅하는 장치가 환경을 통해 이동하는 동안에도 정지 상태를 유지하는 관성 3차원 데카르트 좌표계로 정의된다.

장치의 로컬 좌표계저수준 모션 센서에 대해 정의된 것과 동일하다. 이는 장치 좌표계이거나 화면 좌표계일 수 있다.

참고: 상대 방향 센서 데이터는 자기장의 영향을 받지 않으므로 절대 방향 센서가 제공하는 데이터보다 더 정확할 수 있다.

6. API

6.1. OrientationSensor 인터페이스

typedef (Float32Array or Float64Array or DOMMatrix) RotationMatrixType;

[SecureContext, Exposed=Window]
interface OrientationSensor : Sensor {
  readonly attribute FrozenArray<double>? quaternion;
  undefined populateMatrix(RotationMatrixType targetMatrix);
};

enum OrientationSensorLocalCoordinateSystem { "device", "screen" };

dictionary OrientationSensorOptions : SensorOptions {
  OrientationSensorLocalCoordinateSystem referenceFrame = "device";
};

6.1.1. OrientationSensor.quaternion

장치 방향을 나타내는 단위 쿼터니언의 구성 요소를 포함하는 네 요소 FrozenArray를 반환한다. 즉, 이 속성은 this와 "quaternion"을 인수로 하여 최신 판독값에서 값 가져오기를 호출한 결과를 반환한다.

6.1.2. OrientationSensor.populateMatrix()

populateMatrix(targetMatrix) 메서드 단계는 다음과 같다:
  1. targetMatrixFloat32Array 또는 Float64Array 타입이고 크기가 16보다 작으면, "TypeError" 예외를 던지고 이 단계를 중단한다.

  2. this와 "quaternion"을 인수로 하여 최신 판독값에서 값 가져오기를 호출한 결과를 quaternion으로 둔다.

  3. quaternionnull이면, "NotReadableError" DOMException던지고 이 단계를 중단한다.

  4. quaternion[0], quaternion[1], quaternion[2], quaternion[3]으로 쿼터니언을 회전 행렬로 변환한 결과를 rotationMatrix로 둔다.

  5. targetMatrixFloat32Array 또는 Float64Array 타입이면, 다음 하위 단계를 실행한다:

    1. targetMatrix[0] = rotationMatrix[0]로 설정한다

    2. targetMatrix[1] = rotationMatrix[1]로 설정한다

    3. targetMatrix[2] = rotationMatrix[2]로 설정한다

    4. targetMatrix[3] = rotationMatrix[3]로 설정한다

    5. targetMatrix[4] = rotationMatrix[4]로 설정한다

    6. targetMatrix[5] = rotationMatrix[5]로 설정한다

    7. targetMatrix[6] = rotationMatrix[6]으로 설정한다

    8. targetMatrix[7] = rotationMatrix[7]로 설정한다

    9. targetMatrix[8] = rotationMatrix[8]로 설정한다

    10. targetMatrix[9] = rotationMatrix[9]로 설정한다

    11. targetMatrix[10] = rotationMatrix[10]으로 설정한다

    12. targetMatrix[11] = rotationMatrix[11]로 설정한다

    13. targetMatrix[12] = rotationMatrix[12]로 설정한다

    14. targetMatrix[13] = rotationMatrix[13]으로 설정한다

    15. targetMatrix[14] = rotationMatrix[14]로 설정한다

    16. targetMatrix[15] = rotationMatrix[15]로 설정한다

  6. targetMatrixDOMMatrix 타입이면, 다음 하위 단계를 실행한다:

    1. targetMatrix.m11 = rotationMatrix[0]으로 설정한다

    2. targetMatrix.m12 = rotationMatrix[1]로 설정한다

    3. targetMatrix.m13 = rotationMatrix[2]로 설정한다

    4. targetMatrix.m14 = rotationMatrix[3]으로 설정한다

    5. targetMatrix.m21 = rotationMatrix[4]로 설정한다

    6. targetMatrix.m22 = rotationMatrix[5]로 설정한다

    7. targetMatrix.m23 = rotationMatrix[6]으로 설정한다

    8. targetMatrix.m24 = rotationMatrix[7]로 설정한다

    9. targetMatrix.m31 = rotationMatrix[8]로 설정한다

    10. targetMatrix.m32 = rotationMatrix[9]로 설정한다

    11. targetMatrix.m33 = rotationMatrix[10]으로 설정한다

    12. targetMatrix.m34 = rotationMatrix[11]로 설정한다

    13. targetMatrix.m41 = rotationMatrix[12]로 설정한다

    14. targetMatrix.m42 = rotationMatrix[13]으로 설정한다

    15. targetMatrix.m43 = rotationMatrix[14]로 설정한다

    16. targetMatrix.m44 = rotationMatrix[15]로 설정한다

6.2. AbsoluteOrientationSensor 인터페이스

[SecureContext, Exposed=Window]
interface AbsoluteOrientationSensor : OrientationSensor {
  constructor(optional OrientationSensorOptions sensorOptions = {});
};

AbsoluteOrientationSensor 객체를 구성하려면 사용자 에이전트는 AbsoluteOrientationSensor 인터페이스에 대해 방향 센서 객체 구성 추상 연산을 호출해야 한다.

AbsoluteOrientationSensor에 대한 지원되는 센서 옵션은 "frequency" 및 "referenceFrame"이다.

6.3. RelativeOrientationSensor 인터페이스

[SecureContext, Exposed=Window]
interface RelativeOrientationSensor : OrientationSensor {
  constructor(optional OrientationSensorOptions sensorOptions = {});
};

RelativeOrientationSensor 객체를 구성하려면 사용자 에이전트는 RelativeOrientationSensor 인터페이스에 대해 방향 센서 객체 구성 추상 연산을 호출해야 한다.

RelativeOrientationSensor에 대한 지원되는 센서 옵션은 "frequency" 및 "referenceFrame"이다.

7. 추상 연산

7.1. Orientation Sensor 객체 구성

입력

orientation_interface, 그 상속된 인터페이스OrientationSensor를 포함하는 인터페이스 식별자.

options, OrientationSensorOptions 객체.

출력

OrientationSensor 객체.

  1. orientation_interface가 식별하는 인터페이스센서 정책 제어 기능 검사를 호출한 결과를 allowed로 둔다.

  2. allowed가 false이면:

    1. SecurityError DOMException던진다.

  3. orientationorientation_interface가 식별하는 인터페이스의 새 인스턴스로 둔다.

  4. orientationoptions센서 객체 초기화를 호출한다.

  5. options.referenceFrame이 "screen"이면:

    1. orientation에 대한 로컬 좌표계화면 좌표계로 정의한다.

  6. 그렇지 않으면, orientation에 대한 로컬 좌표계장치 좌표계로 정의한다.

  7. orientation을 반환한다.

7.2. 쿼터니언을 회전 행렬로 변환

쿼터니언을 회전 행렬로 변환 알고리즘은 아래와 같이 쿼터니언에서 변환된 열 우선 순서 회전 행렬의 목록 표현을 생성한다 [QUATCONV]:

Converting quaternion to rotation matrix.

여기서:

숫자 x, 숫자 y, 숫자 z, 숫자 w가 주어졌을 때 쿼터니언을 회전 행렬로 변환하려면:
  1. m11을 1 - 2 * y * y - 2 * z * z로 둔다

  2. m12를 2 * x * y - 2 * z * w로 둔다

  3. m13을 2 * x * z + 2 * y * w로 둔다

  4. m14를 0으로 둔다

  5. m21을 2 * x * y + 2 * z * w로 둔다

  6. m22를 1 - 2 * x * x - 2 * z * z로 둔다

  7. m23을 2 * y * z - 2 * x * w로 둔다

  8. m24를 0으로 둔다

  9. m31을 2 * x * z - 2 * y * w로 둔다

  10. m32를 2 * y * z + 2 * x * w로 둔다

  11. m33을 1 - 2 * x * x - 2 * y * y로 둔다

  12. m34를 0으로 둔다

  13. m41을 0으로 둔다

  14. m42를 0으로 둔다

  15. m43을 0으로 둔다

  16. m44를 1로 둔다

  17. « m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, m42, m43, m44 »를 반환한다.

7.3. 오일러 각도에서 쿼터니언 생성

숫자 alpha, 숫자 beta, 숫자 gamma가 주어졌을 때 오일러 각도에서 쿼터니언 생성하려면:

  1. alphaInRadiansalpha를 도에서 라디안으로 변환한 값으로 둔다.

  2. betaInRadiansbeta를 도에서 라디안으로 변환한 값으로 둔다.

  3. gammaInRadiansgamma를 도에서 라디안으로 변환한 값으로 둔다.

  4. cosZ를 (0.5 * alphaInRadians)의 코사인으로 둔다.

  5. sinZ를 (0.5 * alphaInRadians)의 사인으로 둔다.

  6. cosX를 (0.5 * betaInRadians)의 코사인으로 둔다.

  7. sinX를 (0.5 * betaInRadians)의 사인으로 둔다.

  8. cosY를 (0.5 * gammaInRadians)의 코사인으로 둔다.

  9. sinY를 (0.5 * gammaInRadians)의 사인으로 둔다.

  10. quaternionX를 (sinX * cosY * cosZ - cosX * sinY * sinZ)로 둔다.

  11. quaternionY를 (cosX * sinY * cosZ + sinX * cosY * sinZ)로 둔다.

  12. quaternionZ를 (cosX * cosY * sinZ + sinX * sinY * cosZ)로 둔다.

  13. quaternionW를 (cosX * cosY * cosZ - sinX * sinY * sinZ)로 둔다.

  14. « quaternionX, quaternionY, quaternionZ, quaternionW »를 반환한다.

8. 자동화

이 절은 Generic Sensor API § 9 자동화를 확장하여 Orientation Sensor 전용 가상 센서 메타데이터를 제공한다.

8.1. 다른 명세에 대한 수정

이 명세는 다음과 같이 Device Orientation and Motion § 자동화와 통합된다.

orientation data reading 구문 분석 알고리즘은 다음과 같이 수정된다:

참고: 이 명세는 현재 WebDriver에서 쿼터니언을 직접 지정하고(그 결과 쿼터니언에서 오일러 각도를 도출하는) 방법을 제공하지 않는다. 이 결정은 단순성을 위해, 그리고 자동화 사용자가 입력으로 오일러 각도를 사용하는 경우가 훨씬 더 많을 것이라는 가정(또는 특정 쿼터니언 값을 선택하고 그에 해당하는 오일러 각도 값을 직접 제공할 것이라는 가정)하에 이루어졌다. 쿼터니언 값을 직접 제공할 수 있기를 원하는 다른 사용 사례를 가진 사용자들의 의견은 이 명세의 이슈 추적기를 통해 환영한다.

8.2. Absolute Orientation Sensor 자동화

absolute-orientation 가상 센서 타입타입별 가상 센서 메타데이터 의 해당 항목은 Device Orientation and Motion § 자동화에 정의되어 있다.

8.3. Relative Orientation Sensor 자동화

relative-orientation 가상 센서 타입타입별 가상 센서 메타데이터 의 해당 항목은 Device Orientation and Motion § 자동화에 정의되어 있다.

9. 감사의 말

Generic Sensor API 작업을 해 준 Tobie Langel에게 감사한다.

적합성

문서 규약

적합성 요구 사항은 설명적 단언과 RFC 2119 용어의 조합으로 표현된다. 이 문서의 규범적 부분에서 핵심 단어 “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, “OPTIONAL”은 RFC 2119에 설명된 대로 해석되어야 한다. 그러나 가독성을 위해 이 명세에서는 이러한 단어가 모두 대문자로 나타나지는 않는다.

명시적으로 비규범이라고 표시된 절, 예제 및 참고를 제외한 이 명세의 모든 텍스트는 규범적이다. [RFC2119]

이 명세의 예제는 “for example”이라는 단어로 도입되거나 class="example"을 사용하여 규범적 텍스트와 구분된다. 예를 들면 다음과 같다:

이것은 정보성 예제의 예이다.

정보성 참고는 “Note”라는 단어로 시작하며 class="note"를 사용하여 규범적 텍스트와 구분된다. 예를 들면 다음과 같다:

참고, 이것은 정보성 참고이다.

적합한 알고리즘

알고리즘의 일부로 명령형으로 표현된 요구 사항 (예: "strip any leading space characters" 또는 "return false and abort these steps")은 해당 알고리즘을 도입할 때 사용된 핵심 단어 ("must", "should", "may" 등)의 의미로 해석되어야 한다.

알고리즘 또는 특정 단계로 표현된 적합성 요구 사항은 최종 결과가 동등하다면 어떤 방식으로든 구현할 수 있다. 특히 이 명세에 정의된 알고리즘은 이해하기 쉽도록 의도된 것이며 성능이 좋도록 의도된 것은 아니다. 구현자는 최적화할 것을 권장한다.

색인

이 명세가 정의한 용어

참조에 의해 정의된 용어

참고 문헌

규범적 참고 문헌

[ACCELEROMETER]
Anssi Kostiainen. Accelerometer. 2026년 5월 14일. CRD. URL: https://www.w3.org/TR/accelerometer/
[GENERIC-SENSOR]
Rick Waldron. Generic Sensor API. 2026년 5월 14일. CRD. URL: https://www.w3.org/TR/generic-sensor/
[GEOMETRY-1]
Sebastian Zartner; Yehonatan Daniv. Geometry Interfaces Module Level 1. 2025년 12월 4일. CRD. URL: https://www.w3.org/TR/geometry-1/
[GYROSCOPE]
Anssi Kostiainen. Gyroscope. 2026년 5월 14일. CRD. URL: https://www.w3.org/TR/gyroscope/
[INFRA]
Anne van Kesteren; Domenic Denicola. Infra Standard. 현행 표준. URL: https://infra.spec.whatwg.org/
[MAGNETOMETER]
Anssi Kostiainen; Rijubrata Bhaumik. Magnetometer. 2026년 5월 14일. WD. URL: https://www.w3.org/TR/magnetometer/
[MOTION-SENSORS]
Kenneth Christiansen; Alexander Shalamov. Motion Sensors Explainer. 2017년 8월 30일. NOTE. URL: https://www.w3.org/TR/motion-sensors/
[ORIENTATION-EVENT]
Reilly Grant; Marcos Caceres. Device Orientation and Motion. 2025년 2월 12일. CRD. URL: https://www.w3.org/TR/orientation-event/
[PERMISSIONS-POLICY-1]
Ian Clelland. Permissions Policy. 2025년 10월 6일. WD. URL: https://www.w3.org/TR/permissions-policy-1/
[RFC2119]
S. Bradner. RFC에서 요구 수준을 나타내는 데 사용하는 핵심 단어. 1997년 3월. Best Current Practice. URL: https://datatracker.ietf.org/doc/html/rfc2119
[WEBIDL]
Edgar Chen; Timothy Gu. Web IDL Standard. 살아있는 표준. URL: https://webidl.spec.whatwg.org/

비규범적 참고 문헌

[HTML]
Anne van Kesteren; et al. HTML Standard. 현행 표준. URL: https://html.spec.whatwg.org/multipage/
[QUATCONV]
Watt, Alan H., and Mark Watt.. 고급 애니메이션 및 렌더링 기법, 362쪽. 1992. 정보성. URL: https://www.cs.cmu.edu/afs/cs/academic/class/15462-s14/www/lec_slides/3DRotationNotes.pdf
[QUATERNIONS]
쿼터니언. URL: https://en.wikipedia.org/wiki/Quaternion
[SI]
SI 브로슈어: 국제단위계 (SI), 8판. 2014. 8판. URL: http://www.bipm.org/en/publications/si-brochure/

IDL 색인

typedef (Float32Array or Float64Array or DOMMatrix) RotationMatrixType;

[SecureContext, Exposed=Window]
interface OrientationSensor : Sensor {
  readonly attribute FrozenArray<double>? quaternion;
  undefined populateMatrix(RotationMatrixType targetMatrix);
};

enum OrientationSensorLocalCoordinateSystem { "device", "screen" };

dictionary OrientationSensorOptions : SensorOptions {
  OrientationSensorLocalCoordinateSystem referenceFrame = "device";
};

[SecureContext, Exposed=Window]
interface AbsoluteOrientationSensor : OrientationSensor {
  constructor(optional OrientationSensorOptions sensorOptions = {});
};

[SecureContext, Exposed=Window]
interface RelativeOrientationSensor : OrientationSensor {
  constructor(optional OrientationSensorOptions sensorOptions = {});
};

MDN

AbsoluteOrientationSensor/AbsoluteOrientationSensor

In only one current engine.

FirefoxNoneSafariNoneChrome67+
Opera?Edge79+
Edge (Legacy)?IENone
Firefox for Android?iOS Safari?Chrome for Android?Android WebView?Samsung Internet?Opera Mobile?
MDN

AbsoluteOrientationSensor

In only one current engine.

FirefoxNoneSafariNoneChrome67+
Opera?Edge79+
Edge (Legacy)?IENone
Firefox for Android?iOS Safari?Chrome for Android?Android WebView?Samsung Internet?Opera Mobile?
MDN

OrientationSensor/populateMatrix

In only one current engine.

FirefoxNoneSafariNoneChrome67+
Opera?Edge79+
Edge (Legacy)?IENone
Firefox for Android?iOS Safari?Chrome for Android?Android WebView?Samsung Internet?Opera Mobile?
MDN

OrientationSensor/quaternion

In only one current engine.

FirefoxNoneSafariNoneChrome67+
Opera?Edge79+
Edge (Legacy)?IENone
Firefox for Android?iOS Safari?Chrome for Android?Android WebView?Samsung Internet?Opera Mobile?
MDN

OrientationSensor

In only one current engine.

FirefoxNoneSafariNoneChrome67+
Opera?Edge79+
Edge (Legacy)?IENone
Firefox for Android?iOS Safari?Chrome for Android?Android WebView?Samsung Internet?Opera Mobile?
MDN

RelativeOrientationSensor/RelativeOrientationSensor

In only one current engine.

FirefoxNoneSafariNoneChrome67+
Opera?Edge79+
Edge (Legacy)?IENone
Firefox for Android?iOS Safari?Chrome for Android?Android WebView?Samsung Internet?Opera Mobile?
MDN

RelativeOrientationSensor

In only one current engine.

FirefoxNoneSafariNoneChrome67+
Opera?Edge79+
Edge (Legacy)?IENone
Firefox for Android?iOS Safari?Chrome for Android?Android WebView?Samsung Internet?Opera Mobile?