(57)【要約】      （修正有）【課題】浮動小数点実効値の構造化されたセットを含む数値データを圧縮するコンピュータ実装方法を提供する。【解決手段】方法は、セットの対象実効値に関連した浮動小数点予測値を計算するステップを含む。計算するステップは、上記セットのサブセットの実効値の符号、指数、及び／又は仮数に対応する整数に対して演算を実行するステップを含む。また、上記方法は、対象実効値及び予測値から得られた整数の差を表すビットシーケンスを記憶するステップを含む。【選択図】図１
2011238236.tif 000002
【特許請求の範囲】
【請求項１】
浮動小数点実効値の構造化されたセットを備える数値データをコンピュータが圧縮する方法であって、浮動小数点の値は符号、指数、及び仮数によって定義されており、前記方法は、
前記セットの対象実効値に関連した浮動小数点予測値を計算するステップであって、前記計算するステップは、前記セットのサブセットの実効値の前記符号、前記指数、及び／又は前記仮数に対応する整数において演算を実行するステップを含む、ステップと、
前記対象実効値及び前記予測値から得られた整数の差を表すビットシーケンスを記憶するステップと
を含むことを特徴とする方法。
【請求項２】
前記計算するステップ及び前記記憶するステップは、前記セットの順序に従って反復されることを特徴とする請求項１に記載の方法。
【請求項３】
前記セットの少なくとも１つの初期実効値が記憶されており、前記計算するステップは前記セットの他の実効値のすべてにわたって反復され、各反復において、前記計算するステップに、
前記反復の前記計算された予測値を閾値と比較するステップと、
前記予測値が前記閾値より大きいときには、前記反復の前記対象実効値と前記反復の前記予測値とから得られた整数の差を表すビットシーケンスを記憶するステップ、又は、
前記反復に関する前記予測値が前記閾値よりも小さいときには、前記反復の前記対象実効値を記憶するステップと
が続くことを特徴とする請求項２に記載の方法。
【請求項４】
前記セットの前記実効値は、幾何学的オブジェクトに関連づけられた座標であり、望ましくは前記幾何学的オブジェクトの制御点の座標であることを特徴とする請求項１乃至３のうちいずれかに記載の方法。
【請求項５】
前記サブセットの前記実効値は、前記幾何学的オブジェクトの別の制御点に隣接する前記幾何学的オブジェクトの制御点の座標であり、前記対象実効値が前記別の制御点の座標であることを特徴とする請求項４に記載の方法。
【請求項６】
前記予測値は、前記別の制御点に関連付けられた少なくとも１つのパラメータ、前記サブセットの前記実効値、及び、前記別の制御点に隣接する各制御点に関連付けられた少なくとも１つのパラメータに従って決定されることを特徴とする請求項５に記載の方法。
【請求項７】
前記少なくとも１つのパラメータは、前記幾何学的オブジェクトのそれぞれの節点ベクトルに従って決定されることを特徴とする請求項６に記載の方法ことを特徴とする請求項６に記載の方法。
【請求項８】
前記幾何学的オブジェクトはＮＵＲＢＳ曲面であり、
前記少なくとも１つのパラメータはグレビルパラメータであることを特徴とする請求項７に記載の方法。
【請求項９】
前記対象実効値及び前記予測値から得られた前記整数は、前記対象実効値及び前記予測値をそれぞれ定義する文字列によって定義された前記整数であることを特徴とする請求項１乃至８のいずれかに記載の方法。
【請求項１０】
前記差を表す前記ビットシーケンスは
多くの有効ビットを示すプレフィックスビットシーケンスと、
‐前記差に等しいボディビットシーケンスであって、先頭のゼロ及び望ましくは１に等しい最初のビットが削除され、サイズが前記有効ビットの数である、ボディビットシーケンスと
を備えることを特徴とする請求項１乃至９のいずれかに記載の方法。
【請求項１１】
前記演算は、整数の加算、減算、乗算及び／若しくは除算を含む算術演算、及び／又は、ビットシフト及び／若しくは先頭ゼロカウントを含むビット単位の演算を備えることを特徴とする請求項１乃至１０のうちのいずれかに記載の方法。
【請求項１２】
数値データを伸張するコンピュータ実装方法であって、前記数値データは、浮動小数点実効値の構造化されたセットを備える圧縮された形態のデータであり、浮動小数点値は、符号、指数、及び仮数によって定義されており、前記数値データは、前記セットの対象実効値から得られた整数の差を表すビットシーケンスと、前記対象実効値に関連した浮動小数点予測値と、を含み、前記方法は、
前記予測値を計算するステップであって、前記セットのサブセットの実効値の前記符号、前記指数及び／又は前記仮数に対応する整数において演算を実行するステップと、
前記予測値から得られた整数を有する前記ビットシーケンスの前記加算から対象実効値を得るステップと
を含むことを特徴とする方法。
【請求項１３】
浮動小数点実効値の構造化されたセットを備える数値データによってモデル化されたオブジェクトを記憶するデータベースであって、浮動小数点値が符号、指数、及び仮数によって定義される、データベースと、
グラフィカルユーザインターフェイスと、
請求項１−１１のいずれかに記載の方法に従って数値データを圧縮し、及び／又は、請求項１２に記載の方法に従って数値データを伸張する手段と
を備えることを特徴とするコンピュータ支援設計システム。
【請求項１４】
コンピュータによる実行のための命令を含むコンピュータプログラムであって、
前記命令は、請求項１−１３のうちいずれかに記載の方法を実行する手段を含むことを特徴とする方法。
【請求項１５】
請求項１４に記載に従うコンピュータプログラムが記憶されていることを特徴とするコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータプログラム及びシステムの分野に関し、特に数値データを圧縮し、伸張するコンピュータ実装方法に関する。
【背景技術】
【０００２】
コンピュータ支援技術は、コンピュータ支援設計、すなわちＣＡＤ（Computer-Aided Design）を含むことが知られている。ＣＡＤは、製品のデザインを作成するソフトウェアソリューションに関連する。同様にＣＡＥとは、Computer-Aided Engineering（コンピュータ支援エンジニアリング）の頭字語である。例えばＣＡＥは将来の製品の物理的挙動をシミュレートするソフトウェアソリューションに関連する。ＣＡＭとは、コンピュータ支援製造（Computer-Aided Manufacturing）を表しており、製造工程及び動作を定義するソフトウェアソリューションを通常含む。
【０００３】
コンピュータ支援技術において、グラフィカルユーザインターフェイス（ＧＵＩ：graphical user interface）は、技術の効率性に関して重要な役割を果たす。モデル化されたオブジェクトを操作し、及び／又は、ナビゲートするのに必要とされる操作の大部分が、ＧＵＩでユーザ（例えば、設計者）によって実行され得る。特にユーザは、製品を形成するモデル化されたオブジェクトを作成し、修正し、削除し、そして製品を調査して、モデル化されたオブジェクトが例えば、製品構成を介してどのように相互に関連しているかを理解する。伝統的にこれら操作は、ＧＵＩ側に設けられた専用のメニュー及びアイコンを介して実行される。最近、ＣＡＴＩＡ等のＣＡＤシステムは、製品の表示の付近でこれら機能の呼び出しを可能にする。設計者は、もはやマウスをメニュー及びアイコンに向けて移動させる必要はない。よって操作は、マウスの届く範囲内で利用可能である。さらに操作は、意味的に振る舞う。すなわち設計者によって選択された所定の動作に対して、ＣＡＤシステムは、マウスの付近において設計者が選択し得る作成者選択操作に従って一群の新規な動作を設計者に示し得る。
【０００４】
ビジネス戦略を示す製品ライフサイクル管理（ＰＬＭ：Product Lifecycle Management）ソリューションも知られている。従って、ＰＬＭは、企業が構想からそれらの寿命の終わりにいたるまで広範囲の事業構想にわたって製品開発のために製品データを共有し、共通の処理工程を適用し、企業の知識を活用することを幇助するビジネス戦略に関連する。アクター（会社の部門、事業パートナー、サプライヤ、相手先商標製造会社（ＯＥＭ）、及び顧客）を含むことによって、ＰＬＭは、このネットワークが製品及び製造工程を概念化し、設計し、製造し、サポートする単一のエンティティとして動作することを可能にし得る。
【０００５】
いくつかのＰＬＭソリューションは、例えばデジタルモックアップ（製品の３Ｄグラフィックモデル）を生成することによって製品を設計し、開発することを可能にする。デジタル製品は、適切なアプリケーションを使用して最初に定義され、シミュレートされ得る。そしてスリム化されたデジタル製造処理が定義されモデル化され得る。
【０００６】
（ＣＡＴＩＡ、ＥＮＯＶＩＡ、及びＤＥＬＭＩＡという商標の下）本件出願人によって提供されるＰＬＭソリューションは、製品工学知識を組織化するエンジニアリングハブ、製造エンジニアリング知識を管理するマニファクチャリングハブ、並びにエンジニアリングハブ及びマニファクチャリングハブの双方に事業の統合及び結合を可能にするエンタープライズハブを提供する。システムのすべてが、製品、処理工程、リソースをリンクするオープンオブジェクトモデルを実現して、動的な知識ベースの製品生成と意志決定支援を可能にする。この意志決定支援は、最適化された製品定義、製造準備、製造、及びサービスを推進する。
【０００７】
かかるＰＬＭソリューションは、製品に関するリレーショナルなデータベースを含む。データベースは、一群のテキストデータと、データ間の関係を含む。データは、その製品に関連する技術データを通常含む。このデータは、データの階層化によって順序付けされ、検索可能となるようにインデックスが付されている。データは、モデル化されたオブジェクトを表しており、多くの場合モデル化された製品及び処理工程である。
【０００８】
製品の構成、処理工程の知識、及びリソース情報を含む製品のライフサイクル情報は、共同するように、編集されることを通常意図されている。
【０００９】
多くのシステム及びプログラムが、オブジェクト（又はパーツ）の設計又はオブジェクトのアセンブリの市場において提供され、ＣＡＴＩＡという商標の下本件出願人によって提供されたもの等の製品を形成する。
【００１０】
これらＣＡＤシステムは、ユーザがオブジェクトの若しくはオブジェクトのアセンブリの複雑な３次元（３Ｄ）モデル又は２次元（２Ｄ）モデルを構成し操作することを可能にする。よってＣＡＤシステムは、エッジ又はラインを使用して、特定の場合には曲面を使用して、モデル化されたオブジェクトの表示を提供する。ライン又はエッジは、様々な手法で、例えば非一様有理Ｂスプライン（ＮＵＲＢＳ：non-uniform rational B-splines）で表され得る。これらＣＡＤシステムは、主に幾何学構造の設計書であるパーツ又はパーツのアセンブリをモデル化されたオブジェクトとして管理する。具体的にはＣＡＤファイルは、設計書を含み、この設計書から幾何学構造が生成され、幾何学構造は生成されるべき表示を可能にする。幾何学構造及び表示は、単一のＣＡＤファイル又は複数のＣＡＤファイル内に記憶され得る。ＣＡＤシステムは、モデル化されたオブジェクトを設計者に表すためのグラフィックツールを含む。これらツールは、複合オブジェクトの表示に用いられ、ＣＡＤシステムにおけるオブジェクトを表すファイルの典型的なサイズは、１つのパーツあたり１メガバイトの範囲内にあり、アセンブリは、何千ものパーツを含み得る。ＣＡＤシステムは、電子ファイルで記憶されたオブジェクトのモデルを管理する。
【００１１】
よって、ＣＡＤソフトウェアを用いユーザによって生成された２Ｄモデル又は３Ｄモデルは、点、ベクトル、曲線、曲面、及びメッシュ等の幾何学的オブジェクトを含む。これらオブジェクトは、浮動小数点の値並びに他のデータタイプを用いてたいてい表される。
【００１２】
浮動小数点値は、（数学的意味において）実数に属する数を表すのに使用されるデータタイプの値である。浮動小数点値の最も広く使用された標準的なフォーマットは、ＩＥＥＥ７５４フォーマット標準規格において、特にＩＥＥＥ７５４−１９８５において定義された倍精度浮動小数点である。このフォーマットにおいて実数
【００１３】
【数１】
2011238236.tif 000003
【００１４】
を表す浮動小数点の値ａは、６４ビットの符号、指数、及び仮数によって定義される。ａがＩＥＥＥ７５４標準規格の６４‐ビット浮動小数点の値である場合、我々は、以下の要素を用いてａ＝（ｓ、ｅ、ｍ）と表記し得る。この要素は、符号ｓ（１ビットでコード化された整数）、指数ｅ（１１ビットでコード化された整数）、及び仮数ｍ（５２ビットでコード化された整数）である。そして標準規格の定義によって、０＜ｅ＜２11―１である場合、ａが正規化されていると述べられ、ａは実数
【００１５】
【数２】
2011238236.tif 000004
【００１６】
を表す。ここでbias＝２11-1―１＝１０２３である。ｅ＝０であり、ｍ＝０である場合、ａはゼロであると言われ、実数
【００１７】
【数３】
2011238236.tif 000005
【００１８】
を表している。ｅ＝０であり、ｍが０とは異なる場合、ａは非正規化されていると言われ、実数
【００１９】
【数４】
2011238236.tif 000006
【００２０】
を表している。ここで、bias＝２11-1―１＝１０２３である。ｅ＝２11―１である場合、ａは無効であると言われ、実数を表していない。
【００２１】
ＣＡＤソフトウェアによって提供された基本機能は、第１のセッション中にユーザによって生成され又は変更された永続的なサポートでモデルを記憶する能力であり、これらモデルが（例えば、ローカルディスクにおける又はサーバにあるファイルにおいて）後に更なる使用のために再度開かれることを可能にする能力である。モデルは、このソフトウェアの異なるバージョン又は別のプラットフォームにもかかわらず、例えば後に同一のソフトウェアの第２のセッションで開かれ得る。プラットフォームは、ハードウェア（異なるＣＰＵ）に関して異なり得るし、又はソフトウェアに関して（異なる言語コンパイラ又はインタプリタ）異なり得る。オープン後の第２のセッションにおけるモデルは、記憶する前の第１のセッションにおけるモデルと厳密に同じであるべきである。したがって記憶は無損失であるに違いない（すなわち、情報損失を全く伴わない）し、異なるプラットフォームにわたって安定的であるに違いない（すなわち、モデルを開くことは、モデルを定義するのに使用されるデータタイプをサポートする異なるプラットフォームにおける同一の結果を提供する）。
【００２２】
（例えば、データを圧縮し、伸張することによって）モデルの記憶及び再オープンがモデルを定義するために記憶されたデータを変更することを伴うとき、特にモデルの変換が算術演算を伴う場合、安定性の問題が生ずる。実際、異なるプラットフォームは、データのタイプに依存して、同じ演算に対して異なる結果を与える。例えば、ａ、ｂ、及びｃが浮動小数点値である場合、いくつかのプラットフォームは、演算ａ＋ｂ＋ｃを（ａ＋ｂ）＋ｃとして計算するだろう。一方いくつかの他のプラットフォームは、同一の演算をａ＋（ｂ＋ｃ）として計算するだろうし、必ずしも同一の結果をもたらすとは限らないだろう。その上浮動小数点の算術は、計算を実行するために媒介を伴う。これら媒介は、異なる結果をもたらす異なるプラットフォームに対して同一のビット長を有しない。したがって、演算が同一のデータに対して実行されるものの、異なるプラットフォームに対して実行される同一の浮動小数点の演算は、異なる結果をもたらす。デヴィッド・ゴールドバーグによる「“What every scientist should know about floating point arithmetic”, ACM Computing Surveys, Vol.23, No １, March 1991」という文献は、浮動小数点値に対する演算に関する問題を提示している。以下において（複数の）演算が任意の標準的なプラットフォームに対して同じ結果をもたらす場合、安定性は、演算（又は一連の演算）に対して確実にされると言われるだろう。
【００２３】
モデルが簡単な実装における永続的なサポートで、すなわち圧縮することなく記憶され得る。この実装において、浮動小数点値と所定の幾何学的オブジェクトを定義する他のデータとは、それ自体記憶される。この簡単な方法（すなわち、圧縮を伴わない）は、ＣＡＴＩＡにおいて、及び他のＣＡＤソフトウェアにおいて特に使用される。かかる方法を用いると、記憶は無損失である。実際、モデルを定義するデータは、記憶する前に変更されないし、それゆえデータの損失もあり得ない。また、記憶は安定している。実際、データが圧縮されないので、モデルを定義するデータは、モデルを再び開くとき、変換されることにならない。しかしながらかかる方法は、ＣＡＤモデルの記憶サイズを最適化しない。
【００２４】
一般的なデータ圧縮の分野において、デルタ‐エンコーディングは、データを圧縮する手法である。このデータは、対象オブジェクト自体の代わりに対象オブジェクトと周知の参照オブジェクトとの差異を記憶することによって、対象オブジェクトを表す。対象オブジェクトより少ないスペースで差異を記憶することができる場合、これは有利である。
【００２５】
予測のエンコーディングは、改良型のデルタエンコーディングである。このデルタエンコーディングにおいて参照オブジェクトは、データにおいて取られた実際のオブジェクトでないが、予測関数を使用して１つ又は数個の実際のオブジェクトから計算される。したがって予測関数は、参照オブジェクトを実際のオブジェクトから予測する。対象オブジェクトをそれ自体記憶することの代わりに（すなわち、圧縮することなく）、予測された参照オブジェクトと対象オブジェクトとの差異が記憶される。予測が現在のオブジェクトに近似すればするほど差異が小さくなり、差異を記憶するのに要する記憶スペースが、より小となる。したがって圧縮の効率性は、予測の精度に依存する。
【００２６】
量子化は、別の圧縮技術である。量子化は、浮動小数点値を含むデータを圧縮するために使用され、場合によっては、デルタ‐エンコーディング又は予測エンコーディングとの組み合わせによって、使用される。量子化は、浮動小数点値を整数にマッピングする処理である。量子化は、いくつかの浮動小数点値の最下位ビットを切り捨てることを伴うので、データの損失を生成する。
【００２７】
John Danskinによる「”Higher Bandwith Ｘ” (1994) and the Ph.D. Thesis "Compressing the X Graphics Protocol" (1995)」という文献は、デルタ‐エンコーディングの形態である「相対座標」を使用して幾何学構造を圧縮する方法を記載している。しかしながら幾何学構造は、整数座標を用いて定義される。したがって本方法は幾何学構造が高いレベルの精度で定義されるＣＡＤモデルに不適切である。
【００２８】
Michael Deeringによる「"Geometry Compression" (1995)」という文献は、浮動小数点数の量子化及び隣接の間のデルタ‐エンコーディングを使用する三角メッシュの圧縮について記載している。またCosta Touma及びCraig Gotsmanによる「"Triangle Mesh Compression" (1998)」という文献は、量子化及び予測エンコーディングを使用する三角メッシュの圧縮について記載している。Gabriel Taubin及びJarek Rossignacによる「"Geometric Compression Through Topological Surgery" (1998)」という文献及びMartin Isenburg及びPierre Alliezによる「"Compressing Polygon Mesh Geometry with Parallelogram Prediction." (2002)」という文献は、異なる予測スキームを用いた類似の手法について記載している。予測は、メッシュ内の他のポイントの線形結合によって計算される。これらすべての方法が、量子化のために不可逆圧縮を生成する短所を特に提示する。
【００２９】
L.Ibarria他による「"Out-of-core Compression and Decompression of Large ndimensional Scalar Fields" (2003)」という文献は、浮動小数点データに対して予測エンコーディング方法について記載している。予測関数は、浮動小数点の算術計算を伴うので、安定性が異なるプラットフォームわたって保証されないという欠陥を有する。実際、上記に説明したように、浮動小数点の算術計算は、異なるプラットフォームに対して同一の結果を生じない。
【００３０】
Isenburg他による「"Lossless Compression of Floating-Point Geometry" (2004)」という文献は、浮動小数点データに対する予測エンコーディング方法について記載している。上記したように、安定性は異なるプラットフォームわたって保証されない。
【００３１】
米国特許番号第５７９３３７１号、第５８２５３６９号、第５８４２００４号、第５８６７１６７号、第５８７００９４号、第５９０５５０２号、第５９０５５０７号、第５９３３１５３号、第６０４７０８８号、第６１６７１５９号、第６２１５５００号、第６２３９８０５号、第６５２２３２７号、第６５２５７２２号、及び第６５３２０１２号は、類似の方法について記載しており、これら文献のいずれも安定性の問題に対処していない。
【００３２】
Engelson他による「"Lossless Compression of High-volume Numerical Data from Simulations" (2000)」という文献は、浮動小数点値の圧縮について記載している。値は幾何学的オブジェクトを表していないが、値は、むしろスムーズに変化し且つ所定変数によってパラメータ化される値のシーケンスである。この文献は、線形的に増加するシーケンス
【００３３】
【数５】
2011238236.tif 000007
【００３４】
である３つの値（ａ1，ａ2，ａ3）のシーケンスの一例を提供する。このシーケンスに対する単純な予測エンコーディングスキームは、ａ3の予測としてａp3＝ａ2＋ａ2−ａ1を取ることであろう。予測値と対象実効値との差異は、Δ2ａ3＝ａ3−ａp3＝（ａ3−ａ2）−（ａ2−ａ1）である。シーケンスが線形的であるので予測は良好であり、Δ2ａ3は小さい。すなわち（ａ1，ａ2，Δ2ａ3）が記憶され得るし、当初のシーケンスより小なる記憶サイズを取る。上記文献によって注目された問題は、予測の計算は浮動小数点の演算を伴い、これは異なるプラットフォームに対して安定性を阻むことである。よって上記文献は、浮動小数点数の整数表示の観念を導入している。ｐが浮動小数点の６４‐ビット数である場合、その整数表示Int（p）は、ｐと同じ６４‐ビット列によって表される整数として定義される。整数表示は、ｂ1＝Int（ａ1）、ｂ2＝Int（ａ2）、ｂ3＝Int（ａ3）として定義される。圧縮は、シーケンス（ｂ1，ｂ2，ｂ3）に対して上記説明した予測‐エンコーディングを適用し、Δ2ｂ3＝（ｂ3−ｂ2）−（ｂ2−ｂ1）である（ｂ1，ｂ2，Δ2ｂ3）を記憶する。安定性を確実にする目的をもって、そのドキュメントは、以下のステップを実行することを提案している。このステップは、ｍの連続浮動小数点値をそれら整数表示に変換するステップ、及びこれら整数表示に対して古典的な整数減算のシーケンスを計算するステップである。
【００３５】
しかしながらいくつかの数値を用いて、Engelson他の方法は、完全に効率が悪い。例えばドキュメントの記法を使用して、浮動小数点値のシーケンス（ａ1＝１．５，ａ2＝２．０，ａ3＝２．５）が考えられる（浮動小数点の値は、本明細書において、彼らが示している実数を参照している）。このシーケンスは線形的であり、差異Δ2ａ3が厳密に０であるので、上記説明した予測‐エンコーディングスキームは、浮動小数点算術を使用して、これら浮動小数点数に対して非常に効率的に理論上は適用されるべきである。しかしながら文献の方法を適用する場合、Δ2ｂ3＝（ｂ3−ｂ2）−（ｂ2−ｂ1）は５１の有効ビットを有する。これは２つの浮動小数点の値の整数表示の整数の差は、２つの浮動小数点値の浮動小数点の差異に依存するだけではなく、２つの浮動小数点自体の値自体にも依存するという事実に帰属する。上記実施例において、ｂ3−ｂ2は、ｂ2−ｂ1とは異なる。なぜならば２．５及び２．０の浮動小数点表示が同じ指数を有するものの、１．５の浮動小数点表示が同じ指数を有しないからである。したがって圧縮の効率性は、満足のいくものではない。よってこの方法の第１の欠陥は、この方法がいくつかのタイプのシーケンスにおいて十分良好に働かない（すなわち、圧縮率が十分高くない）というものである。文献は、「シーケンスInt（ａ）が多項式によって近似され得る場合、固定されたステップ差アルゴリズムは良好に働く」とさらに述べている。しかしながら実際のアプリケーションにおいて、ａが多項式によって近似され得ると仮定する方が良い。したがって実際のアプリケーションにおいて、シーケンスInt（ａ）において整数差異を実行する方法は、不良な予測を生じるであろう。
【００３６】
別の欠陥としては、Δの計算が減算のみを使用し、他の演算を使用し得ないというものである。例えば乗算及び除算が整数表示に適用され得ない。言い換えると２つの浮動小数点の数の整数表示の差異は、同一の場合における２つの浮動小数点の数の差異を表し得るが（少なくとも上述した例外を有する）、しかし整数表示の乗算（又は除算若しくは加算）は、２つの浮動小数点数間の乗算（又は除算若しくは加算）を表すものでない。例えば加算に対して、これは顕著である。なぜならばそれら整数表示に変換された２つの浮動小数点の値の指数が加算されるからであろう。これは、使用され得る予測スキームを厳しく制限する。したがって、実行された予測は、あまり正確ではなく、圧縮率が影響される。
【００３７】
Ratanaworabhan他による「"Fast Lossless Compression of Scientific Floating-Point Data" (2006)」という文献、及び、Peter Lindstrom及びMartin Isenburgによる「"Fast and Efficient Compression of Floating-Point Data" (2006)」という文献は、同一の欠陥を有する同様の技術を記載している。
【００３８】
ＣＡＤファイルの記憶サイズを効率的に低減させるのに適した方法を提供することが、発明の目的である。かかるソリューションは、ストレージインフラストラクチャのコストを低減するだろうし、ネットワーク上でＣＡＤモデルを送信し又は受信する速度を増大することができるであろう。
【発明の概要】
【００３９】
この目的は、数値データを圧縮するコンピュータ実装方法を用いて達成される。この数値データは、浮動小数点実効値の構造化されたセットを含む。浮動小数点値は、符号、指数、及び仮数によって定義されている。本方法は、そのセットの対象実効値に関連した浮動小数点予測値を計算するステップであって、その計算するステップは、そのセットのサブセットの実効値の符号、指数、及び／又は仮数に対応する整数に対して演算を実行するステップと、対象実効値及び予測値から得られた整数の差を表すビットシーケンスを記憶するステップと、を含む。
【００４０】
好ましい実施形態は、以下に示す特徴の１又は複数を含み得る。
‐計算するステップ及び記憶するステップはそのセットの順序に従って反復される。
‐そのセットの少なくとも一方の初期実効値は記憶され、計算するステップは、セットの他方の実効値のすべてに対して反復される。それに続いて、各反復において、反復に関して計算された予測値を閾値と比較するステップ、予測値が閾値より大きいときには、反復の対象実効値と反復の予測値から得られた整数の差を表すビットシーケンスを記憶するステップと、又は、反復の予測値が閾値よりも小さいときには、反復の対象実効値を記憶するステップが実行される。
‐そのセットの実効値は、幾何学的オブジェクトに関連づけられた座標であり、望ましくは幾何学的オブジェクトの制御点の座標である。
‐サブセットの実効値は、幾何学的オブジェクトの別の制御点に隣接する幾何学的オブジェクトの制御点の座標である。対象実効値は、別の制御点の座標である；
‐予測値は、別の制御点に関連付けられた少なくとも１つのパラメータ、サブセットの実効値、及び別の制御点に隣接する各制御点に関連付けられた少なくとも１つのパラメータに従って判定される。
‐少なくとも１つのパラメータは、幾何学的オブジェクトのそれぞれの節点ベクトルに従って判定される。
‐幾何学的オブジェクトはＮＵＲＢＳ曲面であり、少なくとも１つのパラメータはグレビルパラメータである。
‐対象実効値及び予測値から得られた整数は、対象実効値及び予測値をそれぞれ定義する文字列によって定義された整数である。
‐差を表すビットシーケンスは、多くの有効ビットを示すプレフィックスビットシーケンスと、差に等しいボディビットシーケンスと、を含む。先頭のゼロ及び望ましくは１に等しい第1のビットが、差となるように削除される。差のサイズは、有効ビットの数である。
‐演算は、整数の加算、減算、乗算、及び／又は、除算を含む算術演算と、及び／又は、ビットシフト及び／又は先頭ゼロカウントを含むビット単位の演算を含む。
【００４１】
この目的は、上記方法に従って圧縮され得たであろう数値データを伸張するコンピュータ実装方法を用いても達成される。本方法は、浮動小数点予測値を計算するステップであって、計算するステップは、セットの実効値の符号、指数、及び／又は仮数に対応する整数における演算を実行するステップと、予測値から得られた整数を有するビットシーケンスの加算から浮動小数点実効値を取得するステップと、を含む。
【００４２】
よって伸張する方法は、数値データを伸張するためのものであり得る。数値データは、浮動小数点実効値の構造化されたセットを含む圧縮された形態のデータであり、浮動小数点値は符号、指数、及び仮数によって定義され、数値データは、セットの対象実効値と、対象実効値に関連した浮動小数点予測値とから得られた整数の差を表すビットシーケンスを含む。そして本方法は、予測値を計算するステップであって、計算するステップは、そのセットのサブセットの実効値の符号、指数、及び／又は仮数に対応する整数における演算を実行するステップと、予測値から得られた整数を有するビットシーケンスの加算から対象実効値を得るステップと、を含む。
【００４３】
実施形態において、伸張する方法は、以下に示す特徴の任意のもの又は組み合わせを含み得る。
‐計算するステップ及び取得するステップはそのセットの順序に従って反復される；
‐各反復において、サブセットは、先の反復において取得された対象値及び／又は数値データに含まれる対象値を含む。
‐数値データは、そのセットの少なくとも一方の（それ自体記憶された）初期実効値をさらに含み、計算するステップは、そのセットの他方の実効値のすべてに対して反復される。計算するステップに続いて、各反復において、反復の計算された予測値を閾値と比較するステップと、予測値が閾値より大きいときに、（上記したように）予測値から取得された整数を有する（数値データに含まれる）ビットシーケンスの加算から対象実効値を取得するステップ、又は反復の予測値が閾値よりも小さいとき（数値データにおいてそれ自体含まれる）対象実効値を読み出すステップが行われる。
‐そのセットの実効値は、幾何学的オブジェクトに関連づけられた座標であり、望ましくは幾何学的オブジェクトの制御点の座標である。
‐サブセットの実効値は、幾何学的オブジェクトの別の制御点に隣接する幾何学的オブジェクトの制御点の座標であり、対象実効値は、別の制御点の座標である；
‐予測値は、別の制御点に関連付けられた少なくとも１つのパラメータ、サブセットの実効値、及び別の制御点に隣接する各制御点に関連付けられた少なくとも１つのパラメータに従って判定される。
‐少なくとも１つのパラメータは、幾何学的オブジェクトのそれぞれの節点ベクトルに従って判定される。
‐幾何学的オブジェクトはＮＵＲＢＳ曲面であり、少なくとも１つのパラメータは、グレビルパラメータである。
‐対象実効値及び予測値から得られた整数は、対象実効値及び予測値をそれぞれ定義する文字列によって定義された整数である。
‐差を表すビットシーケンスは、多くの有効ビットを示すプレフィックスビットシーケンス、及び先頭のゼロ及び望ましくは１に等しい第１のビットが削除され、サイズが有効ビットの数である、差に等しいボディビットシーケンスを含む。
‐演算は、整数の加算、減算、乗算及び／又は除算を含む算術演算、及び／又はビットシフト及び／又は先頭ゼロカウントを含むビット単位の演算を含む。
【００４４】
この目的は、コンピュータ支援設計システムを用いても達成される。コンピュータ支援設計システムは、浮動小数点実効値の構造化されたセットを含む数値データによってモデル化されたオブジェクトを記憶するデータベースと、グラフィカルユーザインターフェイスと、上記圧縮方法に従って数値データを圧縮し、及び／又は上記伸張方法に従って数値データを伸張する手段と、を含む。
【００４５】
この目的は、コンピュータによる実行のための命令を含むコンピュータプログラムを用いても達成され、その命令は、上記方法を実行する手段を含む。
【００４６】
この目的は、コンピュータ読み取り可能な記憶媒体を用いても達成される。このコンピュータ可読記憶媒体は、記憶された上述のコンピュータプログラムを有する。
【００４７】
本発明の更なる特徴及び利点が、非限定的な実施例として与えられているように、以下に記載された添付図面を参照して、以下に示す本発明の実施形態の説明から明らかであろう。
【図面の簡単な説明】
【００４８】
【図１】圧縮方法の実施例のフロー図である。
【図２】圧縮方法の実施例のフロー図である。
【図３】圧縮方法の実施例のフロー図である。
【図４】圧縮方法の実施例のフロー図である。
【図５】ＮＵＲＢＳの圧縮の実施例を示す図である。
【図６】ＮＵＲＢＳの圧縮の実施例を示す図である。
【図７】ＮＵＲＢＳの圧縮の実施例を示す図である。
【図８】ＮＵＲＢＳの圧縮の実施例を示す図である。
【図９】ＮＵＲＢＳの圧縮の実施例を示す図である。
【図１０】ＮＵＲＢＳの圧縮の実施例を示す図である。
【図１１】ＮＵＲＢＳの圧縮の実施例を示す図である。
【図１２】ＮＵＲＢＳの圧縮の実施例を示す図である。
【図１３】伸張方法の実施例を示す図である。
【図１４】本発明の方法を実行するのに適切なクライアントコンピュータシステムの実施例を示す図である。
【発明を実施するための形態】
【００４９】
本発明は、データを処理するコンピュータ実装方法に関する。特に本発明は、浮動小数点実効値の構造化されたセットを含む数値データを圧縮するコンピュータ実装方法に関する。本方法は、上記セットの対象実効値に関連した浮動小数点予測値を計算するステップを含む。計算するステップは、整数における演算を実行するステップを含む。整数は、上記セットのサブセットの実効値の符号、指数、及び／又は仮数に対応する。本方法は、整数の差を表すビットシーケンスを記憶するステップを含み、整数は、対象実効値及び予測値から得られる。かかるコンピュータ実装方法は、浮動小数点実効値の構造化されたセットを含む数値データの効率的な圧縮を可能とし、圧縮は無損失であり、浮動小数点のデータタイプをサポートする異なるプラットフォームにわたって安定的である。かかる方法は、浮動小数点実効値の構造化されたセットを含む数値データを含むファイルの記憶サイズを効率的に低減させるのに適している。
【００５０】
圧縮は無損失であり、異なるプラットフォームにわたって安定的であるので、本方法は、特に２Ｄモデル又は３Ｄモデルの設計図を含むＣＡＤファイルに対して適用され得る。実際、ＣＡＤモデルは、浮動小数点実効値の構造化されたセットを含む数値データによって特定される。よって本方法は、かかるＣＡＤファイルを効率的に圧縮することができ、それゆえＣＡＤファイルの記憶サイズを低減させる。ファイルを「効率的に」圧縮するとは、圧縮率が２０％統計的に高いことを意味している。圧縮方法がより高い圧縮率を統計的に成し遂げる場合、圧縮方法は、別の圧縮方法に対してより効率的であると言われる。本方法は、記憶のインフラストラクチャのコストを低減することができるだろうし、ネットワーク上でＣＡＤモデルを送信し又は受信する速度を増大することができる。
【００５１】
しかしながら本方法は、一般的に数値データの圧縮に指向されている。言い換えると本方法は、数値データの記憶サイズを低減して、かかるデータを含む任意のファイルのサイズをも低減することを可能とする。データは、データが数に関連することを意味する数値である。特に、本方法は、浮動小数点実効値の構造化されたセットを含む任意の数値データをも圧縮するのに利用され得る。
【００５２】
浮動小数点値はＩＥＥＥ７５４フォーマット規格により定義されたデータタイプのものであり得る。しかしながら本方法は、他の類似のデータタイプに指向されている。例えば浮動小数点値は、標準の６４ビットより小さいビット又は大なるビットにおいて符号化され得る。浮動小数点値は、異なる構造のデータタイプ、例えば指数、仮数、非符号のものであり得る。より一般的には本方法は、少なくとも２つの整数によって表されるあらゆる数値データタイプにも適用する。しかしながら明確にするために、以下において浮動小数点の値を、ＩＥＥＥ７５４のタイプであると考慮する。
【００５３】
実際の浮動小数点実効値のセットは構造化されている。「構造化されている」とは、実際の浮動小数点値によって表される数字のセットがコヒーレントであることを意味する。すなわち数は互いから完全に独立していない。このコヒーレンスは、お互いから完全に独立していないセットの実際の浮動小数点の値に反映される。セットが構造化されているおかげで、セットの実際の浮動小数点の値の各々の値は、セットの他の実際の浮動小数点の値から予測され得る。構造は、数値データによって表されたオブジェクトの種類に依存し得る。この場合予測は、予測スキームに従って実行され得る（場合によっては、本方法の第１のステップにおいて一度に若しくはすべてに対して予め判定され及び選択され得る）。予測スキームは、数値データによって表されたオブジェクトの種類に依存し得る。定義によって、同一の種類のオブジェクトは同一の手法により構造化されるという事実に起因して、本方法は、この場合同一の予測スキームを用いて、所定の種類のあらゆるオブジェクトをも表す数値データを圧縮するのに適切である。
【００５４】
本方法のアプリケーションの一例が、時間経過の株の価格であるオブジェクトにおけるものである。実際の浮動小数点の値のセットは、時系列上の価格の値を表し得る。ある時刻の株の価格は他の時刻の価格から完全に独立しているというわけではないことがよく知られている。金融定量分析は、予測するために、例えばブラウン運動に基づいて、異なる予測スキームを使用する。同一の予測スキームが、異なる株に対して使用され得る。別の例は、都市の温度を表す実際の浮動小数点の値のセットを含む。またしてもこの場合、２つの都市間の地理的な近接性はそれら温度間の依存関係を伴い得る。したがって都市の温度を表す浮動小数点の値は、隣接する都市の温度を表す浮動小数点の値から予測され得る。別の例は、オブジェクトに印加された力場を含む。オブジェクトに印加された力が、空間的なコヒーレンスを示すとき、力場は、構造化された実際の浮動小数点の値の１セットによって表される。例えば磁場は、一般的にかかるコヒーレンスを示す力場を誘起する。後でより詳細に説明する別の例は、ＣＡＤモデルの幾何学上表面である。かかる表面は、一般的にスムーズに変化し、表面のある点における位置は、表面の隣接点の位置に従って予測され得る。
【００５５】
本方法は、数値データを圧縮するために、（その構造は浮動小数点の値によって表される数字の構造から得られる）浮動小数点実効値のセットの構造を使用する。予測エンコーディングにおけるものと同様に、原理は、セットの実際の浮動小数点の値のうち１つを第１に選択することである。この値は、圧縮方法によって変換される値であるので、「対象」値と称される。本方法は、対象実効値に関連した浮動小数点予測値を計算する。言い換えると、本方法は、対象の予測値であり、必ずしも対象の実効値でない予測値を計算する。この計算は、セットの他方の実効値に従って実行され、対象の実効値を抽出する。予測値は、それ自身浮動小数点のデータタイプである。
【００５６】
セットが構造化され、予測スキームがこの構造に従って実行されるので、セットの他の値に従って実行される予測値の計算は、対象の実効値に比較的近い結果を提供する。したがって予測値と対象実効値との差異は、数ビットにおいてコード化され得る。この考えは予測のエンコーディングによってたいてい続くものである。
【００５７】
予測スキームはセットのサブセットの選択を含み得る。サブセットの浮動小数点の値が予測値の計算の元となる。サブセットは、対象値に従って選択され得る。サブセットの値は、対象浮動小数点値によって表される数の予測に対して理論的に関連している数を表している。この選択を実行する本方法は、数値データによって表されたオブジェクトの種類によって提供され得る。
【００５８】
予測値の計算は、整数に対して演算を実行するステップを含む。この演算は、浮動小数点値において実行されないので、安定性の問題が生じない。実際、標準的なプラットフォームは、同一の結果を用いて整数演算を実行する（浮動小数点値における演算とは対立する）。よって本方法は、整数において演算を実行するだけであるので、すべての標準的なプラットフォームにわたって安定的である。
【００５９】
整数は、上記セットのサブセットの実効値の符号、指数、及び／又は仮数に対応する。サブセットは、対象実効値の予測値を計算するのに使用される実効値を含む。本方法は、少なくとも予測に使用される実効値のために、符号、指数、及び／又は仮数に対して保存されたビットスロットを読取り、整数として何が読み取れるかを解釈する。あらゆる手法の解釈が本方法の範囲内にある。例えば本方法は、５２ビットでコード化された仮数を６４‐ビットの整数として解釈し得る。仮数に対応する整数は、例えば最初の１２ビットが０に等しく最後の５２ビットが仮数のビットである６４‐ビットの整数であり得る。逆に、仮数に対応する整数は、例えば最後の１２ビットが０に等しく且つ最初の５２ビットが仮数のビットである６４‐ビットの整数であり得る。より長い整数も使用され得る。一般に、符号、指数、及び／又は仮数の解釈は、予測スキーム（すなわち、予測値を計算するよう実行された演算のシーケンス）の次のステップに依存し、要求される精度に依存する。
【００６０】
整数は、サブセットの実効値の符号、指数、及び／又は仮数に対応するので、予測スキームは、実効値の浮動小数点の形態を利用する。実際、上述したEngelson他の方法のように、演算は、浮動小数点値当たり１つの整数を表すものを大まかに判定する代わりに、浮動小数点の特性に関していかなる考慮もすることなく、個別に考慮された符号、指数、及び／又は仮数を表すものにおいて実行され得る。特に整数の減算とは異なる演算も実行され得る。例えば符号、指数、及び／又は仮数において実行される整数の加算、乗算、除算が意味を成す。よって予測は洗練され、より正確である。より正確な予測は、高い圧縮率をもたらす。予測がどのように洗練されるかを示す実施例が、後に提供されている。
【００６１】
上記に説明したように、本方法は、整数の差を表すビットシーケンスを記憶するステップを含み、整数は、対象実効値及び予測値から得られる。このセットが構造化されているので、予測は、通常、対象実効値に近い予測値をもたらす。この場合対象実効値及び予測値から得られた整数間の差は、小さい。それゆえ差は、対象実効値のサイズより小さいサイズのビットシーケンスにおいて記憶され得る。したがって、このように対象実効値を記憶する代わりに、より小さいサイズのビットシーケンスが記憶される。ビットシーケンスは、対象実効値を取り出すために、伸張ステップにおいて使用され得る。ビットシーケンスは、整数間で実行される差を表すものであるので、圧縮の安定性と無損失品質が維持される。実際、２つの整数の差異は、情報損失することなく、すべての標準的なプラットフォームにおいて同じ結果をもたらす。対象実効値及び予測値から得られた整数の取得について、後に詳細に説明する。
【００６２】
上記説明は、本方法のアプリケーションの一般的なケースに関するものである。図１を参照すると、一般的なケースは、予測値predktを計算するステップＳ１０と、ビットシーケンスＢkを記憶するステップＳ２０の単一のアプリケーションを含む。図１の実施例に示されているように、本方法はまた、計算ステップＳ１０の前に、浮動小数点実効値valkの構造化されたセットＥを提供するステップＳ０と、計算されるべき予測値predktが関連する上記セットの対象実効値valktを選択するステップＳ５と、を含む。
【００６３】
計算ステップＳ１０及び記憶Ｓ２０は、図２に示されているように、望ましくは反復される（すなわち、繰り返される）。各反復（すなわち、繰り返し）ｋにおいて、対象値valktは、セットＥの新しい選択された実効値であり、本方法の先の反復のうちの1つの対象値ではない。かかる反復が、セットＥの順序（０，．．．，ｋ−１，ｋ，ｋ＋１，．．．）に従って実行される。よってセットは、順序に従って、走査され（すなわち、解析され）、走査の各反復ｋにおいて、対象値の選択Ｓ５が、順序に続いて、kの番号がつけられた値valkが選択される。順序は、予め判定されている。例えば数値データは、順序に関する情報を含み得る。あるいは、順序は反復を実行する前に、開始時に任意に判定され得る。反復中に、それは動的に反復され得る。かかる方法は、数値データの全体的な圧縮を統計的に可能にせしめる。
【００６４】
図３に例示されるように、本方法は、セットの少なくとも一方の始めの実効値val0、例えば、１つの値のval0、２つの値（val0及びval1）、又は、３又はそれより多くの値（val0、val1、及びval2）を記憶Ｓ３とし、計算するステップＳ１０は、このセットの他方の実効値のすべてにわたって反復され得る。例えば、最初の値val0がＳ３において記憶されて、セットＥがｎの値を有する場合、計算するステップＳ１０は、残りの値val1、val2、…、valnにおいて反復され得る。あるいは、いくつかの残りの値は、スキップされ得る（しかしながら、これはセットを計算ステップＳ１０が実行された値に再定義することに等しい）。記憶するステップＳ２０は、それ自身、計算ステップＳ１０が実行されたすべての値又はいくつかの値に対して実行され得る。したがって始めの値は、それ自体記憶された値である（すなわち、圧縮されない）。よって始めの値は、計算ステップＳ１０及び記憶ステップＳ２０が実行される反復ｋの対象ではない。伸張するとき後に分かるように、予測はサブセットの実効値に基づいて実行され得る。したがって少なくともいくつかの値が、伸張の開始を許容するように記憶され得る。あるいは実効値の第１の予測は、実効値の記憶された手段に基づいて実行され得る。あるいは第１の予測は、数値データに含まれた他のパラメータに従って実行され得る。
【００６５】
図４に例示されるように、各反復ｋにおいて、計算ステップＳ１０に続いて、反復ｋの計算された予測値predktを閾値と比較するステップＳ１５が行われる。この場合記憶する次のステップにおいて、何が記憶されるかは、比較の結果に依存する。本方法は、ステップ２０において、又は先に説明したように、予測値predktが閾値より大きいときに、反復における対象実効値valktと反復kの予測値predktから得られた整数間の差Dkを表すビットシーケンスBkを記憶し、又は反復の予測値が閾値よりも小さいときに、ステップＳ２０’において、反復の非圧縮の対象実効値valktを記憶する。
【００６６】
各計算するステップＳ１０において、予測値predkt計算は、対象実効値valktに可能な限り近似するように計算される。しかしながら多くのコンテクストおいて、predktとvalktの差が、大きすぎて効率的に圧縮され得ないという可能性を有することが先験的に推定され得る。予測値predktが所定の閾値より小さい場合、predktとvalktの差がpredktよりも大であることにより、valktをコード化するのに使用されるビット数よりも高くなってしまうpredkt及びvalktから得られた整数間の差を表すビットシーケンスBkがもたらされるというリスクが存在する。例えば予測値predktが０付近である場合、ビットシーケンスＢｋが長過ぎるとき、実効値valktが予測値predktとは異なる符号を有するリスクが存在する。かかるビットシーケンスＢkの実施例が提供されるとき、これはさらに明確に現れるだろう。符号化スペースの生じ得る不要な増大を避けるためには、予測値が、閾値よりも小である場合に、valkt自身の圧縮の試みは全くなされない。その上ビットシーケンスＢkが判定されないので、全体的な処理速度が増大される。
【００６７】
閾値は、予測値predktの指数の値における閾値であり得る。言い換えるとpredktの指数が、閾値と比較される。かかる閾値は比較ステップＳ１５の高速化を確実にする。かかる閾値は、予め決められ得るし、アプリケーションのコンテクストに依存し得る。あるいは閾値は、数値データに従って判定され得るし、伸張中に再利用されるために記憶され得る。閾値の値は、予測値predktを計算Ｓ１０するのに使用される算術演算の丸めの精度を考慮し得る。また閾値は、先に計算された予測値（predk-1t，predk-2t，…）及び／又は関連付けられた実効値（valk-1t，valk-2t，…）に従って、動的に判定され得る。反復ｋの閾値は、valkt及びpredktに通常依存しない。閾値を用いた比較は、予測値が低い圧縮率をもたらす高い可能性を有する実効値の場合を処理することによって、より効率的な圧縮を提供する。
【００６８】
セットの少なくとも一方の初期実効値を記憶するステップＳ３は、図４に示されていないが、図３のように浮動小数点実効値valkの構造化されたセットＥを提供するステップＳ０の後において、本方法に含まれ得る。
【００６９】
セットの実効値は、幾何学的オブジェクトに関連付けられた座標、例えば幾何学的オブジェクトの制御点の座標であり得る。幾何学的オブジェクトの座標の浮動小数点座標を含む数値データは、高い割合のＣＡＤファイルの埋め合わせをする。よって本方法は特にＣＡＤファイルの圧縮に適切である。１つの実施例において、幾何学的オブジェクトは、ＮＵＲＢＳ曲面である。他の実施例において、幾何学的オブジェクトは、曲線、例えばＮＵＲＢＳ曲線であり、又は別のタイプの曲線若しくは曲面である。本方法は、一般に任意の幾何学的オブジェクトにも適用する。本方法の実施例が、明確にするために、ＮＵＲＢＳを参照して以下に詳細に説明されている。しかし以下の説明は本方法の他の使用に適用することが理解されるべきである。
【００７０】
ＮＵＲＢＳ曲面は、３D空間の値を有する２D空間において定義されたＣＡＤにおいて広く使用される曲面である。すなわちＳ（ｕ，ｖ）→（ｘ，ｙ，ｚ）。ＮＵＲＢＳ曲面は、２つの節点ベクトル及び制御点の２次元のアレイ、並びに場合によっては使用されるＣＡＤソフトウェアに依存する他のデータを用いて表される。通常節点ベクトルは、浮動小数点値のアレイである。制御点のアレイは、順序付けされ得る。各々の制御点は、座標ｘ、ｙ、ｚを有する３Ｄの点である。アレイにおける位置は２つのインデックスｉ及びｊを用いて定義される。ここで、
【００７１】
【数６】
2011238236.tif 000008
【００７２】
であり、
【００７３】
【数７】
2011238236.tif 000009
【００７４】
である。グレビルパラメータとして知られている１セットのパラメータが、節点ベクトルから計算され得るので、インデックスｉ又はｊの各値、グレビルパラメータ（ｕi，ｖj）に関連づけられ得る。伝統的にグレビルパラメータは、節点ベクトルの連続した値の定数に関する１組の手段である。「次数」と呼ばれるこの定数は、節点ベクトルの各次元（ｕ又はｖ）において異なり得る。一般に１組の次数（ｄ，ｇ）は、ＮＵＲＢＳ曲面を表すデータに属する。詳細については、Gerald Farinによる「"Curves and surfaces for Computer Aided Geometric Design", ed. Morgan Kaufmann, (2001)」という文献が、ＮＵＲＢＳ曲面の基本を提供している。
【００７５】
図５は、Ｍ＝５であり且つＮ＝４であるＮＵＲＢＳ曲面Ｓの実施例を提供する。座標ｘ、ｙ、ｚの制御点
【００７６】
【数８】
2011238236.tif 000010
【００７７】
は、グリッド５５の交差点である。上記説明したように、各制御点Ｐi,jに対して、表された１組のグレビルパラメータ（ｕi，ｖj）が上記説明したように計算され得る。例えば１組の表面の次数が（ｄ＝２、ｇ＝４）であり、表面の節点ベクトルが（ｕ＿knot1，…，ｕ＿knot6）及び（ｖ＿knot1，…，ｕ＿knot7）である場合、通常
【００７８】
【数９】
2011238236.tif 000011
【００７９】
及び
【００８０】
【数１０】
2011238236.tif 000012
【００８１】
となる。しかしながら、他の数式が使用され得る。
【００８２】
ＮＵＲＢＳの制御点の各々は、ｘ、ｙ、ｚ座標を表す３つの浮動小数点値を用いて定義される。アレイの次元がＭ＊Ｎである場合、ＮＵＲＢＳ曲面の制御点を記憶するのに必要な記憶サイズは、圧縮なしで３＊Ｍ＊Ｎ＊６４ビットである。出願人はいくつかの産業モデルにおいて、モデルのＮＵＲＢＳ曲面の制御点の座標を表す浮動小数点の値のサイズが、全モデルサイズの５０％以上を占めることに気付いている。したがって本方法は、ＮＵＲＢＳ曲面を有するＣＡＤファイルの圧縮に対して、特に有効である。
【００８３】
以下において、数値データを圧縮する方法のアプリケーションの実施例であって、この実施例において、セットの実効値は幾何学的オブジェクトに関連づけられた座標であり、計算ステップ及び記憶ステップは、セットの順序に従って反復される実施例が、図６乃至１２を参照して説明されている。この実施例において実効値は、ＮＵＲＢＳ曲面の制御点の座標である。曲面は示されていないが、図５の表面に類似している。図６乃至１２は、図５のグリッド５５と類似するグリッドのプロジェクション６０を表している。プロジェクション６０は、以下において「グリッド」と称される。グリッド６０の各交差点は、表面のそれぞれの制御点Ｐi,j＝（ｘi,j，ｙi,j，ｚi,j）を表しており、グリッドの垂直線は、左から右に伸びるインデックスｉを表しており、グリッドの水平線は、下部から上部に伸びるインデックスｊを表している。
【００８４】
この実施例において数値データは、節点ベクトルを含む。本方法は、このように節点ベクトルを記憶する先のステップを含む（すなわち、特定の圧縮スキームをともなわない）。上記説明したように圧縮処理は、セットの順序に従う浮動小数点実効値のセットを走査することを含む。数値データは制御点のインデックス（ｉ，ｊ）を提供する。インデックスは、セットの順序を定義するのに使用され得る。例えば
【００８５】
【数１１】
2011238236.tif 000013
【００８６】
及び
【００８７】
【数１２】
2011238236.tif 000014
【００８８】
である場合、制御点の間の順序は、（Ｐ0,0，…，Ｐ0,M-1，Ｐ1,0，…，Ｐ1,M-1，………，ＰN-1,0，…，ＰN-1,M-1）であり得る。言い換えると、インデックスｉ及びｊは、それぞれ下位の境界値からそれぞれ上位の境界値にいたるまで増大し、ｉは、ｊに対して優先される。従って浮動小数点実効値のセットが、
【００８９】
【数１３】
2011238236.tif 000015
【００９０】
となるよう順序化され得る。この場合セットを走査することは、次の制御点を走査する前に制御点の３つの座標の走査をもたらす。これにより予測値を計算するステップにおける３つの座標の使用が可能となる。あるいはこのセットは、
【００９１】
【数１４】
2011238236.tif 000016
【００９２】
のように順序化され得る。この場合セットの走査することは、すべてのｘ座標を走査し、次にすべてのｙ座標を走査し、次にすべてのｚ座標の走査をもたらすであろう。以下に説明される原理は、２つの代替的ソリューションの任意の実装を可能にする。
【００９３】
図６に示されるように実施例の方法は、それぞれ（０，０）、（１，０）、（０，１）のインデックスを有する３つの制御点Ｐ0,0、Ｐ1,0、Ｐ0,1を特定の圧縮スキームなしで記憶するステップＳ３を含む。実際には座標ｘ、ｙ、ｚの各々に対して、（（ｘ0,0，ｘ1,0，ｘ0,1）、（ｙ0,0，ｙ1,0，ｙ0,1）、（ｚ0,0，ｚ1,0，ｚ0,1））セットの３つの初期実効値がそれ自身（全体の９つの最初の実効値）記憶される。以下において浮動小数点実効値は、それらが表す座標によって、又はそれらが表す制御点によって差別なく参照される。
【００９４】
グリッドは下部から上部まで、及び左から右まで解析される。ステップＳ３で既に記憶された点は、スキップされる。図２−４のうちの１つを参照して説明した方法は、制御点の残りに適用される。図７は、本方法の４つの連続した反復（ｋ＝１１、ｋ＝１２、ｋ＝１３、及び、ｋ＝１４）を示す。各反復ｋにおいて（ｋは解析のインデックスｉ、ｊ及び記憶された始めの値の数によって判定され、この実施例で３＊３である）、対象実効値valktに関連する予測値predktを計算Ｓ１０するのに使用される実施例の予測スキームは、（以下の対象値に同化される）対象によって表された制御点Ｐt＝Ｐi_t,j_tのインデックス（ｉ＿ｔ，ｊ＿ｔ）に依存する計算を含む。これらインデックスは、上述された反復ｋのランクにリンクされている（ｋはｋ（ｉ＿ｔ，ｊ＿ｔ）と表され得る）。これらインデックスに依存して、本方法は先の反復で記憶された制御点のサブセットを判定する。本方法は多項式Ｑ（ｕ，ｖ）を判定するので、サブセットの制御点Ｐi,jの各々に対して、我々は、Ｑ（ｕi，ｖj）=Ｐi,jを有する。判定された多項式Ｑの次数に認められる最大数は，サブセットの制御点の数に関連する。よってＱの係数は、Ｐi,j及びパラメータ（ｕi，ｖj）の値に従って判定される。パラメータ（ｕi，ｖj）は、上記定義されたグレビルパラメータであり得る。対象制御点の予測値は、pred(i_t,j_t)＝Ｑ（ｕi_t，ｖj_t）として計算され得る。この予測は３つの座標ｘ、ｙ、及びｚに対して独自に定義される。そして数式は３つの座標（例えば、ＱとＰは次元３のベクトルである）に適用する。上記のスキームは多項式補間に基づいている。他のスキームが実装され得る。例えば回帰又は他のタイプの補間が使用され得る。
【００９５】
図８乃至１２は、異なる状況における対象値Ｐtのインデックス（ｉ＿ｔ，ｊ＿ｔ）の値に従ったサブセットの判定及びＱの定義の判定を示している。図８乃至１２の各々の最左端のフレームは、状況がこの対象点Ｐtに対応しているグリッド６０上のすべての異なる対象点Ｐtを示している。最右端フレームは、状況がこの対象点Ｐtに対応しているかかる対象点Ｐtの一例とともに、実施例の場合の予測スキームにおいて使用される多項式Ｑ（ｕ，ｖ）の一般的な数式８８を示している。最右端のフレームは、実施例の場合におけるＱ（ｕ，ｖ）の厳密式９２、又は方程式９０のシステムが、Ｑ（ｕ，ｖ）の係数を導いて、実施例の場合の厳密式を導くかどうかを提供する。
【００９６】
図８乃至図１２の実施例において、サブセットの実効値は、幾何学的オブジェクトの別の制御点に隣接する座標が対象実行値によって表される幾何学的オブジェクトの制御点の座標である。言い換えると対象制御点Ｐtの予測値pred(i_t,j_t)は、グリッド上の対象の近傍にある先に解析された制御点に従って実行される。max（｜ｉ１−ｉ２｜，｜ｊ１−ｊ２｜｜）≦ｓである場合（すなわち、グリッド６０上のＰi1,j1とＰi2,j2との間のグラフ距離がｓよりも小さい）、２つの点Ｐi1,j1及びＰi2,j2は、グリッド上で隣接していると言われる。ここでｓ＝１又はｓ＝３であり、より望ましくはｓ＝２である。本方法を局所的に滑らかな変動を示す表面に適用するとき、対象を予測するのに隣接するポイントを使用することは、予測が正確であるので、良好な圧縮を可能にする。２つのポイントが隣り合うかであるかどうかを判定するようにグリッド上の２つのポイント間で可能とされる距離を限定することは、予測の低減された精度に必ずしも導くことはないものの、圧縮に必要な時間を低減する。実際対象から離れた制御点は、対象を予測する際に必ずしも有益ではない。
【００９７】
図８は、（ｉ＿ｔ，ｊ＿ｔ）＝（２，０）又は（０，２）であるとき、予測値pred(i_t,j_t)を計算するステップＳ１０をどのように実行するかということに関する基本を説明している。この状況に対応する２つの対象点Ｐtは、グリッド６０の下部の境界８２と最左端の境界８４にそれぞれ位置づけられている。一般に曲面の境界は何らかの規則性を示す。したがって境界における対象点の正確な予測が、同一の境界における制御点に従って、１回実行され得る。例えばＰ2、0に対する予測値pred(2,0)は、上記のスキームを使用して実行され得る。サブセットは、Ｐ0,0及びＰ1,0から成る。これは、厳密式９２、
【００９８】
【数１５】
2011238236.tif 000017
【００９９】
をもたらす。これは図８の最右端のフレームにおいて示されている。Ｐ0,2は、ブセットＰ0,0及びＰ1,0を用いて同様に予測され得る。上記はpred(0,2)を計算するのに同様に適用され得る。
【０１００】
図９乃至１２は、pred(i_t,j_t)の計算が異なって実行される他の状況について同様に説明している。図９は、
【０１０１】
【数１６】
2011238236.tif 000018
【０１０２】
又は
【０１０３】
【数１７】
2011238236.tif 000019
【０１０４】
である状況を示している。Ｑは、（Ｐ0,j_t-1、Ｐ0,j_t-2、及びＰ0,j_t-3）又は（Ｐi_t-1,0、Ｐi_t-2,0、及びＰi_t-3,0）に従ってそれぞれ判定され得る。図１０は、ｉ＿ｔ＝ｊ＿ｔ＝０及びＱが、Ｐ0,0、Ｐ0,1、及びＰ1,0に従って判定される状況を説明している。図１１は、
【０１０５】
【数１８】
2011238236.tif 000020
【０１０６】
又は
【０１０７】
【数１９】
2011238236.tif 000021
【０１０８】
である状況を示している。Ｑは、（Ｐ0,j_t、Ｐ0,j_t-1、Ｐ0,j_t-2、Ｐ1,j_t-1、及びＰ1,j_t-2）又は（Ｐi_t,0、Ｐi_t-1,0、Ｐi_t-2,0、Ｐi_t-1,1、及びＰi_t-2,1）に従ってそれぞれ判定され得る。図１１は、
【０１０９】
【数２０】
2011238236.tif 000022
【０１１０】
【数２１】
2011238236.tif 000023
【０１１１】
である一般的な状況を示している。Ｑは、Ｐi_t,j_t-1、Ｐi_t,j_t-2、Ｐi_t-1,j_t、Ｐi_t-2,j_t、Ｐi_t-1,j_t-1、Ｐi_t-2,j_t-1、Ｐi_t-1,j_t-2、及びＰi_t-2,j_t-2に従ってそれぞれ判定され得る。
【０１１２】
実施例において、予測は３つの座標ｘ、ｙ、ｚに対して独自に計算される。予測は、ＡＸ＝Ｂという形態の線形システム９０の解を見出すことを含む。ここでＡは正方行列であり、Ｘは多項式Ｑの未知係数を含むベクトルであり、Ｂはベクトルである。理解され得るように、予測の計算は、四則演算（加算、減算、乗算、除算）のみを使用して実行され得る。実際、先に説明したように、グレビルパラメータは、四則演算のみを使用した周知の方法を使用して、節点ベクトルから計算され得る。Ａの係数は、同様に乗算のみを使用して、レビルパラメータから計算され得る。ベクトルＢの係数は、先の反復にて既に記憶されている制御点の座標である。よってこの計算のためにそれらを取得するための計算は全く必要とされない。ＡＸ＝Ｂというタイプの方程式を解くことは、例えばガウスピボット等の四則演算のみを伴う周知の技法を使用して、実行され得る。これは、多項式Ｑの係数であるＸの係数をもたらす。そして予測値をpred(i_t,j_t)t＝Ｑ（ｕi_t，ｖj_t）として計算するステップが、四則演算のみを用いて実行され得る。
【０１１３】
一般的な場合において、予測値は、別の制御点に関連付けられた少なくとも１つのパラメータ、サブセットの実効値、及び別の制御点に隣接する各制御点に関連付けられた少なくとも１つのパラメータに従って判定される。それぞれの隣接している制御点は、自身と関連付けられた少なくとも１つのパラメータを有する。上記実施例において、予測値は、実際、対象制御点（グレビルパラメータ）に関連づけられ、サブセットの実効値（隣接している制御点の座標）に関連付けれ２つのパラメータに従って判定されるし、隣接する各制御点（グレビルパラメータ）に関連付けられた２つのパラメータに従って判定され得る。上記実施例において、予測関数は、図８−１２を参照して詳細に説明した特定の予測スキームから生ずる先のパラメータの有理関数である。このスキームは、多項式の関数によって局所的に近似され得る滑らかな曲面の場合、正確に予測をするのに適切である。しかしながら判定がサブセットの制御点に従って行われ、予測の評価が算術演算のみを含む他の関数は、例えば他の種類のＮＵＲＢＳに対して、他の予測スキームから生じ得る。予測スキームは、（例えば、この効果に対して記憶された情報を通して）ＮＵＲＢＳの種類を判定する先のステップを一般的に含み得るし、従って異なる動作を適用し得る。
【０１１４】
少なくとも１つのパラメータは、何学的オブジェクトのそれぞれの節点ベクトルに従って一般的に判定される。既に説明したようにパラメータは、上記実施例において説明したようなグレビルパラメータであり得る。実施例の多項式アプローチにおいて、グレビルパラメータの使用は、曲面の設計図を完全に利用することによって、より正確な予測を可能にする。
【０１１５】
実施例に戻ると、計算ステップＳ１０は、例えば多項式Ｑの係数をいくつかの介入パラメータの値から判定する第１の動作と、介入パラメータの値における多項式を評価するため１つの演算等、介入するパラメータの値の有理関数の評価によって単一の演算にて実行され得るし、計算ステップＳ１０は、より多くの演算にて実行され得る。これは本方法の実装に依存する。
【０１１６】
セットの値の浮動小数点の性質、及びそれらが使用される場合には節点ベクトルの値の浮動小数点の性質を考慮することなく、予測値を計算するステップを説明してきた。一般に、予測スキームは、算術演算を含む。上記の説明は演算が実行される実数に対する差の値を同化した。浮動小数点の演算は、これらの数に対してこれら演算を実際に実行するのに使用され得る。しかしながらこれは、先に説明した安定性問題を伴う。
【０１１７】
異なるプラットフォームにわたる圧縮及び伸張の安定性を得るために、本方法は、整数の算術演算を用いて、浮動小数点の算術演算のエミュレーションを使用し得る。一般にセットの対象実効値に関連した浮動小数点予測値を計算するステップは、セットのサブセットの実効値の符号、指数、及び／又は仮数に対応する整数において演算を実行するステップを含み得、この演算は、浮動小数点の算術演算をエミュレートする。
【０１１８】
Hauserによる１９９８年の「"SoftFloat"」の発表、及びC.Bertinらの２００４年の「"A Floating-Point Library for Integer Processors"」という文献は、６４ビットの浮動小数点数のエミュレーションを説明している。これら研究において、重要な要件は、標準[ＩＥＥＥ７５４−１９８５]の仕様を厳密にエミュレートすることである。これにより特に除算演算においてアルゴリズムが遅くなってしまい、これによりいくつかの反復を必要とする。本方法は、この要件を有しないし、それゆえそれほどコストを要しないアルゴリズムが設計され得る。
【０１１９】
Dave Astle及びDave Durnilによる「OpenGL ES 1.0 Game Development, Chapter 4 "A Fixed Point for Math Primer" (2004)」という教科書は、３２‐ビットの整数を使用する浮動小数点の値のエミュレーションを説明している。除算演算のアルゴリズムは、いくつかのプラットフォームには長過ぎ得る媒介整数を演算がエミュレートされる浮動小数点値のサイズにおいて使用する。
【０１２０】
予測値を計算するために、入力浮動小数点値として取る算術演算のシーケンスが本発明の方法によって実行される。本方法は、浮動小数点の算術演算の使用を避ける。これは演算のかかるシーケンスの結果が異なるプラットフォームで異なる場合があるからである。よって本方法は、これら算術演算の整数ベースのエミュレーションを使用する。以下に６４-ビットの浮動小数点に対する４つの算術演算（加算、引算、乗算、除算）が６４-ビットの整数に対する演算のみを使用してどのようにエミュレートされ得るかに関する実施例が提供される。本方法によって提供されたエミュレーションは、高速である。なぜならば、予測値を計算するステップに対する演算が、浮動小数点値の符号、指数、及び／又は仮数に対応する整数において実行されるからである。［ＩＥＥＥ７５４−１９８５］規格の他の要件、又は本方法に使用される浮動小数点値の他のあらゆる標準規格の他の要件が無視され得る。
【０１２１】
以下に提供されたエミュレーションは、６４-ビットの整数をサポートするすべてのプラットフォーム上で実装され得る。これはＣＡＤソフトウェアを実行するのに使用されるほとんどのプラットフォームの場合である。１２８ビットの整数をサポートするプラットフォームにおいてなされるに過ぎないエミュレーションは、必要とされないであろう。かかるプラットフォームは広く利用可能ではないからである。なお、同じ原理が、６４−ビットの整数をサポートしないものの１２８ビットの整数をサポートするプラットフォームにおいて３２ビットの浮動小数点数における演算のエミュレーションを実装するのに適用され得ることが理解される。
【０１２２】
ａを［ＩＥＥＥ−７５４］規格における６４‐ビットの浮動小数点値（予測値を計算するステップで使用される任意の値）とする。先に既に説明したように、以下の要素を用いてａ＝（ｓ，ｅ，ｍ）と表記し得る。この要素は、符号ｓ（１ビット）、指数ｅ（１１ビット）及び仮数ｍ（５２ビット）である。
【０１２３】
浮動小数点値ａは、３つの６４‐ビットの整数のセットによって表された整数ベースのフォーマット（又は、以下において「エミュレーションフォーマット」とも称される）の値Ａに関連付けられ得るので、符号Ｓ（非符号６４−ビットの整数）、指数Ｅ（符号６４−ビット整数）、仮数Ｍ（非符号６４−ビットの整数）をもちいて、Ａ＝（Ｓ，Ｅ，Ｍ）となる。値Ａを表すデータは、例えばＳ、Ｅ又はＭをそれぞれの表す３つの整数のアレイであり得る。かかるデータが、予測の目的のために作成され得る。
【０１２４】
これらフォーマットの各数は、（数学的意味において）実数の値を表している。これら値に対して以下の記号をとる。
【０１２５】
【数２２】
2011238236.tif 000024
【０１２６】
はａの値である。
【０１２７】
【数２３】
2011238236.tif 000025
【０１２８】
はＡの値である。
【０１２９】
以下において、一方のフォーマットの値を他方のフォーマットの値に関連付けられた値にどのように変換するかということに関する規則が、提供される。
【０１３０】
ａが［ＩＥＥＥ‐７５４］フォーマットの正規化された値である場合、０＜ｅ＜２11であり、ａ＝（Ｓ，Ｅ，Ｍ）という数字の値は、以下の通りである。
【０１３１】
【数２４】
2011238236.tif 000026
【０１３２】
ここで、bias＝２11-1−１＝１０２３である。
【０１３３】
整数ベースのフォーマットへのａの変換の結果は、Ａ＝（Ｓ，Ｅ，Ｍ）である。ここで、
【０１３４】
【数２５】
2011238236.tif 000027
【０１３５】
である。実数の値は、以下のように定義され得る。
【０１３６】
【数２６】
2011238236.tif 000028
【０１３７】
エミュレーションフォーマットから［ＩＥＥＥ−７５４］フォーマットへの再変換は、簡単である（Ｍをｍに変換する、我々はｍの１１最下位ビットを無視している）。
【０１３８】
ａがゼロ又は非正規化数（すなわち、ｅ＝０）である場合、整数ベースのフォーマットへ変換するために、以下の規則が適用され得る：
【０１３９】
【数２７】
2011238236.tif 000029
【０１４０】
言い換えると、すべてのゼロ又は非正規化数は、ゼロに変換される。［ＩＥＥＥ‐７５４］フォーマットへの再変換は、簡単である。
【０１４１】
ａが［ＩＥＥＥ‐７５４］フォーマットの無効な数である場合（すなわち、ｅ＝２11−１）、エミュレーションフォーマットへ変換するために、我々は以下のように設定する。
【０１４２】
【数２８】
2011238236.tif 000030
【０１４３】
エミュレーションフォーマットへの浮動小数点値のこの変換の結果、使用される演算は、整数の加算、減算、乗算、及び／又は、除算を含む算術演算を含み得るし、及び／又は、ビットシフト及び／又は先頭ゼロカウントを含むビット単位の演算を含み得る。かかる演算は安定性を保証し、予測値を計算するのに使用され得る。
【０１４４】
一般に算術演算のシーケンスを浮動小数点値において実行するためには、値は、まず整数ベースのフォーマット、例えば上記したエミュレーションフォーマットの均等値に変換される。本方法は、これら均等な数において算術演算のシーケンスを実行し得る。以下において、整数ベースのフォーマットで表された２つの演算数Ａ及びＢにおいて四則演算する方法の実施例が提供される。ここでかかる算術演算の要件について説明する。
【０１４５】
【数２９】
2011238236.tif 000031
【０１４６】
という表記を用いて任意の四則演算について考慮する。ここで、
【０１４７】
【数３０】
2011238236.tif 000032
【０１４８】
は、＋−＊／の何れであってもよい。
【０１４９】
以下の仮定を考慮する。
【０１５０】
【数３１】
2011238236.tif 000033
【０１５１】
【数３２】
2011238236.tif 000034
【０１５２】
はＡの値である
【０１５３】
【数３３】
2011238236.tif 000035
【０１５４】
はＢの値である
【０１５５】
【数３４】
2011238236.tif 000036
【０１５６】
は実数に対する演算の結果である。
【０１５７】
我々は、
【０１５８】
【数３５】
2011238236.tif 000037
【０１５９】
を計算したいので、
【０１６０】
【数３６】
2011238236.tif 000038
【０１６１】
であり、
【０１６２】
【数３７】
2011238236.tif 000039
【０１６３】
はＣの値である。
【０１６４】
目的は、（オーバーフローすることなく）６４‐ビットの整数に対して算術演算のみを使用し算術ビット単位シフトのみを使用することによって、（Ｓｃ，Ｅｃ，Ｍｃ）を計算することであり得る（先に述べたように、それらがすべてのプラットフォームにわたって安定的でないので、本方法は浮動小数点値における演算を避ける）。これら要求は、すべての演算子（＋，−，＊，／）に対して同一である。以下の表記が、説明のために採用され得る。ここでＭは６４‐ビットの整数である。
・Ｍ＜＜ｎ：整数Ｍのｎビットの左のシフト。
・Ｍ＞ｎ：整数Ｍのｎビットの右のシフト。
・ＬＺＣ（Ｍ）：Ｍの先行ゼロカウント（Ｍの左の連続ゼロの数）。
・Ｍ+＝（Ｍ＞＞３２）。
・Ｍ―＝（（Ｍ＜＜３２）＞＞）３２：Ｍの３２の上位ビットがゼロに設定される。
【０１６５】
以下において、加算の規則が与えられる。加算は可換であるので、我々は、
【０１６６】
【数３８】
2011238236.tif 000040
【０１６７】
であると想定し得る。
【０１６８】
ＡとＢが同じ符号を有する場合、
【０１６９】
【数３９】
2011238236.tif 000041
【０１７０】
であり、
【０１７１】
【数４０】
2011238236.tif 000042
【０１７２】
である。
【０１７３】
Ｍに対応する実数
【０１７４】
【数４１】
2011238236.tif 000043
【０１７５】
が
【０１７６】
【数４２】
2011238236.tif 000044
【０１７７】
からあまりに離れていないことを確実にしながら（例えば、
【０１７８】
【数４３】
2011238236.tif 000045
【０１７９】
であることを確実にしながら）、目的は、ＭExactの近似である６４ビットの整数Ｍ、及び、整数の算術及びビット単位のシフトのみを用いて計算され得る６４ビットの整数Ｍを定義することである。
【０１８０】
【数４４】
2011238236.tif 000046
【０１８１】
が便利である。かかるＭの計算によって、オーバーフローが生じないこと、及び、Ｍが十分に良好なＭExactの近似であること、例えば
【０１８２】
【数４５】
2011238236.tif 000047
【０１８３】
であることをチェックすることは容易である。よって、本方法は、Ｃを以下のように計算し得る。
【０１８４】
【数４６】
2011238236.tif 000048
【０１８５】
Ａ及びＢが異なる符合である場合、
【０１８６】
【数４７】
2011238236.tif 000049
【０１８７】
であり、
【０１８８】
【数４８】
2011238236.tif 000050
【０１８９】
である。
【０１９０】
同様のアプローチにより、Ｍ＝ＭA−（ＭB＞＞（ＥB−ＥA））となり、
【０１９１】
【数４９】
2011238236.tif 000051
【０１９２】
となる。
【０１９３】
２つの演算数の引算を計算するために、本方法は上記定義した加算法を用いるので、演算数Ａ及び（−Ｂ）において加算を実行する。
【０１９４】
乗算に対しては、
【０１９５】
【数５０】
2011238236.tif 000052
【０１９６】
であり、ＭExact＝ＭA＊ＭB＊２-64である。
【０１９７】
【数５１】
2011238236.tif 000053
【０１９８】
であることをチェックすることは容易である。
【０１９９】
我々は、MExactの近似である６４ビットの整数Ｍ、及び整数の算術及びビット単位シフトのみを用いて計算され得る６４ビットの整数Ｍを定義したい。そこで我々は、ＭExactを以下のように表す。
【０２００】
【数５２】
2011238236.tif 000054
【０２０１】
我々は、Ｍを以下のように計算する。
【０２０２】
【数５３】
2011238236.tif 000055
【０２０３】
上記数式の演算は、オーバーフローすることなく６４‐ビット整数算術を用いて実行され得る。なぜならばすべでの積が、nullに設定されたそれら３２最上位ビットを有する演算数を有するからである。これら積の合計がオーバーフローすることなく６４‐ビット整数に一致することを確かめることも容易である。なぜならば、
【０２０４】
【数５４】
2011238236.tif 000056
【０２０５】
であり、
【０２０６】
【数５５】
2011238236.tif 000057
【０２０７】
であるからである。
【０２０８】
Ｍが、十分に良好なＭExact近似であること、すなわち、
【０２０９】
【数５６】
2011238236.tif 000058
【０２１０】
であることをチェックすることは容易である。
【０２１１】
我々は、Ｃを最終的に以下のように定義する。
【０２１２】
【数５７】
2011238236.tif 000059
【０２１３】
そして、
【０２１４】
【数５８】
2011238236.tif 000060
【０２１５】
であることをチェックすることは容易である。
【０２１６】
以下に、除算の規則を提供する。除算は、実数において定義され得る。なお、
ａ=ｂ／ｃ
又は
【０２１７】
【数５９】
2011238236.tif 000061
【０２１８】
であり、
【０２１９】
【数６０】
2011238236.tif 000062
【０２２０】
であることを記す。
【０２２１】
除算は、６４‐ビットの無符号整数においても定義され得る。尚、
【０２２２】
【数６１】
2011238236.tif 000063
【０２２３】
であることを記す。（ここで、Ａ、Ｂ、Ｑ、Ｒは、無符号の６４‐ビットの整数であり、Ｑは、Ａ÷Ｂの商であり、Ｒは、その余りである）。
【０２２４】
【数６２】
2011238236.tif 000064
【０２２５】
であり、
【０２２６】
【数６３】
2011238236.tif 000065
【０２２７】
である。
我々は、
【０２２８】
【数６４】
2011238236.tif 000066
【０２２９】
であると容易に確認し得る。
【０２３０】
目的は、ＭExactの近似である６４ビットの整数Ｍ、及び、整数の算術及びビット単位シフトのみを用いて計算され得る６４ビットの整数Ｍを定義することである。我々は、ＭExactを以下のように表す。
【０２３１】
【数６５】
2011238236.tif 000067
【０２３２】
ここで、
【０２３３】
【数６６】
2011238236.tif 000068
【０２３４】
であり、
【０２３５】
【数６７】
2011238236.tif 000069
【０２３６】
である。
ＭExact＝Ｄ（１−λ）＋ε
ここで、ε＜Ｄ＊λ2＜２-62ＭExactである。
【０２３７】
我々は、以下のように表す。
【０２３８】
【数６８】
2011238236.tif 000070
【０２３９】
ここで、
【０２４０】
【数６９】
2011238236.tif 000071
【０２４１】
であり、
【０２４２】
【数７０】
2011238236.tif 000072
【０２４３】
である。
【０２４４】
そして、
【０２４５】
【数７１】
2011238236.tif 000073
【０２４６】
ここで、
【０２４７】
【数７２】
2011238236.tif 000074
【０２４８】
である。
【０２４９】
最終的に、我々は、Ｍを以下のように計算する。
【０２５０】
【数７３】
2011238236.tif 000075
【０２５１】
我々は、オーバーフローを生ずることなく、上記数式の演算が６４‐ビット整数算術を用いて実効され得ることを確認し得る。
【０２５２】
Ｍが、十分に良好なＭExact近似であること、すなわち
【０２５３】
【数７４】
2011238236.tif 000076
【０２５４】
であることをチェックすることは容易である。
【０２５５】
我々は、Ｃを最終的に以下のように定義する。
【０２５６】
【数７５】
2011238236.tif 000077
【０２５７】
そして
【０２５８】
【数７６】
2011238236.tif 000078
【０２５９】
であることをチェックすることは、容易である。
【０２６０】
上記の説明は、整数に対する演算による浮動小数点の算術をエミュレートすることによって対象の予測値を計算する方法に関する実施例をあらわにした。しかしながら他の種類のエミュレーション、例えば従来技術からすでに知られているエミュレーションが、実装され得る。以下に対象実効値及び予測値から得られた整数の差を表すビットシーケンスを記憶して、任意の上記実施例に対して圧縮を達成する実施例を提供する。
【０２６１】
この実施例において、対象実効値及び予測値から得られた整数は、対象実効値及び予測値をそれぞれ定義する文字列によって定義された整数である。より具体的には、Engelson他によって開示されたものと同様の整数表示へのマッピングが使用され得る。これにより、ビットシーケンスの判定の高速化、リソースの節約を可能にする。
【０２６２】
伸張を目的として、差を表すビットシーケンスは、多くの有効ビットを示すプレフィックスビットシーケンスと、先頭のゼロと望ましくはさらにいっそう大なる圧縮のために、１に等しい最初のビットを削除され、サイズが有効ビットの数である、差に等しいボディビットシーケンスとを含む。プレフィックスビットは、伸張方法が読み取られるべきボディビットシーケンスのサイズを特定することを可能にする。一方ボディビットシーケンスは、圧縮された対象値を取得するのに必要な情報を含む。
【０２６３】
これは、［ＩＥＥＥ−７５４］フォーマットで表された２つの６４‐ビットの浮動小数点値ａ及びｐを参照する以下の実施例において詳細に説明される。
ａ＝（ｓa，ｅa，ｍa）
ｐ＝（ｓp，ｅp，ｍp）
値ａは、対象浮動小数点値であり、値ｐがａの予測値である。本方法は、これら２つの値から、ａの圧縮を表すビットシーケンスＢを計算する。ａがビットシーケンスＢから及びｐから取得され得るように、シーケンスＢは定義され、ａ及びｐの値が近い場合には、そのサイズが小さくなるようにＢが定義されなければならない。上述したＮＵＲＢＳ曲面の圧縮のコンテクストにおいて、値ａは、現在の点のｘ、ｙ、又はｚ座標の任意のものであり、ｐは、この現在の点の同一の座標に対する予測値である。
【０２６４】
ｆ＝（ｓF，ｅF，ｍF）を、［ＩＥＥＥ７５４］フォーマットで表された６４‐ビット浮動小数点数とする。本方法の実施例によって用いられるｆの整数へのマッピングは、Int（ｆ）と記され、ｆと同一の６４‐ビット列によって表された６４‐ビットの無符号整数である。我々は、このマッピングの逆関数を、Realと記すため、Real（Int（ｆ））＝ｆとなる。
【０２６５】
我々は、無符号の６４‐ビット整数Ｄ及び１‐ビット数Ｓを以下のように定義する。
（Int（ａ）≧Int（ｐ））である場合、
【０２６６】
【数７７】
2011238236.tif 000079
【０２６７】
（Int（ｐ）≧Int（ａ））である場合、
【０２６８】
【数７８】
2011238236.tif 000080
【０２６９】
Ｎ＝LeadingZeros（Ｄ）をＤの先頭０の数とする。Ｄは、以下のビットシーケンスによって表されえる。
【０２７０】
【数７９】
2011238236.tif 000081
【０２７１】
である場合、
【０２７２】
【数８０】
2011238236.tif 000082
【０２７３】
（Ｎ＝６４）である場合、
【０２７４】
【数８１】
2011238236.tif 000083
【０２７５】
我々は、ａの圧縮された形態であるビットシーケンスＢ＝Compressed（ａ，ｐ）を定義する。我々は、Ｎの値に従い、３つのケースを区別する。
【０２７６】
ケース１：（Ｎ＝６４）である場合、
【０２７７】
【数８２】
2011238236.tif 000084
【０２７８】
となる。
【０２７９】
ケース２：
【０２８０】
【数８３】
2011238236.tif 000085
【０２８１】
である場合、
【０２８２】
【数８４】
2011238236.tif 000086
【０２８３】
となる。
【０２８４】
ケース３：
【０２８５】
【数８５】
2011238236.tif 000087
【０２８６】
である場合、
【０２８７】
【数８６】
2011238236.tif 000088
【０２８８】
プレフィックスビットシーケンスBin（ｋ＋１）は、無符合の２進数として表された（ｋ＋１）の値である。
【０２８９】
必ずしもセットの構造に基づくものでない別の圧縮スキームが、数値データを圧縮するためにさらに使用され得る。例えばエントロピ符号化が、上述した演算によって圧縮された後に、データに対して使用され得る。したがって、本方法は、例えば、エントロピコーディングを使用して、数値データを再度圧縮するステップを含み得る。
【０２９０】
図１３に示されるように、本発明は、数値データを伸張するためのコンピュータ実装方法にも関する。数値データは、一般に、浮動小数点実効値の構造化されたセットを含む圧縮された形態のデータである。浮動小数点値は、上記定義されたように、符号、指数、及び仮数によって定義されている。数値データは、セットの対象実効値及び対象実効値に関連した浮動小数点予測値から得られた整数の差を表すビットシーケンスを含む。伸張は、予測値を計算するステップＳ１４０であって、計算は、セットのサブセットの実効値の符号、指数、及び／又は仮数に対応する整数における演算を実行するステップと、予測値から得られた整数を有するビットシーケンスの加算から対象実効値を得るステップＳ１５０と、を含む。
【０２９１】
かかる方法は、実効値、すなわち対象値を圧縮されたデータから取り出し、それにより、利用可能となる。
【０２９２】
計算ステップ及び取得ステップはこのセットの順序に従って反復される。このセットが、それ自体それぞれのビットシーケンスを含む数値データにおいてそれ自体記憶されていない少なくとも２つの実効値を含むとき、これは有益である。この順序は、このセットの順序の表示を含み得る数値データによって示され得る。かかる表示は、このセットに明確に関連し得ない。例えばこのセットが順序付けされるとき、圧縮は、先に説明したようにその順位に従う。従って伸張は、圧縮されていないセットの順序に対応する圧縮された数値データによって表示された順位に単に従い得る。
【０２９３】
各反復において、サブセットは、前の反復において取得された対象値及び／又は数値データにそれ自体含まれる対象値を含み得る。言い換えるとこのセットは、数値データに含まれないようにし、それぞれのビットシーケンスをむしろ含まれるようにすることによって、数値データにおいてそれ自体含まれる実効値と、セットの圧縮に加わる実効値を含み得る。この場合全体的な伸張処理は、数値データからこのセットのすべての実効値を判定する。取得ステップが実行される全体的な処理の各反復において、判定されるべき実効値、すなわち対象値は、上記説明したように、先に判定されたこのセットの実効値、言い換えると、前の反復において取得された対象値及び／又はそれ自体数値データに含まれる対象値から構成され得るサブセットを使用して取得される。
【０２９４】
例えば数値データは、セットの少なくとも一方の初期実効値をさらに含み、計算ステップは、セットの他方の実効値のすべてに対して反復される。この場合、各反復において、計算ステップに続いて、反復において計算された予測値を閾値と比較するステップと、予測値が閾値より大きいときに（上記したように）予測値から取得された整数を有する（数値データに含まれる）ビットシーケンスの加算から対象実効値を取得するステップ、又は、反復に関する予測値が閾値よりも小さいときに（数値データにおいてそれ自体含まれる）対象実効値を用いてサブセットを増加させるステップが行われる。これは実効値がそれ自体記憶されているのかどうか又は「圧縮」されている（すなわち、ビットシーケンスがその位置で記憶されている）のかどうかを判定する。あるいは、数値データは、（上記説明したように）次の対象値が数値データにそれ自体含まれるのかどうか又は次の対象値が数値データに含まれるビットシーケンスから取得されるべきであるかどうか示す情報（例えば、プレフィックスビット）を含み得る。これは伸張速度を増大せしめる。
【０２９５】
圧縮方法を説明するとき、伸張方法の実施例が上記提供された定義を参照して、今説明されるだろう。これら定義もここで適用している。実際、これは必ずしもそうとは限らないが、伸張されるべき数値データは、上記圧縮方法によって取得され得る。
【０２９６】
セットの実効値は、幾何学的オブジェクトに関連付けられた座標であり得るし、望ましくは幾何学的オブジェクトの制御点の座標であり得、サブセットの実効値は、幾何学的オブジェクトの別の制御点に隣接する幾何学的オブジェクトの制御点の座標であり得る。対象実効値が別の制御点の座標である。予測値は、別の制御点に関連付けられた少なくとも１つのパラメータ、サブセットの実効値、及び別の制御点に隣接する各制御点に関連付けられた少なくとも１つのパラメータに従って判定され得る。少なくとも１つのパラメータは、それ自体それらを含み得る数値データから判定され得るし、少なくとも１つのパラメータの判定を許容する要素を含む。例えば少なくとも１つのパラメータは、幾何学的オブジェクトのそれぞれの節点ベクトルに従って判定され得る。幾何学的オブジェクトは、ＮＵＲＢＳ曲面であり得るし、少なくとも１つのパラメータは、グレビルパラメータであり得る。対象実効値及び予測値から得られた整数は、対象実効値及び予測値をそれぞれ定義する文字列によって定義された整数であり得る。差を表すビットシーケンスは、多くの有効ビットのプレフィックスビットシーケンス及び先頭のゼロ及び望ましくは１に等しい第１のビットが削除され、サイズが有効ビットの数である差に等しいボディビットシーケンスを含み得る。演算は、整数の加算、減算、乗算、及び／又は、除算を含む算術演算、及び／又は、ビットシフト及び／又は先頭ゼロカウントを含むビット単位の演算を含み得る。これらすべての特徴は、上記説明したように、圧縮に関連付けられた利点を提供する。
【０２９７】
上記圧縮方法に従う圧縮方法が実効された場合において、ステップＳ１４０において予測値を計算するために使用される予測スキームは、圧縮方法で使用されるのと同じ予測スキームである。より具体的には、先に圧縮方法の説明の際に使用された表記を参照すると、浮動小数点予測値ｐが計算されているとき、伸張方法は、ビットシーケンスＢを読み取るステップを含み得る。予測値ｐに対応する実効値ａは、ビットシーケンスＢ及び予測値ｐから、ａ＝Decompressed（Ｂ，ｐ）として取得され得る。上に提供された実施例を参照すると、Bの最初の６ビットは読み取られ６ビットの無符号整数ｍとして解釈される。（ｍ＝０）である場合、我々はａ＝ｐ（ケース１）とする。（１≦ｍ≦６２）である場合、我々はD及びSを取得することを可能にする次のｍビットを読み取り、我々は（Ｓ＝０）である場合、ａ＝Real（Int（p）＋D）とし、（Ｓ＝１）である場合、ａ＝Real（Int（p）−D）とする。（ｍ＝６３）である場合、我々は、次の６４ビットを読み取り、それらを数ａとして解釈する。
【０２９８】
図２−４を参照して説明したように、圧縮が反復を含むことによって実行されたとき、上記ステップＳ１４０及びＳ１５０は、対応して反復される。
【０２９９】
図３を参照して説明したように、圧縮が、初めの値を記憶するステップを含むとき、伸張方法は、ステップＳ１４０及びＳ１５０を反復する前に、対応して始めの値を読み取る。よって始めの値は、予測の基礎を供給する少なくとも第１の計算するステップＳ１４０を実行するのに使用され得る。計算された予測値は、上述したように、それに対応する実効値をステップＳ１５０において取得するのに使用され得る。少なくとも一つのかかるステップ後に、取得された値は、伸張方法の反復に含まれる計算ステップ１４０の次のステップを計算するのに使用され得る。圧縮方法が、予測値を閾値と比較するステップを含んで、図４を参照して説明したように、それらが圧縮されるべきかどうかを判定する場合、伸張方法は、対応して実効値を取得する前にステップＳ１４０において計算された予測値の比較を実行する。比較の結果において、取得ステップＳ１５０が実効値を取得するために実行されるのか、又は（圧縮方法の反復中に、比較が対象値を圧縮しないがそれ自体それを記憶する判定を得る場合）データを読み取るステップが実行される。
【０３００】
図５−１２を参照して先に説明した圧縮されたＮＵＲＢＳの実施例に伸張方法が適用されるとき、節点ベクトルを記憶データから読取るステップを含み得る。３つの非圧縮制御点の座標である始めの値が、読み取られる。読み取られるべき現在の制御点のインデックスが、図７を参照して説明したように、判定される。圧縮するときと同一の予測スキーム（すなわち、図８−１２を参照して説明した予測スキーム）が、現在の制御点のインデックスに従って選択される。次の制御点の予測値が、例えば多項式補間を使用して計算される。この計算に必要なすべてのデータが、この段階において読み取られている。すなわち節点ベクトルが読取られており、（選択された予測スキームに従って）この計算のために必要な制御点の実効値が、先の反復中に既に存在している。現行の点の座標が、それら圧縮された形態から読み取られ復号化される。これは予測を使用してなされる。これは３つの座標ｘ、ｙ、ｚに対して独自になされ得る。さもなければＮＵＲＢＳ曲面のすべての制御点が読取られている場合、記憶処理は終了される。
【０３０１】
したがって一般的な場合において、伸張方法は、圧縮方法が後に続く同一のコースに従うと理解されるべきである。これは本来データ圧縮の分野から知られている。
【０３０２】
また本発明は、コンピュータ支援設計システムに関する。システムは、浮動小数点実効値の構造化されたセットを含む数値データによってモデル化されたオブジェクトを記憶するデータベースと、グラフィカルユーザインターフェイスと、上記提示した圧縮方法に従って数値データを圧縮し、及び／又は、上記提示した伸張方法に従って数値データを伸張する手段と、を含む。例えば数値データは、ハードディスクと接続されたプロセッサによって読み取られ且つ処理される。このプロセッサは、上記方法に従って、数値データを圧縮し又は伸張し得る。数値データは、対応する（圧縮され又は伸張された）形態にてメモリに記憶される。かかるシステムは、少ないメモリリソースにてオブジェクトのモデル化を可能にする。実際、システムが上に提示された効率的な圧縮法に従って数値データを圧縮するかもしれないので、より多くのオブジェクトが、他のシステムと比べて圧縮された形態の下でシステムのデータベースに記憶され得る。上述したように、システムが数値データを伸張し得るので、システムは、ユーザが圧縮されたデータを読むのを幇助し得る。ユーザは、圧縮を利用し得る。
【０３０３】
グラフィカルユーザインターフェイスは、ユーザがオブジェクトをモデル化するデータの圧縮を命令し又はオブジェクトをモデル化するデータの伸張を命令することを可能にする。従ってオブジェクトは、ＣＡＤファイルによってモデル化された一部であり得る。設計者が、例えばグラフィカルユーザインターフェイスの手段によって、この一部に対して作業する必要がある場合、システムは、圧縮された形態のＣＡＤファイルを記憶し、それらを伸張し得る。
【０３０４】
図１４は、クライアントコンピュータシステム、例えば、ユーザのワークステーションであるかかるシステムを示している。
【０３０５】
クライアントコンピュータは、内部通信バス１００に接続された中央演算処理装置（ＣＰＵ）１０１、バスに接続されたランダム・アクセス・メモリ（ＲＡＭ）１０７を含む。クライアントコンピュータは、さらにバスに接続されたビデオＲＡＭ１１０に関連づけられているグラフィカル処理ユニット（ＧＰＵ）１１１が提供される。ビデオＲＡＭ１１０は、フレームバッファとして当技術分野で知られている。大容量記憶装置コントローラ１０２は、ハードドライブ１０３等の大容量メモリデバイスへのアクセスを管理する。コンピュータプログラム命令及びデータをタンジブルに具現化するのに適した大容量記憶装置は、一例としてＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリデバイス等の半導体記憶装置、内部ハードディスクや着脱式ディスク等の磁気ディスク、光磁気ディスク及びＣＤ−ＲＯＭディスク１０４を含むすべての形態の不揮発性メモリを含む。任意の上記の機能が、特別に設計されたＡＳＩＣｓ（特定用途向けＩＣ）によって追加され得るし、特別に設計されたＡＳＩＣｓ（特定用途向けＩＣ）に組み込まれ得る。ネットワークアダプタ１０５は、ネットワーク１０６へのアクセスを管理する。クライアントコンピュータは、カーソル制御デバイス、キーボード等の接触デバイス１０９を含み得る。カーソル制御デバイスは、クライアントコンピュータにおいて使用されて、ユーザがカーソルをディスプレイ１０８上の所望の位置に選択的に位置付けることを可能にする。さらにカーソル制御デバイスは、ユーザが様々なコマンド及び入力制御信号を選択することを可能にする。カーソル制御デバイスは、システムに対する入力制御信号の多くの信号発生デバイスを含む。通常、カーソル制御デバイスは、マウスであり得る、マウスのボタンは信号を生成するのに使用され得る。
【０３０６】
本発明は、コンピュータによる実行のための命令を含むコンピュータプログラムにも関する。命令は、上記方法を実行する手段を含む。かかるプログラムは、コンピュータ可読記憶媒体に記憶され得る。かかるプログラムは、既存のシステムに追加され得るし、かかるシステムが上に提示された方法を実行することを可能にする。かかるプログラムは、既存のシステムに本方法の利点を提供する。
【０３０７】
本発明は、予測符号化スキームを使用して、情報損失を伴うことなく、浮動小数点幾何学的オブジェクトを圧縮する（すなわち、圧縮は無損失である）。予測関数は、整数の算術演算のみを使用して浮動小数点の算術演算をエミュレートすることによって算術演算を実行する。このエミュレーションは、正確な結果をすべての四則演算（加算、減算、乗算、除算）に提供する。すなわち浮動小数点計算を使用することによって得られたものに非常に近い結果を与える。よって予測は、正確である。このエミュレーションは、このコンテクストにおいて不必要であるので、全体の［ＩＥＥＥ７５４−１９８５］規格に従う必要はない。
【０３０８】
本発明は、先の技術に対していくつかの利点を提供する。
【０３０９】
本発明の１つの利点は、圧縮及び伸張が異なるソフトウェア及びハードウェアプラットフォームで行われ得るということである。これは、予測の数値計算が浮動小数点計算の整数ベースのエミュレーションを使用して実行され得るからである。このエミュレーションは整数における演算のみを伴うので、結果はまさにすべてのプラットフォームにおいて同じである。したがって圧縮するとき又は伸張するときに計算される予測は、厳密に同一であり、それら圧縮された形態から現在の点の座標の復号化が厳密に圧縮中に記憶された当初の値をもたらす。
【０３１０】
実施例の予測関数は、整数算術を使用する浮動小数点の算術のエミュレーションに基づいており、浮動小数点算術を使用することによって得られたものに非常に近い結果を与える。
【０３１１】
整数算術を使用する実施例において提供された浮動小数点算術のエミュレーションは、他の既存のエミュレーションよりも高速である。これは、それが全体の［ＩＥＥＥ７５４−１９８５］規格をサポートする必要はないという事実に帰属される。
【０３１２】
予測スキームは幾何学的オブジェクトのタイプに適用させられ、オブジェクトのパラメータ化を考慮する。
【０３１３】
自動車産業のＣＡＤデータにおいて実行されテストは、４５％の圧縮率を例証しており、これは、１８．３ＭＢの初期圧縮ファイルが本発明の圧縮方法によって、１０ＭＢの圧縮ファイルにダウンサイズされることを意味している。
【図１】
2011238236.tif 000089
【図２】
2011238236.tif 000090
【図３】
2011238236.tif 000091
【図４】
2011238236.tif 000092
【図５】
2011238236.tif 000093
【図６】
2011238236.tif 000094
【図７】
2011238236.tif 000095
【図８】
2011238236.tif 000096
【図９】
2011238236.tif 000097
【図１０】
2011238236.tif 000098
【図１１】
2011238236.tif 000099
【図１２】
2011238236.tif 000100
【図１３】
2011238236.tif 000101
【図１４】
2011238236.tif 000102
【外国語明細書】
2011238236000001.pdf