"3次元磁気センサから順次出力される、3成分を有する複数の磁気データを入力する入力手段と、入力された複数の前記磁気データから、予め決められた4点選抜条件を満たす4つの前記磁気データを選抜する選抜手段と、選抜された4つの前記磁気データを成分とする4点から等距離にある点である中心点を算出する算出手段と、前記中心点の成分を前記磁気データのオフセットとして設定する設定手段と、を備え、前記4点選抜条件は、選抜候補の4つの前記磁気データを成分とする4点を頂点とする四面体の正四面体に対する歪みに相関する条件を含む、磁気センサ制御装置。前記4点選抜条件は、前記四面体の各頂点の立体角のばらつきが予め決められた所定範囲内にあることを含む、請求項1に記載の磁気センサ制御装置。前記4点選抜条件は、前記四面体の各面の面積のばらつきが予め決められた所定範囲内にあることを含む、請求項1に記載の磁気センサ制御装置。前記4点選抜条件は、前記四面体の重心から拡張点までの距離のばらつきが予め決められた所定範囲内にあることを含む、請求項1に記載の磁気センサ制御装置。前記4点選抜条件は、下記の3行3列の対称行列Bの各固有値のいずれか2組のそれぞれの比がそれぞれ予め決められた所定値より大きいことを含む、請求項1~4のいずれか一項に記載の磁気センサ制御装置。ただし、pii=0,1,2は前記四面体の各頂点であり、d4は前記四面体の重心である。本発明は、オフセットの算出に統計処理を用いる必要のない磁気センサ制御装置、方法及びプログラムを提供することを目的とする。1上記目的を達成するための磁気センサ制御装置は、3次元磁気センサから順次出力される、3成分を有する複数の磁気データを入力する入力手段と、入力された複数の前記磁気データから、予め決められた4点選抜条件を満たす4つの前記磁気データを選抜する選抜手段と、選抜された4つの前記磁気データを成分とする4点から等距離にある点である中心点を算出する算出手段と、前記中心点の成分を前記磁気データのオフセットとして設定する設定手段と、を備える。3次元磁気センサから順次出力される磁気データから、予め決められた4点選抜条件を満たす4つの磁気データを選抜し、選抜された4つの磁気データを成分とする4点から等距離にある点である中心点を算出することにより、オフセットの算出に統計処理を用いる必要がなくなるため、効率よくオフセットを算出することができる。尚、算出されたオフセットの信頼性を統計処理によって評価することも可能である。2前記磁気センサ制御装置は、入力された複数の前記磁気データを格納するバッファをさらに備えてもよい。前記選抜手段は、nn=2、3又は4番目の前記磁気データを選抜する前に予め決められた所定の選抜条件を満たすn-1番目の前記磁気データを選抜し、n-1番目までの前記磁気データとして選抜されなかった前記磁気データを前記バッファから取得してn番目の前記磁気データの選抜候補としてもよい。4点選抜条件を満たす4つの磁気データを、多数の磁気データから一度に選抜するためには選抜試行回数が大きくばらつき、選抜に要する最大処理量が膨大になる可能性がある。そこで、選抜条件を段階的に設定し、n番目の磁気データをある条件で選抜する前に別の選抜条件を満たすn-1番目の磁気データを選抜しておくことにより、選抜に要する最大処理量を低減することができる。さらに、n番目の磁気データをある条件で選抜するときに、n-1番目までの磁気データとして選抜されなかった磁気データを再び選抜候補とすることにより、オフセットを算出するために必要な磁気データの個数を低減することができる。その結果、磁気データのオフセットを算出するために必要な磁気データを収集するために必要となる、3次元磁気センサを搭載している移動体の操作量が低減されるし、オフセットの算出時間が短縮される。3前記選抜手段は、選抜候補の3つの前記磁気データを格納するための3つのデータ構造体に、入力された前記磁気データを格納しながら、3つの前記データ構造体に格納された3つの前記磁気データが予め決められた3点選抜条件を満たすまで、前記データ構造体を更新し、前記3点選抜条件を満たす3つの前記磁気データを選抜してもよい。4点選抜条件を満たす4番目の磁気データを選抜する前に、3番目までの磁気データの選抜を済ませておくことにより、選抜に要する最大処理量を低減することができる。3番目の磁気データの選抜をする過程では、1つずつ磁気データが更新される、3つの磁気データを格納可能な3つのデータ構造体を用いることができる。磁気データを格納するためのデータ構造体は、例えば、磁気データの3成分を格納するための3つの変数を要素とする配列として定義することができる。4前記選抜手段は、最後に入力された前記磁気データを3つの前記データ構造体のいずれかに格納するとき、最後に入力された前記磁気データで更新されることによって3つの前記データ構造体に格納されている3つの前記磁気データを成分とする3点を通る円弧の弦の長さが延長され少なくとも短縮されないように1つの前記データ構造体を選択し、選択した前記データ構造体を、最後に入力された前記磁気データで更新してもよい。3つの磁気データを成分とする3点を通る円は、最終的に求まるオフセットを成分とする点を中心とする球の断面円の円周になる。その断面円を正確なオフセットを成分とする点を中心とする球の断面円に近づけるためには、その断面円の面積が広く、その断面円を規定する3点が円周上で広い範囲に満遍なく分散していることが望ましい。したがって、3つの磁気データを成分とする3点を通る弦の長さは長い方が望ましい。そこで、最後に入力された磁気データを3つのデータ構造体のいずれかに格納するときには、3つのデータ構造体に格納されている3つの磁気データを成分とする3点を通る円弧の弦の長さがデータ構造体の更新によって長くなるように、更新対象となるデータ構造体が選択されることが望ましい。5前記選抜手段は、3つの前記データ構造体の更新回数が予め決められた所定回数を超えると3つの前記データ構造体をリセットしてもよい。3点選抜条件を満たす3つの磁気データが選抜されている過程において2番目までの磁気データが選抜された後に磁気センサが存在している磁界が激変した場合などには、3点選抜条件を満たす磁気データがいつまでも入力されない可能性がある。このような問題を未然に防止するため、3つのデータ構造体の更新回数が予め決められた所定回数を超えたときには3つのデータ構造体をいったんリセットすることが望ましい。その結果、変化後の磁界について磁気データが3つの空のデータ構造体に格納されることになるため、3点選抜条件が満たされる3つの磁気データがいつまでも選抜されないという問題は起こらなくなる。6前記3点選抜条件は、前記データ構造体に格納された3つの前記磁気データを成分とする3点を頂点とする三角形の正三角形に対する歪みに相関する条件を含んでもよい。3つの磁気データを成分とする3点を通る円は、最終的に求まるオフセットを成分とする点を中心とする球の断面円の円周になる。その断面円を正確なオフセットを成分とする点を中心とする球の断面円に近づけるためには、その断面円を規定する3点が円周上で等間隔に分散していることが望ましい。したがって、3つの磁気データを成分とする3点を頂点とする三角形の正三角形に対する歪みに関して3点選抜条件を設定することが望ましい。3つの磁気データを成分とする3点を頂点とする三角形が正三角形であるとき、3点が円周上で等間隔に分散していることになる。三角形の正三角形に対する歪みは三角形のいくつかの属性に着目して定義することができる。7-9例えば、前記3点選抜条件は、前記三角形の内角のばらつきが予め決められた所定範囲内にあることを含んでもよい。また例えば、前記3点選抜条件は、前記三角形の辺の長さのばらつきが予め決められた所定範囲内にあることを含んでもよい。また例えば、前記3点選抜条件は、前記三角形の重心から各頂点までの距離のばらつきが予め決められた所定範囲内にあることを含んでもよい。。値のばらつきは数学的に任意に定義することができるが、条件判定に必要な計算量や処理時間や、条件判定の過程で得られた計算結果の再利用可能性などを勘案して定義することが望ましい。10したがって、前記3点選抜条件は、下記の3行3列の対称行列Aの最大固有値に対する中間固有値の比が所定値以上であることを含むことが望ましい。ただし、pii=0,1,2は前記三角形の各頂点であり、d3は前記三角形の重心である。11前記4点選抜条件は、選抜候補の4つの前記磁気データを成分とする4点を頂点とする四面体の正四面体に対する歪みに相関する条件を含んでもよい。4つの磁気データを成分とする4点は、最終的に求まるオフセットを成分とする点を中心とする球面を規定する。その球面を、正確なオフセットを成分とする点を中心とする球面に近づけるためには、その球面を規定する4点が球面上の広い範囲に満遍なく分散していることが望ましい。その球面を規定する4点が球面上で満遍なく分散しているとき、それらの4点を頂点とする四面体は正四面体となる。したがって、選抜候補の4つの磁気データを成分とする4点を頂点とする四面体の正四面体に対する歪みに関して4点選抜条件を設定することが望ましい。四面体の正四面体に対する歪みは正四面体のいくつかの属性に着目して定義することができる。12-14例えば、前記4点選抜条件は、前記四面体の各頂点の立体角のばらつきが予め決められた所定範囲内にあることを含んでもよい。また例えば、前記4点選抜条件は、前記四面体の各面の面積のばらつきが予め決められた所定範囲内にあることを含んでもよい。また例えば、前記4点選抜条件は、前記四面体の重心から各頂点までの距離のばらつきが予め決められた所定範囲内にあることを含んでもよい。既に述べたとおり値のばらつきは数学的に任意に定義することができるが、条件判定に必要な計算量や処理時間や、条件判定の過程で得られた計算結果の再利用可能性などを勘案して定義することが望ましい。15したがって、前記4点選抜条件は、下記の3行3列の対称行列Bの各固有値のいずれか2組のそれぞれの比がそれぞれ予め決められた所定値より大きいことであることが望ましい。尚、1組の固有値の比のしきい値所定値の組み合わせを1通りだけ決めておいてもよいし、しきい値の組み合わせを複数通り決めておき、2組の固有値のそれぞれの比がいずれかの組み合わせに相当する2つのしきい値よりもそれぞれ大きいことを4点選抜条件としてもよい。ただし、pii=0,1,2は前記四面体の各頂点であり、d4は前記四面体の重心である。尚、本発明に備わる複数の手段の各機能は、構成自体で機能が特定されるハードウェア資源、プログラムにより機能が特定されるハードウェア資源、又はそれらの組み合わせにより実現される。また、これら複数の手段の各機能は、各々が物理的に互いに独立したハードウェア資源で実現されるものに限定されない。また、本発明は、磁気センサ制御装置としてだけでなく、磁気センサ制御装置と3次元磁気センサとを組み合わせた磁気測定装置としても、磁気センサ制御方法としても、磁気センサ制御プログラムとしても特定可能である。以下、本発明の実施の形態を以下の順に説明する。[1.全体説明]1-1.基本原理1-2.ハードウェア構成1-3.ソフトウェア構成[2.処理の流れ]2-1.バッファ更新2-2.1点目の選抜候補仮決定2-3.2点目の選抜候補仮決定2-4.3点目までの選抜3点の更新3点選抜条件選抜検証3点のリセット2-5.4点目の選抜概要4点選抜条件方位球の算出方位球の検証オフセットの設定[1.全体概要]1-1.基本原理はじめに本実施形態が利用する基本原理について説明する。本実施形態では、3次元磁気センサの出力に含まれる、それが搭載されている移動体の着磁成分を打ち消すためのオフセットを設定する。オフセットを求めるためには、3次元磁気センサの出力である磁気データを成分とするベクトル空間内の無数の点の集合である立体面に近似の球面を特定する。この球面を方位球の球面というものとする。方位球の中心点の成分がオフセットであり、その半径が磁界の強さである。3次元磁気センサの出力自体に計測誤差があるため、移動体が一定の磁界で回転しても、磁気データを成分とする点の集合は球面にはならない。本実施形態では、磁気データを成分とする4点を選抜し、選抜された4点から、それらを通る球面の中心点と半径とを求め、求めた球面の中心をオフセットとして設定する。この方法でオフセットに含まれる3次元磁気センサ自体の計測誤差による誤差を低減するためには、3次元磁気センサ自体の計測誤差が含まれている4つの磁気データを成分とする4点を、それら4点を通る球面上で広い範囲で満遍なく分散するように選抜することが重要である。以下、理解を容易にするため、2次元磁気センサに置き換えて捕捉説明する。図2は、2次元磁気センサの出力である磁気データを成分とする3点を通る方位円実線と、計測誤差がない理想2次元磁気センサの磁気データを成分とする無数の点の集合である真の方位円破線との関係を示している。2次元磁気センサの磁気データを成分とする3点がそれらを通る円周上の狭い範囲に分布しているとき、それらの3点から求まる方位円の中心×と、求めるべき理想2次元磁気センサの真の方位円の中心との距離は、図2Aに示すように大きくなる。これに対し、2次元磁気センサの磁気データを成分とする3点がそれらを通る円周上の広い範囲に満遍なく分布しているとき、それらの3点から求まる方位円の中心と、求めるべき理想2次元磁気センサの真の方位円の中心×との距離は、図2Aに示すように小さくなる。2次元磁気センサの磁気データを成分とする3点がそれらを通る円周で等間隔に分布しているとき、すなわちそれら3点を頂点とする三角形が正三角形になるとき、オフセットの誤差を最も小さくすることができる。3次元磁気センサでは、方位球を求めるために選抜される4点が、それらを頂点とする四面体が正四面体であるときに、オフセットの誤差を最も小さくすることができる。したがって、本実施形態では、磁気データを成分とする4点を、それらを頂点とする四面体の正四面体に対する歪みが特定のしきい値より小さくなるように選抜する。ここで、予め4点を選抜し、選抜された4点を通る球面を求め、その球面からオフセットを求める本実施形態の方法と、5点以上の多数の点を通る立体面に近似の球面を統計的手法によって求め、その球面からオフセットを求める方法とを比較しておく。統計的手法を用いる方法では、磁気データを成分とする点が偏在していたり、母集団に特異な磁気データが含まれていれば、それらの点から求まる方位球の中心は真の方位球の中心から大きくずれる。したがって、統計的手法を用いてオフセットの誤差を低減しようとすれば、統計的手法によって方位球を求める母集団のばらつきを検証したり、母集団を選抜する必要がある。本実施形態の方法では、適正な4点を選抜することができれば、計算量の多い統計的手法を用いずとも、統計的手法を用いた方法によって得られるオフセットの精度に遜色のない精度のオフセットを求めることができる。1-2.ハードウェア構成図3は、本発明が適用される移動体の一例である携帯型電話機3の外観を示す模式図である。携帯型電話機3には3次元磁気センサ4が搭載されている。3次元磁気センサは互いに直交するx、y、zの3方向の磁界のベクトル成分を検出することによって磁界の方向及び強さを検出する。携帯型電話機3のディスプレイ2には、文字や画像の各種情報が表示される。例えば、ディスプレイ2には、地図と、方位を示す矢印や文字が表示される。図4は、本発明が適用される3次元磁気センサ4と磁気センサ制御装置1とを備える磁気測定装置を示すブロック図である。3次元磁気センサ4は、様々な移動体に搭載され、地磁気による磁界ベクトルのx方向成分、y方向成分、z方向成分をそれぞれ検出するx軸センサ30とy軸センサ32とz軸センサ34とを備えている。x軸センサ30、y軸センサ32、z軸センサ34は、いずれも磁気抵抗素子、ホール素子等で構成され、指向性のある1次元磁気センサであればどのようなものであってもよい。x軸センサ30、y軸センサ32及びz軸センサ34は、それぞれの感度方向が互いに直交するように固定されている。x軸センサ30、y軸センサ32及びz軸センサ34の出力は、時分割して磁気センサI/FInterFace22に入力される。磁気センサI/F22では、x軸センサ30、y軸センサ32及びz軸センサ34からの入力が増幅された後にAD変換される。磁気センサI/F22から出力されるディジタルの磁気データは、バス5を介して磁気センサ制御装置1に入力される。磁気センサ制御装置1は、CPU40とROM42とRAM44とを備えている所謂コンピュータである。CPU40は、例えば携帯型電話機3等の移動体の全体制御を司るプロセッサである。ROM42は、CPU40によって実行される磁気センサ制御プログラムや、移動体の機能を実現するための種々のプログラム、例えばナビゲーションプログラムが格納されている、不揮発性の記憶媒体である。RAM44はCPU40の処理対象となるデータを一時的に保持する揮発性の記憶媒体である。尚、磁気センサ制御装置1と3次元磁気センサ1とを1チップの磁気測定装置として構成することもできる。1-3.ソフトウェア構成図5は、磁気センサ制御プログラム90の構成を示すブロック図である。磁気センサ制御プログラム90は、ナビゲーションプログラム98に方位データを提供するためのプログラムであって、ROM42に格納されている。方位データは地磁気の方向を示す2次元ベクトルデータである。尚、方位データは3次元ベクトルデータとしてナビゲーションプログラム98に提供されてもよい。CPU40が磁気センサ制御プログラム90を実行するとき、CPU40、RAM44及びROM42は磁気センサ制御装置として機能する。磁気センサ制御プログラム90は、バッファ管理モジュール92、オフセット設定モジュール94、方位演算モジュール96等のモジュール群で構成されている。バッファ管理モジュール92は、磁気センサ4から順次入力する磁気データをオフセット演算に用いるためにバッファに蓄積するプログラム部品であって、CPU40を入力手段として機能させる。磁気センサ4から順次入力される磁気データを順次選抜にかけ、選抜されなかった磁気データを廃棄することもできる。しかし、n点目n=2,3の選抜条件とnk点目k=1、2の選抜条件とが異なれば、n点目として選抜されなかった磁気データであっても、nk点目として選抜され得る。したがって、バッファ管理モジュール92が管理するバッファは、単に入力タイミングと処理タイミングのずれを緩衝するだけではなく、一度は選抜されなかった磁気データを再度選抜候補として利用可能にする目的でも利用される。尚、このバッファはハードウェアで構成されてもよいし、ソフトウェアで構成されてもよい。オフセット設定モジュール94は、バッファ管理モジュール92によって保持されている磁気データから4つの磁気データを選抜し、選抜された4つの磁気データからオフセットを算出し、算出したオフセットを設定するプログラム部品であって、CPU40を選抜手段、算出手段及び設定手段として機能させる。方位演算モジュール96は、磁気センサ4から順次入力される磁気データと、設定されているオフセットとを用いて方位データを生成するプログラム部品である。具体的には、方位演算モジュール96は、3次元ベクトルデータである磁気データの各成分からオフセットデータの各成分を引き算して得られる3成分のうちの2成分又は3成分全部を方位データとして出力する。ナビゲーションプログラム98は、目的地までの誘導経路を探索し、地図上に誘導経路を表示する周知のプログラムである。地図の認識のし易さから、地図は現実の方位に地図上の方位が一致するように画面表示される。したがって例えば、携帯型電話機3が回転すると、ディスプレイ2に表示される地図は地面に対して回転しないようにディスプレイ2に対して回転する。このような地図の表示処理に方位データが用いられる。もちろん、方位データは、単に南北東西を文字や矢印で表示するためにのみ用いられてもよい。[処理の流れ]2-1.バッファ更新図6は、バッファ更新の処理の流れを示すフローチャートである。図6に示す処理は、オフセットの更新要求が発生したときにCPU40がバッファ管理モジュール92を実行することによって進行する。ステップS100では、オフセットの算出に用いられる複数の磁気データを蓄積するためのバッファが初期化される。具体的には例えば、RAM44のバッファエリアに格納されているデータが削除される。ステップS102では、磁気センサ4からの新たな磁気データの入力が待たれる。磁気センサ4から新たな磁気データの入力があると、バッファの更新必要性が判定されるステップS104。携帯型電話機3がほとんど動いていない状況において、短い時間間隔で順次磁気センサ4から入力があると、連続入力される2つの磁気データを成分とする2点間の距離が近くなる。互いの距離が近い2点がオフセットを求めるために必要となる4点に含まれることは望まれない。また、磁気データを成分とする各点の距離が互いに近い複数の磁気データが限られた容量のバッファに格納されることは、メモリ資源の浪費であるし、無駄なバッファの更新処理を発生させる。そこで、バッファの更新必要性が次のように判定される。例えば、直前に入力された磁気データを成分とする点と最後に入力された磁気データを成分とする点との距離があるしきい値より小さければ、バッファの更新必要性がないと判定され、最後に入力された磁気データはバッファに格納されることなく破棄される。そうでない場合、バッファの更新必要性があると判定される。その結果例えば、図7に示す順序で磁気データの入力があったときには、黒丸で表された磁気データはバッファに格納されず、白丸で表された磁気データはバッファに格納されることになる。尚、図7では磁気データの入力順序が白丸及び黒丸の添え字で表されている。上記の判定条件に加えてさらに次の条件を加えてバッファの更新要否を判定すると、キャリブレーションの成功確率を上げることができる。ここでバッファに格納されたNqmax個のデータ列をq0,q1,qNmax1とし、集合Qを、Q={qi0≦I≦Nqmax1}とする。追加的な更新条件:あるしきい値qminに対し、磁気データを成分とする点qが、iqminを満たすときに限り、最後の磁気データを格納してバッファを更新する。尚、キャリブレーションの失敗とは、オフセットの更新要求が発生して磁気データの蓄積が開始された後に、蓄積された磁気データからはオフセットを求めることができなかった結果として、それまでに蓄積された磁気データを全て破棄することをいう。バッファの更新必要性があると判定されると、バッファが更新されるステップS106。更新アルゴリズムは例えばFIFOFirstInFirstOutとする。2-2.1点目の選抜候補仮決定図1は、オフセット設定の処理の流れを示すフローチャートである。図1に示す処理は、オフセットの更新要求が発生したときにCPU40がオフセット設定モジュール94を実行することによって進行する。尚、オフセット設定モジュール94の実行によって以下に述べる処理が進行している時には、バッファ管理モジュール92による処理がマルチタスク環境で並行して進行している。ステップS200では、選抜候補が全て破棄される初期化が実行される。具体的には、オフセット設定モジュール94によって宣言される、選抜候補を格納するための4つのデータ構造体p0、p1、p2、p3がリセットされるとともに、バッファも初期化される。データ構造体p0、p1、p2、p3には、追って説明があるように、4点目までが選抜されてオフセットが設定されるまで、選抜候補としての磁気データが格納される。それぞれのデータ構造体p0、p1、p2、p3は、磁気データの3成分を格納するための3つの変数からなる配列である。ステップS202では、前述したバッファの更新が待たれる。バッファが更新されると、1点目の選抜候補が仮決定されるステップS204。すなわち、バッファ初期化ステップS200後に最初に入力された磁気データが1点目の選抜候補となる。1点目の選抜候補はデータ構造体p0に格納される。尚、1点目の選抜候補が格納されるデータ構造体p0は、追って説明があるように更新される可能性があるため、この処理では1点目の選抜候補が仮決定されているに過ぎない。2-3.2点目の選抜候補仮決定ステップS206では、再びバッファの更新が待たれる。バッファが再び更新されると、2点目の選抜候補が仮決定される。すなわち、バッファ初期化ステップS200後に2番目に入力された磁気データが2点目の選抜候補となる。2点目の選抜候補はデータ構造体p1に格納される。尚、2点目の選抜候補が格納されるデータ構造体p1も、追って説明があるように更新される可能性があるため、この処理では2点目の選抜候補が仮決定されているに過ぎない。2-4.3点目までの選抜3点の更新ステップS210ではリセットカウンタがリセットされる。リセットカウンタは予め決められたカウント回数でカウントアップするように設定される。このリセットカウンタは、2点目の選抜候補の仮決定後に3点目の選抜候補が決定されずに、いつまでもオフセットの算出が完了しない問題が発生することを未然に防ぐために用いられている。具体的には、2点目の選抜候補の仮決定直後に携帯型電話機3が存在している磁界が激変したにもかかわらず、2点目までの選抜候補が更新されない場合には、3点目の選抜候補が決定されない可能性がある。後述するように選抜候補の3点を通る円の大きさが一定範囲内に収まっていて且つ3点を頂点とする三角形が所定条件を満たさない限り、3点目の選抜候補が決定されることがないにも関わらず、磁界の強さが激変すればそれらの条件が満たされないからである。ステップS212及びステップS214では、新たな磁気データの入力があるとリセットカウンタがインクリメントされる。すなわち、2点目の選抜候補がステップS208で最初に仮決定された後に入力される磁気データの個数がカウントされる。ステップS216では、再びバッファの更新が待たれる。バッファが再び更新されると、ステップS218では、3点選抜条件によって選抜される候補として保持するため、最後に入力されバッファに最後に格納された磁気データを、現に存在している3点目までの選抜候補のいずれを更新して保持するべきかが決定される尚、3点選抜条件を用いた選抜が実行されていなければ、2点目までの選抜候補が存在しているだけであるが、実行される処理内容は同じである。すなわち、最後に入力されバッファに最後に格納された磁気データがいずれのデータ構造体p0、p1、p2に格納されるかが決定される。なぜならば、データ構造体p0、p1、p2は意味づけが次のように異なるデータ構造体だからである。データ構造体p0、p1、p2に格納される磁気データを成分とする3点は、それらが同一直線上にない限りにおいて、それらを通る円弧を一義的に規定する。データ構造体p0、p1はその円弧の両端の点の成分である磁気データを格納するデータ構造体として意味づけされている。データ構造体p2はその円弧の中間点の成分である磁気データを格納するデータ構造体として意味づけされている。したがって、3点目が選抜されるまで、3点目までの選抜候補を保持するために、最後に入力されバッファに最後に格納された磁気データがいずれのデータ構造体p0、p1、p2に格納されるかが決定されなければならない。ところで、データ構造体p0、p1、p2に対して意味づけがこのようにされているのは、次の理由による。選抜候補である3点は、選抜候補の4点を通る方位球の球面上に位置することになる。前述したとおり、方位球を求めるために用いられる4点が、それらの4点を通る球面上で広い範囲に満遍なく分散しているほど、オフセットの誤差は小さくなる。したがって、選抜候補である3点を通る円弧の弦の長さがある程度までは長いほど、オフセットの誤差は小さくなり、その弦の長さが短すぎるとオフセットの誤差が大きくなる。このため、選抜候補である3点を通る円弧の弦の長さがある程度までは長くなるように、磁気データがバッファに格納される度に、3点目までの選抜候補を更新することが望ましい。図8は選抜候補の3点の更新を説明するための模式図である。今、データ構造体p0、p1、p2に図8Bに示す磁気データが格納されているものとする。図8に示す1、4、5、6の各数字は、バッファへの格納順を管理するための数字であって、その数字でバッファ内で管理されている磁気データが各データ構造体に格納されていることを意味している。ここでは各数字で管理されている磁気データを磁気データ1、磁気データ4、磁気データ5、磁気データ6ということにする。この状態では、選抜候補の3点を通る円弧の弦は、磁気データ1を成分とする点と磁気データ5を成分とする点とを結ぶ線分破線である。次に、磁気データ6がバッファに格納されたとする。このとき、3つの磁気データを成分とする3点が通る円弧の弦は、p0、p1、p2の定義によれば、p1に格納されている磁気データを成分とする点とp0に格納されている磁気データを成分とする点との距離として算出される。したがって、仮に、磁気データ6を成分とする点の、磁気データ1、4、5を成分とする3点とに対する位置関係が図8Aに示す状態だとすれば、p0に格納されている選抜候補を更新しなければ、円弧の弦が長くなったという計算結果は得られない。また仮に、磁気データ6が円弧の弦を長くしない値である場合には、p2に格納されている選抜候補を更新しなければ、計算結果としては円弧の弦は短くなるため、p2に格納されている選抜候補を更新する必要がある。3つの磁気データを成分とする3点が通る円弧の弦が更新毎に少なくとも短くならず最も効率よく伸張される条件は、次のように導かれる。バッファに最後に格納された磁気データをqとする。p0、p1、p2は、ここでは各データ構造体に格納されている磁気データとする。図9では、q、p0、p1、p2を成分とする点が黒丸で表され、それらの4点を通る方位球が実線で表され、p0、p1を通り線分p0p1に垂直な2つの面S0及びS1が破線で表されている。qによって、選抜候補である3点を通る円弧の弦が長くなる範囲は、面S0及びS1に挟まれ線分p0p1によって貫かれている空間の外側にqを成分とする点があるときである。このとき、次式3、4が成立する。式3が成り立つ場合、p2をp1に更新し、新たにp1をqで更新することによって弦を延長することができる。式4が成り立つ場合、p2をp0に更新し、新たにp0をqで更新することによって弦を延長することができる。これらの何れでもない場合、p2をqで更新するが、弦は延長されない。ステップS220では、上記のようにして決定された、更新すべき選抜候補が、バッファに最後に格納された磁気データで更新される。その結果、例えば図8Bに示す磁気データが格納されていたデータ構造体p0、p1、p2は、図8Cに示すように更新される。このとき、選抜候補であった3点を通る円は、その円を含む平面に交わる平面に含まれる新たな円に更新される。またこの処理によって選抜候補であった3点を通る円の面積は大きくなる傾向がある。3点選抜条件ステップS222では、3つの選抜候補である磁気データが3点選抜条件の1つを満たしているかが判定される。3点の選抜条件は2つの観点から導かれている。第一の観点は、選抜候補である磁気データを成分とする3点がそれら3点を通る円周上で十分ばらついているか、すなわち、それら3点を頂点とする三角形が正三角形に近くなっているか、という観点である。したがって、第一の観点での選抜が実行されるときには、選抜候補である磁気データを成分とする3点を頂点とする三角形の正三角形に対する歪みが算定される。第二の観点は、選抜候補である磁気データを成分とする3点を通る円の面積が十分大きいか、という観点である。この3点を通る円の面積が小さいときは、これらの3点を通る方位球の球面上で3点が狭い範囲に分布しているか、正確なオフセットを算出するに当たって想定外の磁界が測定されていることになる。またこれらの3点を通る円の面積が大きすぎるときは、正確なオフセットを算出するに当たって想定外の磁界が測定されていることになる。したがって、第二の観点で選抜が実行されるときには、選抜候補である磁気データを成分とする3点を通る円の半径が算定される。尚、以下の説明では、第一の観点で選抜候補が選抜されるべきかを判定するための条件を単に3点選抜条件ともいい、第二の観点で選抜候補が選抜されるべきかを判定することを、3点選抜の検証ともいうものとする。まず、ステップS222で適用される第一の観点から3点選抜条件を説明する。本実施形態では、図10に示すように選抜候補である磁気データを成分とする3点を頂点とする三角形の正三角形に対する歪みが、その三角形の重心d3を始点とし各頂点を終点とするベクトルの和を用いて表現される3行3列の対称行列の固有値によって評価される。三角形の重心d3は次式5によって求められる。第一の観点から導かれる3点選抜条件は、次式6によって定義される対称行列Aの固有値λA1、λA2、λA3のうち中間固有値λA2の最大固有値λA1に対する比が予め決められた所定のしきい値E0以上であることである。式6は、pid3とすると式7のようにも書ける。ただし、以下の通りである。対称行列Aの定義から、全ての固有値は非負実数である。計算誤差を考慮しなければ最小固有値λA3は0である。第一の観点から導かれた3点選抜条件は、上述したとおり、次式14で定義される評価量EAがしきい値E0に対して、EA≧E0を満たすことである。ところで、選抜候補である磁気データを成分とする3点を頂点とする三角形の正三角形に対する歪みは、その三角形の内角のばらつき、その三角形の辺の長さのばらつき、その三角形の重心から各頂点までの距離のばらつき、などによって定義することができる。さらに、これらのばらつきは、前述した対称行列Aの固有値を用いた評価量EAによって定義することができる。したがって、第一の観点から導かれる3点選抜条件は、選抜候補である磁気データを成分とする3点を頂点とする三角形の内角のばらつき、又は、その三角形の辺の長さのばらつき、又は、その三角形の重心から各頂点までの距離のばらつきが予め決められた所定範囲内にあることであるともいえる。第一の観点から導かれた3点選抜条件が満たされなかった場合、リセットカウンタがカウントアップしているかが判定されステップS224、カウントアップしていなければステップS216の処理に戻って、これまで説明した処理を繰り返す。すなわち、最後にバッファに格納された磁気データを新たな選抜候補とするための、データ構造体p0、p1、p2の更新処理が繰り返される。カウントアップしている場合、2点目の選抜候補の仮決定直後に携帯型電話機3が存在している磁界が激変しているなどの事情によって、3点目までの選抜がいつまでも完了しない可能性があるため、ステップS200の処理に戻ってバッファ及びデータ構造体p0、p1、p2が全てリセットされる。選抜検証第一の観点から導かれた3点選抜条件が満たされた場合、第一の観点で選抜された磁気データが第二の観点によって検証されるステップS226。この処理では、前述したとおり、選抜候補である磁気データを成分とする3点を通る円の半径が算定される。そのような半径を算定する様々な方法が知られているが、本実施形態では、全体の計算量を低減し、処理を高速化するため、対称行列Aの固有ベクトルを用いた方法が採用される。この方法を採用し、かつ対称行列Aの前述の固有値を算定する手法としてヤコビ法を採用すれば、全体の計算量が低減される。以下、具体的に説明する。行列Aの固有ベクトルを基底とする座標系でp0、p1、p2を書き直すと、最小固有値λA3に対する固有ベクトルlA3の成分については各点について一定の値をとるので、ともに大きさ1で正規化された最大固有値λA1に対する固有ベクトルlA1及び中間固有値λA2に対する固有ベクトルlA2の成分のみに着目し、各点を2次元空間上の3点とみなせば、連立一次方程式により円の方程式を求めることができる。さらに具体的に説明する。まず行列Lを次式15で定義する。行列Lは、ヤコビ法を用いて対称行列Aの前述の固有値を算定する過程で求まる。点pi0≦i≦2に対し、次式16の一次変換を行い、piの第三成分を無視し、第一成分及び第二成分だけを用いればよい。したがって、次式17が導かれるが、右辺第三項は無視できるため、2次元空間内の3点p0p1p2を通る円を求めることに帰結される。円の中心点をc3とすると、中心点を求める連立一次方程式は次式18である。c3rは特に後に用いる必要のない値であるが、3元1次連立方程式を立てるために追加されている。最終的に半径r3は、次式19で算定されるc3とp0とのユークリッド距離として求まる。以上のようにして求められた、三点選抜条件を満たす3つの磁気データを成分とする3点を通る円の半径がしきい値rmaxからrminまでの範囲内であれば、合格とする。そうでない場合、不合格となってステップS200の処理に戻り、バッファ及びデータ構造体p0、p1、p2がリセットされる。2-5.4点目の選抜概要以上の処理によって3点目までが選抜された時点では、最終的に求まる方位円の十分に大きな断面円の円周上で十分にばらついて位置する3点が選抜されている。それらの3点を含む平面上にない1点を成分とする磁気データを用いてそれらの4点を通る球面の方程式を求めることはできる。しかし、4点目が無作為に選ばれたのでは、オフセットの誤差は小さくならない。そこで本実施形態では、オフセットの誤差を低減するために、複数の4点目の選抜候補に対して、最適な4点目の選抜が試行される。すなわち、バッファに格納されている磁気データを全て4点目の選抜候補とした選抜が試行される。バッファに空きが残っている場合には、全ての空きが埋まるまで4点目の選抜は実行されないステップS228。4点目が選抜されるとき、図11に示されるように、3点目までの選抜候補としては決定されなかった磁気データ仮決定されたがその後に棄却されたものも含まれる。が、4点目の選抜候補として順次選抜にかけられる。図11では、バッファで磁気データの入力順を管理するための識別子が1~qmaxまでの数字で示されている。小さい数字ほど、先に入力された磁気データが格納されるデータ構造体を表している。4点選抜条件ステップS230では、既に選抜された3点を成分とする磁気データに対して、バッファに格納されている全ての磁気データが1つづつ順次組み合わせられ、4つの磁気データが4点選抜条件を満たしているかが順次判定され、バッファに格納されている磁気データのうちで4点選抜条件を満たすもののうち、最も評価が高い1つが4点目として選抜される。4点選抜条件は、選抜候補である磁気データを成分とする4点がそれら4点を通る球面上で十分ばらついているか、すなわち、図12に示したそれら4点を頂点とする四面体が正四面体に近くなっているか、という観点で4点目を選抜する条件である。したがって、選抜候補である磁気データを成分とする4点を頂点とする四面体の正四面体に対する歪みが算定される。四面体の正四面体に対する歪みは、その四面体の各頂点の立体角のばらつき、その四面体の面の面積のばらつき、その四面体の重心から各頂点までの距離のばらつき、などによって定義することができる。これらのばらつきは、その四面体の重心d4を始点とし各頂点を終点とするベクトルの和を用いて表現される3行3列の対称行列Bの固有値によって評価される。四面体の重心d4は次式20によって求められる。対称行列Bは次式で定義される。対称行列Bの最大固有値λB3に対する最小固有値λB1の比が大きいほど、四面体の正四面体に対する歪みが小さい、すなわち、その四面体の各頂点の立体角のばらつき、その四面体の面の面積のばらつき、その四面体の重心から各頂点までの距離のばらつきのいずれも小さいといえる。したがって、4点選抜条件は、次式22によって求まるEB1が最大になることである。バッファに格納されている全ての磁気データについてEB1が算出され、その最大値が確定した時点で、EB1が最大になる4点目の磁気データが最終的な選抜候補としてデータ構造体p3に格納される。このようにして確定した最終的な4点目までの選抜候補である磁気データが格納されているp0、p1、p2、p3について、さらに別の評価量EB2が次式23によって求められる。尚、λB2は対称行列Bの中間固有値である。予め決められた所定のしきい値E2、E3に対し、次式24が満たされない場合、球面の方程式を求める際に大きな誤差が混入するおそれがあるため、ステップS200の処理に戻ってバッファ及びデータ構造体p0、p1、p2、p3が全てリセットされる。次式24が満たされる場合、4点目の選抜候補が最終的に選抜される。ただし、2つのしきい値の1通りの組み合わせを用いて4点目の選抜が行われるよりも、2つのしきい値の組み合わせを2組以上設定し、次式25が全てのiに対して成り立たないときにバッファ及びデータ構造体p0、p1、p2、p3が全てリセットされる方が、キャリブレーションの失敗回数を減らすという観点で合理的である。方位球の算出以上の処理によって4点目までの磁気データが選抜されると、すなわち、p0、p1、p2、p3が確定すると、方位球の中心点及び半径が求められるステップS232。方位球の中心点c4=c4x、c4y、c4zは次式によって求められる。c4rは特に後に用いられない値であるが、4元1次連立方程式を立てるために追加されている。方位球の半径rは、c4とp0とのユークリッド距離として次式27によって求められる。方位球の検証ステップS234では、算出された方位球の妥当性が検証される。方位球の半径が予め決められた所定の範囲内にない場合、算出された方位球の中心点はオフセットとして採用されず、ステップS200の処理に戻ってバッファ及びデータ構造体p0、p1、p2、p3が全てリセットされる。本実施形態では、選抜された4つの磁気データだけではなく、さらにバッファに格納されている一部又は全部の磁気データを用いて方位球の妥当性が統計処理によって検証される。この検証は、オフセットの誤差のばらつきを小さくするためにはある程度有効であるが、必ずしも必要な処理ではない。この検証では、次式28によって評価量Sが求められ、予め決められた所定のしきい値Stに対し、S>Stである場合には、算出された方位球の中心点はオフセットとして採用されず、ステップS200の処理に戻ってバッファ及びデータ構造体p0、p1、p2、p3が全てリセットされる。そうでない場合には、次のようにオフセットが設定される。オフセットの設定算出された方位球が妥当であった場合、ステップS236においてオフセットが設定される。すなわち、算出された方位球の中心点の各成分がオフセットの各成分として設定される。"