(57)【要約】【課題】  スプレッドシートセルを評価するファシリティを提供する。【解決手段】  ファシリティは、スプレッドシートセル内に格納されている関数呼び出しを読み出す。関数呼び出しで、任意の幾何学的経路および規定された経路に対し実行される演算を規定する。ファシリティは、規定された経路に対し規定された演算を実行し、それによって生成された１つまたは複数の値をスプレッドシートセルの評価された値として規定する。【選択図】  図１
2006085671.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティングシステムに前記スプレッドシートセルを評価する方法を実行させるコンテンツを含むコンピュータ可読媒体であって、
スプレッドシートセル内に格納されている関数呼び出しを読み込み、前記関数呼び出しは（１）任意の幾何学的経路を規定し、（２）演算が前記規定された経路に対し実行されることと、
前記規定された経路に対し前記規定された演算を実行することと、
前記規定された経路に対し前記規定された演算を実行することにより生成された１つまたは複数の値を前記スプレッドシートセルの前記評価された値として規定することと
を含むことを特徴とする、コンピュータ可読媒体。
【請求項２】
前記読み込まれた関数呼び出しは、さらに、前記経路上の中間点の位置を規定する第１の経路座標および前記中間点から前記規定された点までの有向距離を規定する第２の経路座標を含む経路座標内の１点を規定することを特徴とするコンピューティングシステムに請求項１に記載の方法を実行させる内容が含まれるコンピュータ可読媒体。
【請求項３】
前記経路は、第１の端点および第２の端点を持ち、前記第１の経路座標は、前記経路の前記第１の端点からの絶対距離を規定することにより前記経路上の前記中間点の前記位置を規定することを特徴とする請求項２に記載のコンピュータ可読媒体。
【請求項４】
前記経路は、第１の端点および第２の端点を持ち、前記第１の経路座標は、前記経路の前記第１の端点から前記経路の前記第２の端点までの総距離の割合を規定することにより前記経路上の前記中間点の前記位置を規定することを特徴とする請求項２に記載のコンピュータ可読媒体。
【請求項５】
前記経路は、第１の端点および第２の端点を持ち、前記読み込まれた関数呼び出しは、さらに、前記第１の経路座標が前記第１の端点または前記第２の端点に相対的な前記経路上の前記中間点の前記位置を規定するかどうかを規定することを特徴とする請求項２に記載のコンピュータ可読媒体。
【請求項６】
前記経路は、一連のセグメントからなり、前記読み込まれた関数呼び出しは、さらに、前記規定された演算が実行される前記一連のセグメントのうちの１つを規定することを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項７】
前記経路は第１の端点および第２の端点を持ち、前記読み込まれた関数呼び出しは、さらに、（１）前記経路の前記第１の端点または前記第２の端点のいずれか、および（２）前記規定されセグメントが前記規定された端点から離れているセグメントの個数を規定することにより、前記一連のセグメントのうちの１つを規定することを特徴とする請求項６に記載のコンピュータ可読媒体。
【請求項８】
前記方法は、さらに、前記規定された経路に対して前記規定された演算を実行する前に、前記規定された経路を正規化することを含むことを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項９】
前記規定された経路は、一連のセグメントからなり、前記一連のセグメントのそれぞれは、前記経路の実質的セグメントであるか、または前記経路をそのビジュアル環境に適合させるために前記経路に追加された表面的なセグメントのいずれかであり、前記規定された経路を正規化することは、前記一連の前記規定された経路内に存在する表面的なセグメントを省略する前記規定された経路に対応する正規化された経路を生成することを含むことを特徴とする請求項８に記載のコンピュータ可読媒体。
【請求項１０】
前記規定された経路は、経路定義スプレッドシートセルの集合内で定義され、前記方法は、さらに、前記集合の前記経路定義スプレッドシートセルのうちの１つの前記値が変更されたと判定したことに対する応答として前記関数呼び出しを含む前記スプレッドシートセルを再評価することを含むことを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項１１】
前記関数呼び出しは、前記経路を表す経路スプレッドシートセルへの参照を含めることにより前記経路を規定することを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項１２】
前記経路スプレッドシートセルへの前記参照は、前記経路スプレッドシートセルを名前で示すことを特徴とする請求項１１に記載のコンピュータ可読媒体。
【請求項１３】
前記経路スプレッドシートセルへの前記参照は、前記経路スプレッドシートセルを位置で示すことを特徴とする請求項１１に記載のコンピュータ可読媒体。
【請求項１４】
前記読み込まれた関数呼び出しは、さらに、前記経路上の中間点の位置を規定する第１の経路座標および前記中間点から前記規定された点までの有向距離を規定する第２の経路座標を含む経路座標内の１点を規定し、前記関数呼び出しにより規定される前記演算は、前記規定された点の前記経路座標をデカルト座標に変換することを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項１５】
前記読み込まれた関数呼び出しは、ＰＡＴＨＰＯＩＮＴという関数名を含めることにより前記規定された演算を規定することを特徴とする請求項１４に記載のコンピュータ可読媒体。
【請求項１６】
前記読み込まれた関数呼び出しは、さらに、デカルト座標内の１点を規定し、前記関数呼び出しにより規定された前記演算は、デカルト座標で規定された前記点に最も近い前記規定された経路上の点を示すことを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項１７】
前記示された点は、前記経路上の中間点の位置を規定する第１の経路座標および前記中間点から前記示された点までの有向距離を規定する第２の経路座標を含む経路座標内で示すことを特徴とする請求項１６に記載のコンピュータ可読媒体。
【請求項１８】
前記読み込まれた関数呼び出しは、ＰＡＴＨＰＡＲＡＢという関数名を含めることにより前記規定された演算を規定することを特徴とする請求項１７に記載のコンピュータ可読媒体。
【請求項１９】
前記読み込まれた関数呼び出しは、さらに、前記経路上の１点を規定し、前記関数呼び出しにより規定された前記演算は、前記規定された点で前記経路に接している角度を決定することを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項２０】
前記読み込まれた関数呼び出しは、ＰＡＴＨＴＡＮという関数名を含めることにより前記規定された演算を規定することを特徴とする請求項１７に記載のコンピュータ可読媒体。
【請求項２１】
前記規定された経路は、表示可能であり、前記方法は、さらに、前記演算の前記実行の結果を使用して前記経路に接するテキストといっしょに前記経路を表示することを含むことを特徴とする請求項１４、１６、または１９に記載のコンピュータ可読媒体。
【請求項２２】
前記関数呼び出しにより規定された前記演算は、前記経路の長さを決定することを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項２３】
前記読み込まれた関数呼び出しは、ＰＡＴＨＬＥＮという関数名を含めることにより前記規定された演算を規定することを特徴とする請求項２２に記載のコンピュータ可読媒体。
【請求項２４】
前記方法は、さらに、前記演算の前記実行の結果を使用して前記経路の長さとともに前記経路を表示することを含むことを特徴とする請求項２３に記載のコンピュータ可読媒体。
【請求項２５】
前記関数呼び出しにより規定された前記演算は、前記経路により囲まれる領域の面積を決定することを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項２６】
前記読み込まれた関数呼び出しは、ＰＡＴＨＡＲＥＡという関数名を含めることにより前記規定された演算を規定することを特徴とする請求項２５に記載のコンピュータ可読媒体。
【請求項２７】
前記方法は、さらに、前記演算の前記実行の結果を使用して前記経路により囲まれる領域の面積とともに前記経路を表示することを含むことを特徴とする請求項２５に記載のコンピュータ可読媒体。
【請求項２８】
前記読み込まれた関数呼び出しは、さらに、（１）第２の経路と（２）デカルト座標の１点とを規定し、前記関数呼び出しにより規定された前記演算は、デカルト座標で規定された前記点に最も近い前記２つの規定された経路の前記交差点を示すことを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項２９】
前記読み込まれた関数呼び出しは、ＰＡＴＨＩＮＴという関数名を含めることにより前記規定された演算を規定することを特徴とする請求項２８に記載のコンピュータ可読媒体。
【請求項３０】
前記読み込まれた関数呼び出しは、さらに、（１）直線と（２）デカルト座標の１点とを規定し、前記関数呼び出しにより規定された前記演算は、デカルト座標で規定された前記点に最も近い前記規定された経路と前記規定された直線との前記交差点を示すことを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項３１】
前記読み込まれた関数呼び出しは、ＰＡＴＨＲＡＹＩＮＴという関数名を含めることにより前記規定された演算を規定することを特徴とする請求項３０に記載のコンピュータ可読媒体。
【請求項３２】
前記経路は、一連のセグメントからなり、前記読み込まれた関数呼び出しは、さらに、前記経路上の中間点の位置を示す座標を規定し、前記関数呼び出しにより規定された前記演算は、前記一連のセグメントのうちの、前記中間点が置かれているセグメントを示すことを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項３３】
前記読み込まれた関数呼び出しは、ＰＡＴＨＳＥＧＭＥＮＴという関数名を含めることにより前記規定された演算を規定することを特徴とする請求項３２に記載のコンピュータ可読媒体。
【請求項３４】
前記経路は、一連のセグメントからなり、前記関数呼び出しにより規定された前記演算は、前記一連のセグメントの中のセグメントの個数を決定することを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項３５】
前記読み込まれた関数呼び出しは、ＰＡＴＨＳＩＺＥという関数名を含めることにより前記規定された演算を規定することを特徴とする請求項３４に記載のコンピュータ可読媒体。
【請求項３６】
前記読み込まれた関数呼び出しは、さらに、（１）有向距離と（２）デカルト座標の第１の点とを規定し、前記関数呼び出しにより規定された前記演算は、前記第１の点に最も近い前記規定された経路から前記規定された距離のところにある第２の点を示すことを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項３７】
前記読み込まれた関数呼び出しは、ＰＯＩＮＴＩＮＰＡＴＨという関数名を含めることにより前記規定された演算を規定することを特徴とする請求項３６に記載のコンピュータ可読媒体。
【請求項３８】
前記関数呼び出しにより規定された前記演算は、前記規定された経路に束縛される結果点を示すことを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項３９】
前記読み込まれた関数呼び出しは、ＰＯＩＮＴＯＮＰＡＴＨという関数名を含めることにより前記規定された演算を規定することを特徴とする請求項３８に記載のコンピュータ可読媒体。
【請求項４０】
スプレッドシートセルを評価するためのコンピューティングシステムにおける方法であって、
前記スプレッドシートセル内に格納されている関数呼び出しを読み込み、前記関数呼び出しは（１）任意の幾何学的経路を規定し、（２）演算が前記規定された経路に対し実行されることと、
前記規定された経路に対し前記規定された演算を実行することと、
前記規定された経路に対し前記規定された演算を実行することにより生成された１つまたは複数の値を前記スプレッドシートセルの前記評価された値として規定することとを含むことを特徴とする方法。
【請求項４１】
スプレッドシートセルを評価するためのコンピューティングシステムであって、
前記スプレッドシートセル内に格納されている関数呼び出しを読み込み、前記関数呼び出しは（１）任意の幾何学的経路を規定し、（２）演算が前記規定された経路に対し実行される手段と、
前記規定された経路に対し前記規定された演算を実行する手段と、
前記規定された経路に対し前記規定された演算を実行することにより生成された１つまたは複数の値を前記スプレッドシートセルの前記評価された値として規定する手段とを備えることを特徴とするコンピューティングシステム。
【請求項４２】
スプレッドシートセルを評価するためのコンピューティングシステムであって、
前記スプレッドシートセルの内容を格納するメモリであって、前記スプレッドシートセルの前記内容は関数呼び出しを含み、前記関数呼び出しは（１）任意の幾何学的経路と（２）前記規定された経路に対し実行される演算とを規定するメモリと、
（１）前記規定された経路に対し前記規定された演算を実行し、前記規定された経路に対し前記規定された演算を実行することにより生成された１つまたは複数の値を前記スプレッドシートセルの前記評価された値として規定するプロセッサと
を備えることを特徴とするコンピューティングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、幾何学的形状を含む図面を作成または修正するためのソフトウェアアプリケーションの分野を対象とする。
【背景技術】
【０００２】
ＭＩＣＲＯＳＯＦＴ  ＶＩＳＩＯ（登録商標）のような作図アプリケーション（Ｄｒａｗｉｎｇ  ａｐｐｌｉｃａｔｉｏｎｓ）を使用して、ユーザは図面文書（ｄｒａｗｉｎｇ  ｄｏｃｕｍｅｎｔｓ）を作成することができる。例えば、ユーザは、作図アプリケーションを使用することにより、直線セグメントまたは曲線セグメントを図面文書に追加することができる。ユーザは、そのようなセグメントを連結して、より複雑な形状を作成することができる。実際、ユーザがシングルステップで図面文書に組み込む、作図アプリケーションに用意されている定義済み形状は、「経路」（Ｐａｔｈ）とも呼ばれるセグメントの連結として定義されるのがふつうである。
【０００３】
ユーザは、そのような定義済み形状を図面文書に組み込んだ後、一方向または両方向にサイズを変更するための、テキスト、コネクタ（ｃｏｎｎｅｃｔｏｒｓ）、またはコールアウト（ｃａｌｌｏｕｔｓ）を貼り付けるなどの様々な方法で定義済み形状を操作することができる。
【０００４】
一部の作図アプリケーションでは、スプレッドシートエンジンを使用して、図面文書を作成または修正することに関連する計算を実行する。特に、作図アプリケーションは、図面文書の全部または一部を、それぞれ図面文書に関係する値を含むセルからなる１つまたは複数のスプレッドシートとして表現することができる。
【０００５】
例えば、作図アプリケーションは、ユーザが定義済み形状、またはユーザ定義形状などの新しいオブジェクトインスタンスを作成し、配置するために使用できるユーザインターフェースを備えることができる。いくつかの作図アプリケーションでは、ユーザによって作成されたそれぞれのオブジェクトインスタンスは、１つまたは複数のスプレッドシート内に格納されているデータにより表される。ユーザがユーザインターフェースを使用して既存のオブジェクトインスタンスを修正する場合、作図アプリケーションは、通常、オブジェクトを表すスプレッドシートデータの一部を修正することにより応答し、次に、オブジェクトインスタンスが後で表示される方法を変更する。
【０００６】
【特許文献１】米国特許出願第１０／８１１，２３４号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００７】
いくつかの定義済み形状は、形状の頂点などの形状の上の特定の点に相対的に、またはその形状を構成するセグメントの１つの中心で揃えられるテキストラベルまたはコネクタなどの特別なフィーチャ（ｆｅａｔｕｒｅｓ）を含む。そのような特別なフィーチャを持つ定義済み形状を作成する場合、開発者の側にかなりのレベルの手動労力が必要になることが多い。このような定義済み形状が、形状のサイズ変更、アスペクト比の変更、形状の変形などのユーザによる修正の対象となる場合、その特別なフィーチャを適切に表示するように形状をデザインすることは、ユーザがそれをどのように修正しようと、特に難しい場合がある。
【０００８】
さらに、ユーザ定義形状および他のユーザ定義経路とともに使用するそのような特別なフィーチャを備えることは望ましいが、そのようなことを可能にする利用できるツールはない。
【０００９】
上記の説明を考慮すると、任意の経路に対する特別な作図フィーチャをサポートする新しい関数があれば、大いに役立つであろう。
【００１０】
はじめに
任意に定義された経路に対する演算を実行し、スプレッドシートセル−作図アプリケーションを使用して生成される図面を表すために使用されるスプレッドシートセルなど−から呼び出すことができる関数を備えるソフトウェアファシリティ（ソフトウェアにより実現する情報処理機能のこと、以下「ファシリティ」）について説明する。開発者は、これらの関数を、例えば、様々な特別なフィーチャを持つ定義済み形状を定義するために使用することができる。開発者は、さらに、これらの関数を使用することにより、作図プログラムのユーザが形状およびその他の経路を自ら作成し、特別なフィーチャを適用するようにできる。
【００１１】
このような特別なフィーチャは、形状またはその他の経路に結合された、さもなくば、形状やその他の経路に接するテキスト、および形状の面積および／またはその辺の長さの表示された指標（指示）を含むことができる。
【課題を解決するための手段】
【００１２】
いくつかの実施形態では、ファシリティは、任意の経路に対する演算を実行する、例えば、経路の長さを決定する、閉路の面積を決定する、経路にそった道のりのある割合のところにある点を決定する、他の点に最も近いその経路上の点を決定する、経路内のセグメントの個数を決定する、その長さ上の特定の点における経路の接線の形を決定する、および２つの経路の交差点を決定する関数を備える。
【００１３】
いくつかの実施形態では、ファシリティにより提供される関数は、経路全体に関して、または経路の特定のセグメントに関して、呼び出すことができる。いくつかの実施形態では、このファシリティにより提供される関数は、経路または経路セグメント上の絶対位置または相対位置のいずれかを参照して呼び出すことができる。
【発明を実施するための最良の形態】
【００１４】
図１は、コンピュータシステム、およびファシリティが実行される他のデバイスの少なくともいくつかに通常は組み込まれるコンポーネントのいくつかを示すブロック図である。これらのコンピュータシステムおよびデバイス１００は、コンピュータプログラムを実行するための１つまたは複数の中央演算処理装置（「ＣＰＵ」）１０１、使用中にプログラムおよびデータ−データ構造体を含む−を格納するためのコンピュータメモリ１０２、プログラムおよびデータを永続的に格納するためのハードドライブなどの永続的記憶デバイス１０３、コンピュータ可読媒体上に格納されているプログラムおよびデータを読み込むためのＣＤ−ＲＯＭドライブなどのコンピュータ可読媒体ドライブ１０４、およびプログラムおよび／またはデータ−データ構造体を含む−をやり取りするためにインターネットなどを介してコンピュータシステムを他のコンピュータシステムに接続するためのネットワーク接続１０５を含むことができる。上記のように構成されたコンピュータシステムは、通常、ファシリティの演算をサポートするために使用されるが、当業者であれば、様々なタイプおよび構成のデバイスを使用して、また様々なコンポーネントを備えて、実装することができることは理解するであろう。
【００１５】
図２は、ファシリティによって使用される複数のコンポーネントおよびそれらの相互の関係を示すコンポーネント図である。１つの形状を図面文書に追加するために、ユーザは、作図アプリケーションのユーザインターフェース２１０を使用して、形状ライブラリ２２０から形状を選択し、文書内に配置する。これらのユーザインターフェースの操作の結果として、データが文書を表す１つまたは複数のユーザスプレッドシート２３０に追加される。追加されるデータは、経路定義２３１とともに、それぞれ経路定義を参照するファシリティにより提供される関数のうちの１つまたは複数の呼び出し２３２を含む。関数呼び出しを解決するために、スプレッドシートエンジン２４０は、関数ライブラリ２５０内の関数を呼び出す。その後、形状は、経路定義の内容、および関数呼び出しを評価した際に生成される１つまたは複数の値に基づいて表示文書２６０内に表示される。
【００１６】
いくつかの実施形態では、経路定義データのどれかが変更された場合、スプレッドシートエンジンは、その経路定義を参照している各関数を、再びその関数を呼び出すことにより再評価する。
【００１７】
関数のコンテキスト
それぞれの関数は、関数が作用する経路−つまり、一連の曲線セグメントまたは直線セグメントジオメトリオブジェクト−を示す少なくとも経路参照引数（以下で「ｐａｔｈＲｅｆ」、およびバリアント（ｖａｒｉａｎｔｓ）として示されている）を取る。この参照は、スプレッドシートエンジンによっては実装が異なる場合もある。いくつかの実施形態では、経路参照は、経路参照セルの識別情報、すなわち、幾何的な行などの、経路をまとめて定義するセルのより大きなグループを表す特別な経路参照セルの識別情報（例えば、経路参照セルの行／列の位置または名前）を含む。例えば、Ｇｅｏｍｅｔｒｙ１．Ｐａｔｈという名前の経路参照セルにより表されるセルの集合で定義された幾何学的経路の長さを計算するために、Ｇｅｏｍｅｔｒｙ１．ＰａｔｈをＰＡＴＨＬＥＮ関数の経路参照引数として受け渡すＰＡＴＨＬＥＮ関数−以下で詳述−の呼び出しは、Ｕｓｅｒ．Ｔｍｐという名前のセル内に格納される。 
User.Tmp=PATHLEN(Geometry1.Path)
【００１８】
いくつかの実施形態では、特別なトリガ再計算ロジックがそれぞれの経路参照セルに付随しており、そのため、参照先ジオメトリに影響を与えるセルが変化した場合、参照側関数呼び出しも再計算される。
【００１９】
いくつかの関数では、呼び出し側が経路の特定のセグメントに対する演算を規定することができる。セグメントは、セグメントタイプ（以下では、「ＳｅｇＴｙｐｅ」およびバリアントとして示される）およびセグメントインデックス（ｓｅｇｍｅｎｔ  ｉｎｄｅｘ）（以下では、「ｓｅｇＩＸ」およびバリアントとして示される）により参照される。以下の表１は、使用可能なセグメントタイプを示している。
【００２０】
【表１】
2006085671.tif 000003
【００２１】
セグメントタイプおよびセグメントインデックス引数は、通常、オプションである。与えられない場合、セグメントタイプはＰＳＴｙｐｅ＿ＷｈｏｌｅＰａｔｈであり、セグメントインデックスは無視され、経路全体が参照される。セグメントタイプがＰＳＴｙｐｅ＿ＦｒｏｍＢｅｇｉｎである場合、セグメントインデックスを使用して経路の先頭からセグメントを選択するが、インデックスを０にすると、経路の最初のセグメントを規定することになる。セグメントタイプがＰＳＴｙｐｅ＿ＦｒｏｍＥｎｄである場合、セグメントインデックスを使用して経路の末尾からセグメントを選択するが、インデックスを０にすると、経路の最後のセグメントを規定することになる。
【００２２】
無効なセグメントタイプまたは無効なセグメントインデックスが与えられると、＃ＲＥＦエラーが関数によって返される。
【００２３】
セグメントタイプで末尾という意味を使用すると（ＰＳＴｙｐｅ＿ＦｒｏｍＥｎｄ）、このファシリティにより、「give me the point half way along the last segment（最後のセグメントの中間に点を規定）」といったロジックを簡単に表現できる。これは、Ｖｉｓｉｏ動的コネクタなど、含まれるセグメントの個数が予測できない形状の場合に特に重要である。
【００２４】
幾何学関数のいくつかは、デカルト座標（ｘ，ｙ）を引数として取る。これらは、与えられた経路参照の局所座標空間内にあると仮定される。これらの引数に対して座標変換は実行されない。
【００２５】
幾何学関数のいくつかは、経路座標（ｔ，ｒ）を引数として取る。最も単純な形では、ｔは経路に沿った割合、ｒはその点で経路に垂直なその点からの距離オフセットである。図３は、サンプル経路に相対的なサンプル経路座標を示す文書図である。図３は、単一の曲線セグメント３０１を持つ経路を示している。曲線は、始点３０２と終点３０３を持つ。この図は、経路座標（０．５，．５ｉｎ．）を持つ点３０４を示している。点３０４は、ｔ＝０．５に従って、経路始点３０２から経路終点３０３までの道のりの５０％を横断し、その後、ｒ＝．５ｉｎ．に従って、その点でそのセグメントの法線方向に０．５ｉｎ．横断することにより、到達できることがわかる。
【００２６】
経路座標をパラメータとして取る幾何学関数は、通常、さらに、ユーザがパラメータｔを異なる形で表すことができるオプションのパラメータタイプ引数（以下では、「ｐａｒａｍＴｙｐｅ」およびバリアントとして示される）を持つ。以下の表２は、使用可能なパラメータタイプを示している。
【００２７】
【表２】
2006085671.tif 000004
【００２８】
パラメータタイプが与えられない場合、既定値はＰＰＴｙｐｅ＿Ｐｅｒｃｅｎｔａｇｅとなる。ＰＰＴｙｐｅ＿Ｐｅｒｃｅｎｔａｇｅの場合、ｔ＝０は経路の始点であり、ｔ＝１は経路の終点である。ｔ＜０の場合、ｔは、始点での経路の接線角の方向に経路の始点により定義される射線に沿った−ｔ距離と理解される。ｔ＞０の場合、ｔは、終点での経路の接線角の方向に経路の終点により定義される射線にそったｔ−１の距離と理解される。
【００２９】
図４は、サンプル経路に対するｔの異なる範囲を示す文書図である。図４は、単一の曲線セグメント４０１からなる経路を示している。経路は、始点４０２と終点４０３を持つ。０と１の間のｔの値は、曲線セグメント４０１上に直接載る。ｔの負の値は、原点が始点４０２にあり、方向が始点４０２における曲線セグメント４０１の接線である射線に載る。同様に、１よりも大きいｔの値は、その原点として曲線セグメントの終点４０３を持ち、その方向として終点４０３で曲線セグメントに接する接線を持つ射線４０５上に載る。
【００３０】
他のパラメータタイプはすべて、ＰＰＴｙｐｅ＿Ｐｅｒｃｅｎｔａｇｅに変換されることができる。したがって、幾何学関数は、非既定パラメータタイプで呼び出された場合、ＰＰＴｙｐｅ＿Ｐｅｒｃｅｎｔａｇｅ形式に変換され、正規化された空間内で演算を続行することができる。非既定パラメータタイプからＰＰＴｙｐｅ＿Ｐｅｒｃｅｎｔａｇｅへの変換は、以下のように定義される。
【００３１】
ＰＰＴｙｐｅ＿ＰｅｒｃｅｎｔａｇｅＥｎｄでは、ｔ＝０を経路の終点として、ｔ＝１を経路の始点として定義する。ＰＰＴｙｐｅ＿ＰｅｒｃｅｎｔａｇｅＥｎｄは、単純な公式「１−ｔ」でＰＰＴｙｐｅ＿Ｐｅｒｃｅｎｔａｇｅに変換される。
【００３２】
ＰＰＴｙｐｅ＿Ｄｉｓｔａｎｃｅは、ｔを始点からの経路に沿った距離として定義する。０＜ｔ＜ｌｅｎｇｔｈ（経路の長さ）については、ＰＰＴｙｐｅ＿Ｐｅｒｃｅｎｔａｇｅは、公式「ｔ／ｌｅｎｇｔｈ」で得られる。ｔ＜０では、変換は不要である−ｔはＰＰＴｙｐｅ＿ＤｉｓｔａｎｃｅでもＰＰＴｙｐｅ＿Ｐｅｒｃｅｎｔａｇｅの場合と同じである。ｔ＞ｌｅｎｇｔｈでは、ＰＰＴｙｐｅ＿Ｐｅｒｃｅｎｔａｇｅへの変換は、「ｔ−ｌｅｎｇｔｈ＋１」で得られる。
【００３３】
ＰＰＴｙｐｅ＿ＤｉｓｔａｎｃｅＥｎｄは、ｔを終点からの経路に沿った距離として定義する。０＜ｔ＜ｌｅｎｇｔｈ（経路の長さ）については、ＰＰＴｙｐｅ＿Ｐｅｒｃｅｎｔａｇｅは、公式「１−ｔ／ｌｅｎｇｔｈ」で得られる。ｔ＜０では、ＰＰＴｙｐｅ＿Ｐｅｒｃｅｎｔａｇｅ形式は、「１−ｔ」で得られる。ｔ＞ｌｅｎｇｔｈでは、ＰＰＴｙｐｅ＿Ｐｅｒｃｅｎｔａｇｅへの変換は、「ｌｅｎｇｔｈ−ｔ」で得られる。
【００３４】
無効なパラメータタイプ引数が与えられると、＃ＶＡＬＵＥエラーが関数によって返される。
【００３５】
パラメータタイプ距離の意味（ＰＰＴｙｐｅ＿ＤｉｓｔａｎｃｅおよびＰＰＴｙｐｅ＿ＤｉｓｔｓｎｃｅＥｎｄ）を与えると、ファシリティを使用することにより経路にそった距離を容易に計算できる。
【００３６】
パラメータタイプの終点の意味（ＰＰＴｙｐｅ＿ＰｅｒｃｅｎｔａｇｅＥｎｄおよびＰＰＴｙｐｅ＿ＤｉｓｔｓｎｃｅＥｎｄ）を与えると、ファシリティを使用することにより、「．５  ｉｎｃｈｅｓ  ｆｒｏｍ  ｔｈｅ  ｅｎｄ」（終点から．５インチ）のようなロジックを簡単に表現できる。
【００３７】
いくつかの実施形態では、それぞれの関数が呼び出されると、ファシリティは、まず、その関数に渡すそれぞれの経路の正規化されたバージョンを作成する。正規化の一態様では、図面内の経路のコンテキストに適応するために作図プログラムにより経路に追加された表面的なセグメントを除去する。これらの表面的なセグメントの一例は、「ラインジャンプ」、つまり重なり合う直線が交差していないことを明確にする何らかの作図プログラムにより経路に追加された弧である。
【００３８】
図５は、図面内で他のセグメントと重なり合うように文書内に配置した場合に、ラインジャンプが追加された経路を示す図面図である。図は、セグメント５０１〜５０８からなるこの経路が他のセグメント５１１〜５１３に相対的に配置されていることを示す。弧５０２、５０４、および５０７は、経路の実質的部分ではないが、経路がセグメント５１１〜５１３と交差しないことを明確にするために作図プログラムにより自動的に追加された。この経路に対する定義は、以下の表３に示されている。
【００３９】
【表３】
2006085671.tif 000005
【００４０】
この経路を正規化するために、ファシリティは、表３の線３、５、および８上に示されているａｒｃ  ｔｏプリミティブ−図５に示されている表面的な経路セグメント５０２、５０４、および５０７に対応する−が削除されている他の経路を生成し、ａｒｃ  ｔｏプリミティブにより以前に分離されたｌｉｎｅ  ｔｏプリミティブをマージする。これにより、以下の表４に示されている正規化された経路定義が得られる。
【００４１】
【表４】
2006085671.tif 000006
【００４２】
図６は、表４に示されている正規化された経路定義内で定義されている正規化された経路を示す経路図である。正規化された経路は、２本の直線セグメント６０１および６０２のみを含むことがわかる。表３に示されている経路定義内で定義されている経路を参照しつつ呼び出されるファシリティにより提供される関数がこの正規化を実行してから、経路の正規化されたバージョンに対しその後の演算を実行する。
【００４３】
関数の説明
このファシリティのいくつかの実施形態により提供される関数について以下で説明する。かっこ（「［］」）で囲まれた関数引数は、いくつかの実施形態では、オプション引数である。省略記号（「．．．」）は、いくつかの実施形態では、可変個の引数を受け付けられることを示す。関数は、二次元空間に対応する引数とともに示されているが、当業者であれば、代わりに、適切な引数を使用して、三次元に適用できることを理解するであろう。
【００４４】
【表５】
2006085671.tif 000007
【００４５】
ＰＡＴＨＡＲＥＡ関数は、閉路の面積を計算する。経路が閉じていない場合、面積として０が返される。
【００４６】
【表６】
2006085671.tif 000008
【００４７】
ＰＡＴＨＩＮＴ関数は、（ｘＨｉｎｔ，ｙＨｉｎｔ）に最も近い２つの経路の最も近い交差点を計算する。その結果は、ｐａｔｈＲｅｆ１に対する局所座標による点（ｘ，ｙ）である。第１の経路は、引数ｐａｔｈＲｅｆ１、ｓｅｇＴｙｐｅ１、およびｓｅｇＩＸ１により定義される。第２の経路は、引数ｐａｔｈＲｅｆ２、ｓｅｇＴｙｐｅ２、およびｓｅｇＩＸ２により定義される。その結果は、ｘＨｉｎｔおよびｙＨｉｎｔに最も近い経路の交差点、またはｘＨｉｎｔおよびｙＨｉｎｔが規定されていなければ（０，０）となる。交差点が見つからない場合、＃ＶＡＬＵＥエラーが返される。
【００４８】
【表７】
2006085671.tif 000009
【００４９】
ＰＡＴＨＬＥＮ関数は、ｐａｔｈＲｅｆ、ｓｅｇＴｙｐｅ、およびｓｅｇＩＸにより定義される経路の長さを計算する。
【００５０】
【表８】
2006085671.tif 000010
【００５１】
ＰＡＴＨＰＡＲＡＭ関数は、与えられた点（ｘ，ｙ）に最も近い経路上の点の点結果（ｔ，ｒ）を計算する。経路は、ｐａｔｈＲｅｆ、ｓｅｇＴｙｐｅ、およびｓｅｇＩＸにより定義される。引数ｐａｒａｍＴｙｐｅは、結果ｔのパラメータタイプを定義する。
【００５２】
【表９】
2006085671.tif 000011
【００５３】
ＰＡＴＨＰＯＩＮＴ関数は、経路に沿って点（ｔ，ｒ）により定義された点の点結果（ｘ，ｙ）を計算する。経路は、ｐａｔｈＲｅｆ、ｓｅｇＴｙｐｅ、およびｓｅｇＩＸにより定義される。引数ｐａｔｈＴｙｐｅは、引数ｔのパラメータタイプを定義する。
【００５４】
【表１０】
2006085671.tif 000012
【００５５】
ＰＡＴＨＲＡＹＩＮＴ関数は、経路と無限直線の交差点を計算する。経路は、ｐａｔｈＲｅｆ、ｓｅｇＴｙｐｅ、およびｓｅｇＩＸにより定義される。無限直線は、点（ｘ，ｙ）と方向角により定義される。その結果は、ｘＨｉｎｔおよびｙＨｉｎｔに最も近い経路の交差点、またはｘＨｉｎｔおよびｙＨｉｎｔが規定されていなければ（０，０）となる。交差点が見つからない場合、＃ＶＡＬＵＥエラーが返される。
【００５６】
【表１１】
2006085671.tif 000013
【００５７】
ＰＡＴＨＳＥＧＭＥＮＴ関数は、ｐａｔｈＲｅｆにより定義される経路上の点を含むセグメントインデックスを計算する。点は、パラメータｔおよびパラメータタイプｐａｒａｍＴｙｐｅにより定義される。
【００５８】
【表１２】
2006085671.tif 000014
【００５９】
ＰＡＴＨＳＩＺＥ関数は、ｐａｔｈＲｅｆにより定義された経路内のセグメントの個数を計算する。
【００６０】
【表１３】
2006085671.tif 000015
【００６１】
ＰＡＴＨＴＡＮ関数は、経路上の点における接線角を計算する。経路は、ｐａｔｈＲｅｆ、ｓｅｇＴｙｐｅ、およびｓｅｇＩＸにより定義される。点は、パラメータｔおよびパラメータタイプｐａｒａｍＴｙｐｅにより定義される。
【００６２】
【表１４】
2006085671.tif 000016
【００６３】
ＰＯＩＮＴＩＮＰＡＴＨ関数は、経路の内側、または外側で束縛されているデカルト座標点の結果を返す。結果は、入力点（ｘ，ｙ）または境界基準（ｂｏｕｎｄｉｎｇ  ｃｒｉｔｅｒｉａ）に一致する最も近い点である。境界基準は、経路ｐａｔｈＲｅｆ、内側／外側引数ｏｕｔｓｉｄｅ、およびインセット／アウトセット（ｉｎｓｅｔ／ｏｕｔｓｅｔ）距離ｒからなる。内側／外側引数が真の場合、関数は、その経路の外側の点を返す。内側／外側引数が偽の場合（既定値）、関数は、その経路の内側の点を返す。インセット／アウトセット距離を使用すると、境界を拡大できる。
【００６４】
図７は、ＰＯＩＮＴＩＮＰＡＴＨ関数に対し規定可能な場合を例示する文書図である。図７は、経路７０１を示している。図７は、さらに、経路７０１に基づくアウトセット／インセット経路７０２を示す。ｒ  ７０３の正の値では、アウトセット／インセット経路は図に示されているように経路７０１の外側にある。ｒ  ７０４の負の値では、アウトセット／インセット経路は経路７０１の内側にある（図に示されていない）。外側引数の値に応じて、関数は、外側／インセット経路の内側にある７０５（値が偽の場合）、または外側／セット経路の外側にある７０６（値が真の場合）点かどうかを検査する。
【００６５】
この関数は、以下の処理を実行する。第１に、入力点（ｘ，ｙ）は経路上のヒットテストである。つまり、ファシリティは、その点が経路の内側にあるかどうかを判定するということである。点が内側にあり、要求が内側に境界を付けるか、または点が外側にあり、要求が外側に境界を付け、アウトセットｒは０である場合、結果は、入力点（ｘ，ｙ）である。そうでない場合、ファシリティは、（ｘ，ｙ）への経路上の最も近い点を計算する。アウトセットｒが０の場合、これが結果である。そうでない場合、ファシリティは、入力点（ｘ，ｙ）に最も近い点からの距離を計算する。値ｒＡｃｔｕａｌは、以下のように定義される。 
double rActual = (bIsInside ? -dIstance : distance);
以下の条件が満たされない場合、
if ((bOutside && r < rOffset)‖(!bOutside && r> rOffset))
結果は、入力点（ｘ，ｙ）である。そうでない場合、ファシリティは、結果の点を、最も近い点および点（ｘ，ｙ）により定義される経路からの法線角の方向のオフセットｒとして計算する。
【００６６】
【表１５】
2006085671.tif 000017
【００６７】
ＰＯＩＮＴＩＮＴＯＰＡＴＨ関数は、経路に束縛されているデカルト座標点の結果を返す。経路は、ｐａｔｈＲｅｆにより定義される。結果は、境界基準に一致する経路上の最も近い点である。境界基準は、境界タイプｂｏｕｎｄＴｙｐｅおよび一連の値からなる。境界基準はいくつでも与えることができる。以下の表５は、使用可能な境界タイプを示している。
【００６８】
【表１６】
2006085671.tif 000018
【００６９】
入力点（ｘ，ｙ）の経路座標形式（ｔ，ｒ）は、ＰＡＴＨＰＡＲＡＭと同じプロセスを使用して計算される。その後、経路座標形式は、境界基準を使用して束縛される。入力点の経路座標形式の境界を設定する適当な方法が説明されている（例えば、特許文献１参照）。すると、結果の点は、ＰＡＴＨＰＯＩＮＴと同じプロセスを使用して、束縛されている（ｔ，ｒ）から計算される。
【００７０】
関数使用例
本明細書で説明されている関数は、広範な方法で使用することができるが、少数の代表的使用例を以下に示す。
【００７１】
図８は、第１の関数の使用例を示す図面図である。図は、３つのセグメント８００、８１０、および８２０を持つ経路に基づく形状を示している。経路のそれぞれのセグメントに対応する、形状のそれぞれの辺の長さとインチが、ｌｅｎｇｔｈｓ  ８０１、８１１、および８２１と表示される。さらに、形状により囲まれている領域の面積８３１が、形状の内側に平方インチ単位で表示される。
【００７２】
辺の長さおよび形状の面積表示は、以下のようにしてファシリティにより提供される関数を使用して生成することができる。形状は、以下に示されているようにＰＡＴＨＡＲＥＡ関数を呼び出すことにより決定することができる。
【００７３】
【表１７】
2006085671.tif 000019
【００７４】
経路内のセグメントの数は、以下に示されているようにＰＡＴＨＳＩＺＥ関数を呼び出すことにより決定することができる。
【００７５】
【表１８】
2006085671.tif 000020
【００７６】
経路内に３本のセグメントがあると判定した後、ＰＡＴＨＬＥＮ関数を以下のように３回呼び出して、それぞれの辺の長さを決定することができる。
【００７７】
【表１９】
2006085671.tif 000021
【００７８】
図９および１０は、第２の関数使用例を示している。図９は、第１の例の初期状態を示す文書図である。図９は、単一のセグメント９００を含む経路を示している。ラベルテキスト９２０は、経路の長さの中心にあるコントロールハンドル９１０の初期既定配置に基づいて経路とともに表示される。以下に示されているＰＡＴＨＰＯＩＮＴ関数を以下のように呼び出すことにより、制御点の初期デカルト座標を決定できる。
【００７９】
【表２０】
2006085671.tif 000022
【００８０】
以下に示されているＰＡＴＨＴＡＮ１関数を呼び出すことにより、ラベルテキストを表示するための角度を決定できる。
【００８１】
【表２１】
2006085671.tif 000023
【００８２】
図１０は、第２の状態の第２の例を示す文書図である。図１０は、ユーザが図９に示されている制御点９１０を図１０で制御点１０１０として示されている新しい位置に移動した後の経路を示している。制御点が移動された後、以下に示されているＰＯＩＮＴＩＮＰＡＴＨ関数の呼び出しを行って、ラベルテキストを表示する新しい点１０１１を決定することができる。 
(xdisplay point, Ydisplay point) =
POINTINPATH ( pathRef, x control point, y control point )
ＰＯＩＮＴＩＮＰＡＴＨ関数は、経路１０００上の表示点１０１１に対するデカルト座標に戻る。これらのデカルト座標を経路座標に変換するために、以下のようにＰＡＴＨＰＡＲＡＭ関数を呼び出すことができる。 
(tdisplay points, rdisplay point) =
PATHPARAM ( pathRef, xcontrol points, ycontrol point )
その後、表示されるテキストの角度を、ＰＡＴＨＴＡＮ関数を以下のように呼び出すことにより決定することができる。 
PATHTAN ( pathRef, tdisplay point )
当業者であれば、本明細書で説明されている関数は、上で説明されている内容を超える広範な目的のために使用できることを理解するであろう。
【００８３】
結論
当業者であれば、上述のファシリティは、様々な方法で直接的に適合させるか、または拡張できることを理解するであろう。例えば、いくつかの実施形態では、スプレッドシートが作図プログラムに関連付けられているかいないかに関係なく、説明されている関数の呼び出しをスプレッドシートのセル内に入れることができる。いくつかの実施形態では、説明されている関数は、文書処理プログラムにより公開されているマクロ機能、または他の様々な種類のスクリプティングインターフェースなど、スプレッドシート以外のアプリケーションプログラムの機能を使用して呼び出すことができる。いくつかの実施形態では、説明されている関数は、どのようなプログラムからでも呼び出すことができる。前記の説明では好ましい実施形態を参照しているが、本発明の範囲は、特許請求の範囲および本明細書に記載されている要素のみにより定められる。
【図面の簡単な説明】
【００８４】
【図１】コンピュータシステム、およびファシリティ（ｆａｃｉｌｉｔｙ）が実行される他のデバイスの少なくともいくつかに通常は組み込まれるコンポーネントのいくつかを示すブロック図である。
【図２】ファシリティによって使用される複数のコンポーネントおよびそれらの相互作用を示すコンポーネント図である。
【図３】サンプル経路に相対的なサンプル経路座標を示す文書図である。
【図４】サンプル経路に対するｔの異なる範囲を示す文書図である。
【図５】図面内で他のセグメントと重なり合うように文書内に配置した場合に、ラインジャンプ（ｌｉｎｅ  ｊｕｍｐ）が追加された経路を示す図面図である。
【図６】表４に示されている正規化された経路定義内で見つける正規化された経路を示す経路図である。
【図７】ＰＯＩＮＴＩＮＰＡＴＨ関数に対し規定可能な場合を示す文書図である。
【図８】第１の関数の使用例を示す図面図である。
【図９】第１の例の初期状態を示す文書図である。
【図１０】第２の状態の第２の例を示す文書図である。
【符号の説明】
【００８５】
１００  コンピュータシステム
１０２  メモリ
１０３  永続的記憶装置
１０４  コンピュータ可読媒体ドライブ
１０５  ネットワーク接続
２２０  形状ライブラリ
２３０  ユーザシート
２３１  経路定義
２３２  関数呼び出し
２４０  スプレッドシートエンジン
２１０  ユーザインターフェース
２６０  表示されている文書
２５０  関数ライブラリ
【図１】
2006085671.tif 000024
【図２】
2006085671.tif 000025
【図３】
2006085671.tif 000026
【図４】
2006085671.tif 000027
【図５】
2006085671.tif 000028
【図６】
2006085671.tif 000029
【図７】
2006085671.tif 000030
【図８】
2006085671.tif 000031
【図９】
2006085671.tif 000032
【図１０】
2006085671.tif 000033
【外国語明細書】
2006085671000001.pdf