【この訳に特有な表記規約】
◎表記記号1. 序論
磁力計は、 汎用~sensor~API( `Generic Sensor API^en ) `GENERIC-SENSOR$r を拡張して,[ ~deviceの首な磁力計~sensorにより検出される`磁場$ ]についての情報を供する。 磁力計~sensorは、 物理的な 3 軸(~x, ~y, ~z)すべてに対し`磁場$を μT ( `micro Tesla^en 【 1 テスラ ~DIV ( 10 の 6 乗 ) 単位】 )で測定する。 ◎ Magnetometer extends the Generic Sensor API [GENERIC-SENSOR] to provide information about the magnetic field as detected by the device’s primary magnetometer sensor. The magnetometer sensor measures the magnetic field for all three physical axes (x, y, z) in μT (micro Tesla).
この仕様は、 2 つの新たな~interfaceを定義する: ◎ This specification defines two new interfaces:
- `Magnetometer$I は、 `較正-済み磁場$の値たちを報告する。 ◎ Magnetometer that reports calibrated magnetic field values, and
- `UncalibratedMagnetometer$I は、 `未較正な磁場$の値たちを報告する。 ◎ UncalibratedMagnetometer that reports uncalibrated magnetic field values.
`磁場@ ( `magnetic field^en )とは、[ 電流/磁性体/地球の磁力 ]から生成される磁気~効果に因り,磁力計~sensorに対し磁力を及ぼす場( `field^en )である。 地球の磁力は、 その[ 自転, 核【外核】内の溶けた鉄の動き ]が組合された効果に起因する。 ◎ The magnetic field is a field that exerts magnetic force on magnetometer sensor due to the magnetic effect generated by electric currents, magnetic materials or Earth’s magnetic force that is attributed to the combined effects of the planetary rotation and the movement of molten iron in the Earth’s core.
`~hard鉄~歪み@ ( `hard iron distortion^en )は、 磁化された鉄などの`磁場$を生産する物体により作成される。 ◎ Hard iron distortion is created by objects that produce a magnetic field, such as magnetized iron.
`~soft鉄~歪み@ ( `soft iron distortion^en )は`磁場$を引伸ばしたり歪めるものであり、 ~nickelや鉄などの金属により生じる。 ◎ Soft iron distortion stretches or distorts the magnetic field and is caused by metals such as nickel and iron.
`較正-済み磁場@ ( `calibrated magnetic field^en )とは、[ `~hard鉄~歪み$, `~soft鉄~歪み$ ]どちらに対しても補正が適用された`磁場$である。 ◎ The calibrated magnetic field is a magnetic field with hard iron distortion and soft iron distortion correction applied.
`未較正な磁場@ ( `uncalibrated magnetic field^en )とは、 `~hard鉄~歪み$に対する補正は伴わないが,`~soft鉄~歪み$に対する補正は適用された`磁場$である。 その結果、 磁化された物体が磁力計の近くで動くことで生じる,`磁場$の変化を報告する。 ◎ The uncalibrated magnetic field is the magnetic field without hard iron distortion correction and with soft iron distortion correction applied, and as such reports changes in the magnetic field caused by magnetized objects moving near the magnetometer.
2. 例
let %sensor = new Magnetometer(); %sensor.start(); %sensor.onreading = () => { console.log("~X軸~沿いの磁場: " + %sensor.x); console.log("~Y軸~沿いの磁場: " + %sensor.y); console.log("~Z軸~沿いの磁場: " + %sensor.z); }; %sensor.onerror = %event => console.log(%event.error.name, %event.error.message);
3. ~security/~privacyの考慮点
磁力計は、 磁場についての情報を供する。 理論~上,それは、 利用者の所在を公開し得る。 例えば,[ 特定0の所在にて予め磁化された表面 ]/[ 所在から[ 一定的な磁場に対する,建物により生じる乱れ ]への対応付け ]は、 攻撃~行路になり得る。 利用者の所在の[ 公開/検証 ]も、 地球の磁場の強度が一様でないことに因り,別の攻撃~行路になり得る。 例えば,利用者が~VPNを通して接続している場合、 ~geo-IP情報に結付けられた磁場は,利用者の所在における磁力計~読取りと比較でき、 したがって,利用者が~VPNを利用しているかどうかを伝える。 【文面のみからは,なぜ~VPNに特有になるのか はっきりしないが、~VPNと~geo-IPには何か関係があるらしい。】 ◎ Magnetometer provides information about magnetic field, and in theory, can expose location of a user. For example, attack vector could be pre-magnetized surface in a particular location, or mapping between location and constant magnetic field disturbances caused by the building. Due to non-uniform strength of the Earth’s magnetic field, another attack vector could be exposure or validation of the user’s location. For example, if the end user is connected through VPN, magnetic field associated with geo IP information can be compared with magnetometer readings at real location, therefore, tell whether user is using VPN or not.\
実装者は、 磁場~強度と~CPU実行などの他の側面との相関を介して,~side-channelから漏洩し得る~riskを自覚するベキである — ある種の状況下では、 それにより,他の~UItab内で訪問して利用された~appや~web~siteについての情報が漏洩し得る。 `MAGSPY$r ◎ Implementors should be aware of potential risk of side-channel leaks via the correlations of magnetic field strength and other aspects such as CPU execution, which under certain circumstances may potentially leak the information about used applications or websites visited in other tabs. [MAGSPY]
未較正な磁力計~読取りは、[ 宝飾品など,近くにある磁化された物体 ]により影響され得るため、[ `~keystrokeの監視@~SENSORS#keystroke-monitoring$に利用される情報 ]を公開するかもしれない。 ◎ Uncalibrated magnetometer readings could be affected by magnetized objects nearby, such as jewelry, thereby exposing information that might be used for keystroke monitoring.
これらの特有な脅威を軽減するため、 ~UAは,次に挙げる軽減~策のうち一方または両方を利用するベキである: ◎ To mitigate these specific threats, user agents should use one or both of the following mitigation strategies:
- `最大~標本化~frequencyを制限する@~SENSORS#limit-max-frequency$ ◎ limit maximum sampling frequency
- ~sensor読取りの`正確度を抑制する@~SENSORS#reduce-accuracy$ ◎ reduce accuracy of sensor readings
これらの軽減~策は、 汎用~sensor~APIに定義される`汎用な軽減~策@~SENSORS#mitigation-strategies$ `GENERIC-SENSOR$r を補う。 ◎ These mitigation strategies complement the generic mitigations defined in the Generic Sensor API [GENERIC-SENSOR].
4. 許可~施策の統合
この仕様は、 文字列 `magnetometer$l により識別される`施策により制御される特能$を用立てる — それは、 `DEVICE-ORIENTATION$r にて定義される。 ◎ This specification utilizes the policy-controlled feature identified by the string "magnetometer" defined in [DEVICE-ORIENTATION].
5. ~model
`~sensor型$ `磁力計@i ( `Magnetometer^en )には、 次に挙げる~dataが結付けられる: ◎ The Magnetometer sensor type has the following associated data:
- `拡張~sensor~interface$ ⇒ `Magnetometer$I ◎ Extension sensor interface • Magnetometer
- `~sensor許可~名~群$ ⇒ { `magnetometer$l } ◎ Sensor permission names • "magnetometer"
- `~sensor特能~名~群$ ⇒ { `magnetometer$l } ◎ Sensor feature names • "magnetometer"
- `許可~revocation~algo$ ⇒ 次を呼出す ⇒ `~sensor許可~revocation~algo$( `magnetometer$l ) ◎ Permission revocation algorithm • Invoke the generic sensor permission revocation algorithm with "magnetometer".
- `属する~virtual~sensor型$ ⇒ `magnetometer@vsT ◎ Virtual sensor type • "magnetometer"
`~sensor型$ `磁力計$i の `Sensor$I 用の`最新な読取り~map$は、 次を含むモノトスル ⇒ [ `x^l, `y^l, `z^l ]を`~key$mapとする 3 個の`~entry$map — それらの各`値$mapは、 対応する軸における`磁場$を包含する。 ◎ The latest reading for a Sensor whose sensor type is Magnetometer must include: • Three entries whose keys are "x", "y", "z" and whose values contain magnetic field about the corresponding axes.
`~sensor型$ `未較正な磁力計@i ( `Uncalibrated Magnetometer^en )には、 次に挙げる~dataが結付けられる: ◎ The Uncalibrated Magnetometer sensor type has the following associated data:
- `拡張~sensor~interface$ ⇒ `UncalibratedMagnetometer$I ◎ Extension sensor interface • UncalibratedMagnetometer
- `~sensor許可~名~群$ ⇒ { `magnetometer$l } ◎ Sensor permission names • "magnetometer"
- `~sensor特能~名~群$ ⇒ { `magnetometer$l } ◎ Sensor feature names • "magnetometer"
- `許可~revocation~algo$ ⇒ 次を呼出す ⇒ `~sensor許可~revocation~algo$( `magnetometer$l ) ◎ Permission revocation algorithm • Invoke the generic sensor permission revocation algorithm with "magnetometer".
- `属する~virtual~sensor型$ ⇒ `uncalibrated-magnetometer@vsT ◎ Virtual sensor type • "uncalibrated-magnetometer"
`~sensor型$ `未較正な磁力計$i の `Sensor$I 用の`最新な読取り~map$は、 次を含むモノトスル: ◎ The latest reading for a Sensor whose sensor type is Uncalibrated Magnetometer must include:
- [ `x^l, `y^l, `z^l ]を`~key$mapとする 3 個の`~entry$map — それらの各`値$mapは、 対応する軸~周りにおける`未較正な磁場$を包含する。 ◎ Three entries whose keys are "x", "y", "z" and whose values contain uncalibrated magnetic field around the 3 different axes.
- [ `xBias^l, `yBias^l, `zBias^l ]を`~key$mapとする 3 個の`~entry$map — それらの各`値$mapは、 対応する軸~周りの`~hard鉄~歪み$補正を包含する。 ◎ Three additional entries whose keys are "xBias", "yBias", "zBias" and whose values contain the hard iron distortion correction around the 3 different axes.
`磁場$値の符号は、 `局所~座標系$において右手系に則るモノトスル(下の図を見よ)。 ◎ The sign of the magnetic field values must be according to the right-hand convention in a local coordinate system (see figure below).
磁力計の座標系。 ◎ Magnetometer coordinate system.
5.1. 基準~frame
`局所~座標系$は、[ `Magnetometer$I / `UncalibratedMagnetometer$I ]`~sensor読取り$用の基準~frameを表現する。 それは、 `~device座標系$にも`~screen座標系$にもなり得る。 ◎ The local coordinate system represents the reference frame for the Magnetometer and the UncalibratedMagnetometer readings. It can be either the device coordinate system or the screen coordinate system.
6. ~API
6.1. `Magnetometer^I ~interface
[`SecureContext$, `Exposed$=Window] interface `Magnetometer@I : `Sensor$I { `Magnetometer$mc(optional `MagnetometerSensorOptions$I %sensorOptions = {}); readonly attribute `double$? `x@m; readonly attribute `double$? `y@m; readonly attribute `double$? `z@m; }; enum `MagnetometerLocalCoordinateSystem@I { `device@l, `screen@l }; dictionary `MagnetometerSensorOptions@I : `SensorOptions$I { `MagnetometerLocalCoordinateSystem$I `referenceFrame@mb = "device"; };
`Magnetometer$I が`~supportする~sensor~option群$は ⇒ { `frequency^l, `referenceFrame^l } ◎ Supported sensor options for Magnetometer are "frequency" and "referenceFrame".
[ `x$m / `y$m / `z$m ]属性は、[ ~X / ~Y / ~Z ]軸~周りの`磁場$を表現する。 ◎ ↓
6.2. `UncalibratedMagnetometer^I ~interface
[`SecureContext$, `Exposed$=Window] interface `UncalibratedMagnetometer@I : `Sensor$I { `UncalibratedMagnetometer$mc(optional `MagnetometerSensorOptions$I %sensorOptions = {}); readonly attribute `double$? `x@mu; readonly attribute `double$? `y@mu; readonly attribute `double$? `z@mu; readonly attribute `double$? `xBias@mu; readonly attribute `double$? `yBias@mu; readonly attribute `double$? `zBias@mu; };
`UncalibratedMagnetometer$I が`~supportする~sensor~option群$は ⇒ { `frequency^l, `referenceFrame^l } ◎ Supported sensor options for UncalibratedMagnetometer are "frequency" and "referenceFrame".
[ `x$mu / `y$mu / `z$mu ]属性は、[ ~X / ~Y / ~Z ]軸~周りの`未較正な磁場$を表現する。 ◎ ↓
[ `xBias$mu / `yBias$mu / `zBias$mu ]属性は、[ ~X / ~Y / ~Z ]軸~周りの`~hard鉄~歪み$補正を表現する。 ◎ ↓
7. 抽象-演算
`磁力計~objを構築する@ ときは、 所与の ( %~obj, %~option群 ) に対し: ◎ 7.1. Construct a magnetometer object
- ~Assert: %~obj は `Magnetometer$I ~interfaceを実装する ◎ input • object, a Magnetometer or UncalibratedMagnetometer object
- ~Assert: %~option群 は `MagnetometerSensorOptions$I 辞書である ◎ • options, a MagnetometerSensorOptions object.
- ~IF[ `~sensor施策により制御される特能を検査する$( %~obj の`~sensor型$ ) ~EQ ~F ] ⇒ ~THROW `SecurityError$E ◎ Let allowed be the result of invoking check sensor policy-controlled features with object’s sensor type. ◎ If allowed is false, then: • Throw a SecurityError DOMException.
- `~sensor~objを初期化する$( %~obj, %~option群 ) ◎ Invoke initialize a sensor object with object and options.
- %~obj 用の`局所~座標系$を %~option群[ "`referenceFrame$mb" ] に応じて, 次になるものと定義する ⇒# `screen^l ならば `~screen座標系$/ `device^l ならば `~device座標系$ ◎ If options.referenceFrame is "screen", then: • Set object’s local coordinate system to the screen coordinate system. ◎ Otherwise, define object’s local coordinate system to the device coordinate system.
8. 自動化
この節では、 `GENERIC-SENSOR$r に定義される`自動化@~SENSORS#automation$を拡張する — `磁力計$i に特有な`~virtual~sensor~metadata$を供することにより。 ◎ This section extends Generic Sensor API § 9 Automation by providing Magnetometer-specific virtual sensor metadata.
8.1. 磁力計の自動化
`型ごとの~virtual~sensor~metadata$を与える`~map$は、 次に挙げる`~entry$mapを伴うモノトスル: ◎ The per-type virtual sensor metadata map must have the following entry:
- `~key$map `magnetometer$vsT ⇒ 対応する`値$mapを与える`~virtual~sensor~metadata$の ⇒# `読取り構文解析~algo$vsMは `~xyzの読取りを構文解析する$ ◎ key • "magnetometer" ◎ value • A virtual sensor metadata whose reading parsing algorithm is parse XYZ reading.
8.2. 未較正な磁力計の自動化
`型ごとの~virtual~sensor~metadata$を与える`~map$は、 次に挙げる`~entry$mapを伴うモノトスル: ◎ The per-type virtual sensor metadata map must have the following entry:
- `~key$map `uncalibrated-magnetometer$vsT ⇒ 対応する`値$mapを与える`~virtual~sensor~metadata$の ⇒# `読取り構文解析~algo$vsMは `未較正な磁力計の読取りを構文解析する$ ◎ key • "uncalibrated-magnetometer" ◎ value • A virtual sensor metadata whose reading parsing algorithm is the uncalibrated magnetometer reading parsing algorithm.
8.2.1. 未較正な磁力計の読取りを構文解析する
所与の ( ~JSON `Object$jt %~parameter群 ) に対し,[ `~sensor読取り$/ `undefined^jv ]を返す: ◎ input • parameters, a JSON Object ◎ output • A sensor reading or undefined
- %読取り ~LET `~xyzの読取りを構文解析する$( %~parameter群 ) ◎ Let reading be the result of parse XYZ reading with parameters.
- ~IF[ %読取り ~EQ `undefined^jv ] ⇒ ~RET `undefined^jv ◎ If reading is undefined. • Return undefined.
-
« `xBias^l, `yBias^l, `zBias^l » を成す ~EACH( %~key ) に対し: ◎ Let keys be the list « "xBias", "yBias", "zBias" ». ◎ For each key of keys
- %値 ~LET `一数の読取りを構文解析する$( %~parameter群, %~key ) ◎ Let value be the result of invoking parse single-value number reading with parameters and key.
- ~IF[ %値 ~EQ `undefined^jv ] ⇒ ~RET `undefined^jv ◎ If value is undefined. • Return undefined.
- %読取り[ %~key ] ~SET %値[ %~key ] ◎ Set reading[key] to value[key].
- ~RET %読取り ◎ Return reading.
9. 磁力計~sensorの制限
◎非規範的地球の磁場の方向と~magnitudeは、 所在,特に緯度により変化する。 例えば,~magnitudeは、 赤道~近くでは最も低く,極~近くでは最も高くなる。 ~hard鉄による干渉は、 永久磁石(例: 電話の~speakerの磁石)が在ることを意味し,~sensorの付近にあると読取りの正確度にも影響する。 [ 電化製品/~laptop/~battery ]等が在ることも,~soft鉄による干渉に寄与する。 ~mobile電話における機内mode~optionは、 これら電磁~干渉を減らす一助になり得る。 ◎ The direction and magnitude of the Earth’s field changes with location, latitude in particular. For example, the magnitude is lowest near the equator and highest near the poles. Some hard-iron interference, meaning presence of permanent magnets (e.g. magnets in the speaker of a phone) in the vicinity of the sensor also affects the accuracy of the reading. Presence of electronic items, laptops, batteries, etc also contribute to the soft iron interference. Flight Mode option in mobile phones might help in decreasing the electro magnetic interference.
上に加えて、 太陽風や磁気嵐の様な,`磁場$の[ 空間的な変動, 時間に基づく変動 ]も,地球の磁気圏や外部~磁場を歪める。 ◎ In addition to the above spatial variations of the magnetic field, time based variations, like solar winds or magnetic storms, also distort the magnetosphere or external magnetic field of the Earth.
10. 利用事例と要件
◎非規範的磁力計には、 様々な利用事例がある — 例えば: ◎ Magnetometers can be used for a variety of use-cases, for example:
- ~sensor融合。 磁力計の共通的な利用事例には、 `絶対~方位~sensor$ `MOTION-SENSORS$r を生成するための~sensor融合がある。 それは、[ 地球~平面に対し~stationary/~compass-heading【!compass】に対し~stationary ]である。 後者は,基本的には、 真北を指すよう,偏角に対する[ 地理所在位置に依存する補正 ]を伴わせた前者である。 ~compass-headingの計算-法の詳細は、 `§ 磁力計を利用する~compass-heading@#compass$ にある。 ◎ Sensor fusion. A common use-case for magnetometers is sensor fusion in order to generate an Absolute Orientation Sensor [MOTION-SENSORS] which is stationary to the Earth plane, or a compass, which is basically the former with corrections to the declination depending on geolocation position, such that it points to the true north. Calculating compass heading as detailed in § 11 Compass Heading Using Magnetometers.
- ~VR(`Virtual Reality^en/仮想現実), ~AR(`Augmented Reality^en/拡張現実)。 磁力計は、 ~VR筐体~用の磁気~buttonを利用して入力を実装するために利用できる `VRBUTTON$r 。 ~VR/~AR用の~head-mount追跡~systemは、 磁力計~dataを利用することで次を行える ⇒# ~gyroscope読取りの較正を助ける。 ~yaw読取りを磁北に揃える。 ◎ Virtual Reality and Augmented Reality. Magnetometer can be used to implement input using magnetic button for VR enclosures [VRBUTTON]. Head-mount tracking systems for VR and AR can use magnetometer data to help in calibration of gyroscope readings and align yaw readings with the magnetic north.
- ~gesture認識。 様々なヤリトリ (器具を~~動かして[ 書く/合図する/演奏する ]など)も, 様々な形状(棒筆輪など)の磁石を利用して可能化できる `MAGITACT$r 。 利用者は、 ~device周りの~3D空間~内で,磁石を利用して粗い~gestureを為す。 磁石の動きは、 磁場に影響する~device内に統合された~compass~sensorにより~senseされる。 ~gestureの一時的~patternは、 ~mobile~deviceへ各種ヤリトリを表す~commandを送信するための基礎として利用できる。 次に挙げる利用事例が含まれる: ~zoomする/ ~pageを捲る/ ~~着信を[ 受容する/却下する ]/ ~itemを~clickするなど。 ◎ Gesture recognition. Various interactions like writing, signing and playing an instrument can also be enabled using a magnet like a rod, pen or a ring [MAGITACT]. The user makes coarse gestures in the 3D space around the device using the magnet. Movement of the magnet affects the magnetic field sensed by the compass sensor integrated in the device. The temporal pattern of the gesture can be used as a basis for sending different interaction commands to the mobile device. Zooming, turning pages, accepting/rejecting calls, clicking items are some of the use cases.
- 屋内~navi。 ~navi~systemは、 ~mobile~device上の磁力計~dataを利用して, `MAGINDOORPOS$r 建物の内側で磁場を検出できる。 局所的な変動性が~~十分ある下では、 ある~~場所の特異性を,自己所在特定に用立てれる。 屋内~navi用の利用事例には、 例えば[ 近接広告, ~mallや空港~内での道順案内, `geofencing^en 【 “仮想柵による区分け” `geo fence@https://en.wikipedia.org/wiki/Geo-fence$en】 ]がある。 ◎ Indoor navigation. Navigation systems can use magnetometer data on mobile devices [MAGINDOORPOS] to detect the magnetic field inside a building. With sufficient local variability, the anomalies can be utilized in self-localization. Use cases for indoor navigation include, for example, proximity advertising, way finding in malls or airports, and geofencing.
- 金属~検出。 磁力計は、 近くの金属が在ることを検出するため,~utility~appにより利用できる。 例: 物体の中に隠れた含有物を見出すなど。 ◎ Metal detection. Magnetometers can be used by utility applications to detect the presence of metal nearby, e.g. finding inclusions hidden within objects.
注記: ~dataの粗さと標本化~frequencyに関する要件は、 目下の利用事例に依存して変わり得る。 例えば,金属~検出や磁気~buttonを利用する入力は、 もっと粗い~dataで実装できる見込みが高く,[ ~gesture認識/屋内~navi/~VRや~AR ]などの利用事例によりも標本化~frequencyは低く抑えられる。 ~sensor融合の利用事例においては、 最適な結果が得られる標本化~frequencyは,例えば[ ~sensor融合~algo/孕まれる他の~motion~sensorの特性 ]に依存する。 ◎ Requirements with respect to data coarseness and sampling frequency can vary depending on the use case at hand. For example, metal detection or input using magnetic button can likely be implemented with coarser data and using lower sampling frequency compared to gesture recognition, indoor navigation, or VR and AR use cases. In sensor fusion use cases, the sampling frequency that yeilds optimal results is dependent on e.g. sensor fusion algorithm and characteristics of other motion sensors involved.
11. 磁力計を利用する~compass-heading
◎非規範的~compassは、 自身を地球の磁極に揃える器具であり,何世紀もの間~naviに利用されてきた。 地球の自転軸は、 我々が地図の基準に利用している地理的な[ 北/南 ]極を定義する。 地理的な極と磁極とは、 約 11.5 ~degree(約 1000 ~mile)の不一致があることが判っている。 この状況を補正するため、 磁気~方向には`磁気~偏角$【!偏角】が適用される。 ◎ Compasses, instruments that align themselves with the magnetic poles of the Earth, have been used in navigation for centuries. The Earth’s rotational axis defines the geographic north and south poles that we use for map references. It turns out that there is a discrepancy of around 11.5 degrees (around 1000 miles) between the geographic poles and the magnetic poles. Declination angle is applied to the magnetic direction to correct for this situation.
~deviceの面が地球の接平面と常に一致する場合、 ~compass-headingは,地球の磁場の[ `x$m, `y$m ]成分 — すなわち,地球の接平面に一致する方向 — のみを利用して決定できる。 地理的な北(真北)~headingを決定するためには、 適切な`磁気~偏角$【!偏角】を加算する。 ◎ If the device is always level to the Earth’s surface, compass heading can be determined by using just the x and y component of the Earth’s magnetic field, that is, the directions planar with the Earth’s surface. To determine geographic north (or true north) heading, add the appropriate declination angle.
`磁気~偏角@ ( `magnetic declination^en )†は、 地平面~上で磁北( `magnetic north^en )と真北( `the true north^en )が成す角度である。 それは、 地球の表面~上の位置に依存し,時間~越しに変化する。 規約により、 偏角は,磁北が真北から[ 東にあるときは正に/西にあるときは負に ]なる。 所与の時刻における`磁気~偏角$の値は、 例えば NOAA( `National Oceanic and Atmospheric Administration^en )が供している`磁気~偏角~計算機@https://www.ngdc.noaa.gov/geomag/calculators/magcalc.shtml$を利用して取得できる。 ◎ Magnetic declination or declination angle is the angle on the horizontal plane between magnetic north and the true north and depends on the position on the Earth’s surface, and changes over time. By convention, declination is positive when magnetic north is east of true north, and negative when it is to the west. You can get real time value for magnetic declination e.g. using the Magnetic declination calculator provided by the National Oceanic and Atmospheric Administration (NOAA).
【† 原文には,磁気~偏角の同義語として用語 `偏角@ ( `declination angle^en, 略して `declination^en )も定義されているが、 この訳では “磁気~偏角” に統一する。 】
磁北は、 次に従って計算される: ◎ The magnetic north is calculated as follows:
let %sensor = new Magnetometer(); %sensor.start(); let %heading = Math.atan2(%sensor.y, %sensor.x) * (180 / Math.PI); console.log('~heading ( ~degree ): ' + %heading);
所与の ( 緯度, 経度 ) における,地理的な北は、 次に従って計算できる: ◎ The geographic north at a given latitude and longitude can be calculated as follows:
/* 緯度, 経度を取得する — その~~詳細は、 ここでは省略する。 ◎ Get the latitude and longitude, omitted for brevity here. */ let %緯度 = 0, %経度 = 0; /* 所与の ( 緯度, 経度 ) における磁気~偏角を取得する。 ◎ Get the magnetic declination at the given latitude and longitude. */ fetch( 'https://www.ngdc.noaa.gov/geomag-web/calculators/calculateDeclination' + '?lat1=' + %緯度 + '&lon1=' + %経度 + '&resultFormat=csv' ) .then(%response => %response.text()) .then(%text => { let %偏角 = parseFloat(%text.replace(/^#.*$/gm, '').trim().split(',')[4]); /* 地理的な北を取得するため、 磁気~偏角を補償する。 ◎ Compensate for the magnetic declination to get the geographic north. */ console.log('真北~heading ( ~degree ): ' + (%heading + %偏角)); });
注記: ~deviceの面が地球の接平面と一致しない場合、 開発者は,様々な傾き補償~技法を適用する必要があり、 そのためには 3 軸~加速度計が必要になる。 この特定0の利用事例を実装するためには、[ 加速度計, 磁力計 ]~sensorの融合である方位~sensorからの~dataが要求される。 ◎ Note: If the device is not level to the Earth’s surface, a developer needs to apply various tilt compensation techniques for which she needs a 3-axis accelerometer. Data from the orientation sensor, which is a fusion of the accelerometer and magnetometer sensors, is required to implement this particular use case.
謝辞
汎用~sensor~APIの作業を為された `Tobie Langel^en 氏に。 ◎ Tobie Langel for the work on Generic Sensor API.