(57)【特許請求の範囲】
【請求項１】
ユーザが入力装置を操作することによってコンピュータ制御されたディスプレイ装置に表示されている複数のオブジェクトを動的に選択および操作する方法であって、前記表示されている複数のオブジェクトが、オブジェクトに基づく表現の一つの集合として記憶装置に記憶されている少なくとも一つのオブジェクトを含み、前記方法が、
（ａ）ユーザがアプリケータにアクセスするための手段を提供する工程と、
（ｂ）オペレータをアプリケータに関連させる手段を提供する工程と、
（ｃ）ディスプレイの一部分を横切って関連するオペレータを備えたアプリケータを掃引してアプリケータの掃引経路を定義する工程と、
（ｄ）アプリケータを掃引することによって定義された前記掃引経路において、コンピュータに認識されたオブジェクトが最初に表示された時間と他の表示されているオブジェクトが最初に表示された時間との間の関係を含む基準によって設定された範囲内に存在するオブジェクトを選択する工程と、
（ｅ）工程（ｄ）で選択された表示されているオブジェクトの全体に前記オペレータによって影響を与える工程と、
（ｆ）工程（ｅ）の実施後に、前記アプリケータの再掃引によって与えた前記影響を取り消す工程と、
を含むことを特徴とするオブジェクトを動的に選択および操作する方法。
【請求項２】
ユーザが入力装置を操作することによってコンピュータ制御されたディスプレイ装置に表示されている複数のオブジェクトを動的に選択および操作するコンピュータベースの方法であって、前記表示されている複数のオブジェクトがオブジェクトベースのデータ構造の一つの集合として記憶手段に記憶されている少なくとも一つのオブジェクトを含み、前記少なくとも一つのオブジェクトそれぞれが前記表示されている複数のオブジェクトの表現であって、前記方法が、
（１）前記入力装置に入力された前記ユーザの動きを追従可能なコンピュータオブジェクトであるアプリケータにアクセスする手段を前記ユーザに提供する工程と、
（２）表示されているオブジェクトに適用されると前記表示されているオブジェクト全体の性質に影響を及ぼすかまたは前記性質を変更可能な少なくとも一つのオペレータを前記アプリケータにリンクするコンピュータ手段を提供する工程と、
（３）前記アプリケータのための掃引経路をディスプレイ装置の一部の上に形成するワイプストロークの複数セグメントの列を定義するために、前記リンクされたオペレータから独立して前記ディスプレイ装置の前記一部を横切るように前記アプリケーターを物理的に動かすオペレータ工程であって、前記コンピュータ手段が前記ワイプストロークの複数セグメントそれぞれの位置の識別及び記憶を実施可能であり、前記ワイプストロークの複数セグメントそれぞれの前記位置が、前記表示された複数のオブジェクトの複数の位置について相対的に前記掃引経路を作る、前記工程と、
（４）前記ワイプストロークの複数のセグメントの列が定義されると、前記ワイプストロークの前記列におけるそれぞれのセグメントについて、前記アプリケータを物理的に動かすことで形成された前記掃引経路から、空間的基準を満足するオブジェクトの生成から所定の長さの時間内に作られた複数のオブジェクトを含む基準に基づいた所定距離内に存在する全ての表示されている複数のオブジェクトをコンピュータによって認識する工程と、
（５）コンピュータによって前記操作によってリンクされたオペレータを、工程（４）において識別された前記複数の表示オブジェクトのそれぞれにのみ適用することによって、前記表示オブジェクトを前記ユーザに見えるように表現している前記データ構造を変更する工程と、
を含み、
前記工程（１）から工程（５）の複数工程がコンピュータを用いたワイプセッションの間実施され、前記実施が、前記アプリケーターの突然の逆方向の操作が存在するかまたは逆方向の操作を存在させずに前記アプリケーターを物理的に動かすことを含む、
コンピュータベースの方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、『グラフィックユーザインタフェースのための時間−空間のオブジェクトの包含(Time-Space Object Containment For Graphical User Interface)』と称する米国出願第０７／８６９，５５９号と同日出願される。
【０００２】
本発明は、コンピュータ制御された図形の描画および編集のためのシステムと方法に関し、より詳細には、オブジェクト指向ディスプレイ表現に基づいたそのような描画編集システムに関する。
【０００３】
【従来の技術及び発明が解決しようとする課題】
一般的に、図形描画編集システムには２つの種類があり、それはペインティングプログラム(painting programs) と構造化描画プログラム(structured drawing programs) とである。ペインティングプログラムは、ユーザがライン（または、”スプレー”パターン("spray" patterns)）をペイントすることを可能にし、そして通常は画素の２次元配列である１つの画像に基づいた表現をユーザが消去することを可能にする。構造化描画プログラムは、ユーザが幾何学的に定義されたオブジェクトを生成し、修正し、そして削除することを可能にする。画像表現(image representation)と区別してのオブジェクトに基づく表現(object-based representation) は計算に関しての多くの利点を有するが、そのような表現のためのユーザインタフェースは一般的により多くの別個の（離散的）アクションを用い、そのことはユーザにとってより使いづらいものであった。特に、ノート型ディスプレイからホワイトボード型ディスプレイまでの種々の寸法のディスプレイに対するペン（または、スタイラス）入力装置を備えたコンピュータシステムに関しては困難な問題を有する。多くの描画システムは、描画することを可能とし、かつ、例えばペンに基づいた運動によって画像を消去することを可能にするとともに、それは画素配列画像表現に基づいて１つの画素毎に実現される。オブジェクトに基づく表現が使用される場合には、消去は、あるオブジェクトの周囲にループを描いて次に削除操作を喚起するような別個のアクションによってなされる。
【０００４】
この問題はグループでの会議および発表会を支援するための大規模な対話型ディスプレイにとってはより不都合なものである。１つの例は、1992年 5月 3日〜 7日、Monterey CA で開催されたHuman Factors in Computing Systemsに関する米国計算機学会(ACM) の会議の、1992年のＣＨＩの議事録で発表された研究論文に記述されるライブボード(Liveboard) である。そのライブボードはディスプレイのための画素マップに基づく表現を必要とするビットマップペインティングプログラムを用いるものである。これはオブジェクトを取り扱う際の柔軟性を非常に制限するものである。
【０００５】
本発明が目的とするものは、スクリーン上に表示されるオブジェクトを入力装置を用いて動的に選択しかつ操作する方法である。
【０００６】
本発明がさらに目的とするものは、オブジェクトに基づいた表現を生成しかつ修正するための入力装置を用いた表示システムである。
【０００７】
もう１つの本発明が目的とするものは、１つの運動で１つあるいは複数のオブジェクトを操作するための自然な手と腕の運動を利用することのできる連続運動感応入力装置を備えた表示システムである。
【０００８】
本発明がさらに目的とするものは、ユーザとオブジェクトに基づいた表現を用いた表示システムとの間の新規のインタフェース技術であり、それは、それが多様な高速かつ動的な表示の選択および操作を可能にするので強力であることを特徴とするが、それにもかかわらずそれは選択および操作がありふれたユーザアクションを備えるので自然なものである。
【０００９】
本発明は、オブジェクトに基づいた表現を用い、かつシステム表示スクリーン上に表示されるオブジェクトを選択し操作するための入力装置を有する表示システムを取り扱うものである。
【課題を解決するための手段】
【００１０】
本発明の請求項１に記載の態様は、ユーザが入力装置を操作することによってコンピュータ制御されたディスプレイ装置に表示されている複数のオブジェクトを動的に選択および操作する方法であって、前記表示されている複数のオブジェクトが、オブジェクトに基づく表現の一つの集合として記憶装置に記憶されている少なくとも一つのオブジェクトを含み、前記方法が、（ａ）ユーザがアプリケータにアクセスするための手段を提供する工程と、（ｂ）オペレータをアプリケータに関連させる手段を提供する工程と、（ｃ）ディスプレイの一部分を横切って関連するオペレータを備えたアプリケータを掃引してアプリケータの掃引経路を定義する工程と、（ｄ）アプリケータを掃引することによって定義された前記掃引経路において、コンピュータに認識されたオブジェクトが最初に表示された時間と他の表示されているオブジェクトが最初に表示された時間との間の関係を含む基準によって設定された範囲内に存在するオブジェクトを選択する工程と、（ｅ）工程（ｄ）で選択された表示されているオブジェクトの全体に前記オペレータによって影響を与える工程と、（ｆ）工程（ｅ）の実施後に、前記アプリケータの再掃引によって与えた前記影響を取り消す工程と、を含むことを特徴とするオブジェクトを動的に選択および操作する方法である。
さらに本発明の請求項２に記載の態様は、ユーザが入力装置を操作することによってコンピュータ制御されたディスプレイ装置に表示されている複数のオブジェクトを動的に選択および操作するコンピュータベースの方法であって、前記表示されている複数のオブジェクトがオブジェクトベースのデータ構造の一つの集合として記憶手段に記憶されている少なくとも一つのオブジェクトを含み、前記少なくとも一つのオブジェクトそれぞれが前記表示されている複数のオブジェクトの表現であって、前記方法が、（１）前記入力装置に入力された前記ユーザの動きを追従可能なコンピュータオブジェクトであるアプリケータにアクセスする手段を前記ユーザに提供する工程と、（２）表示されているオブジェクトに適用されると前記表示されているオブジェクト全体の性質に影響を及ぼすかまたは前記性質を変更可能な少なくとも一つのオペレータを前記アプリケータにリンクするコンピュータ手段を提供する工程と、（３）前記アプリケータのための掃引経路をディスプレイ装置の一部の上に形成するワイプストロークの複数セグメントの列を定義するために、前記リンクされたオペレータから独立して前記ディスプレイ装置の前記一部を横切るように前記アプリケーターを物理的に動かすオペレータ工程であって、前記コンピュータ手段が前記ワイプストロークの複数セグメントそれぞれの位置の識別及び記憶を実施可能であり、前記ワイプストロークの複数セグメントそれぞれの前記位置が、前記表示された複数のオブジェクトの複数の位置について相対的に前記掃引経路を作る、前記工程と、（４）前記ワイプストロークの複数のセグメントの列が定義されると、前記ワイプストロークの前記列におけるそれぞれのセグメントについて、前記アプリケータを物理的に動かすことで形成された前記掃引経路から、空間的基準を満足するオブジェクトの生成から所定の長さの時間内に作られた複数のオブジェクトを含む基準に基づいた所定距離内に存在する全ての表示されている複数のオブジェクトをコンピュータによって認識する工程と、（５）コンピュータによって前記操作によってリンクされたオペレータを、工程（４）において識別された前記複数の表示オブジェクトのそれぞれにのみ適用することによって、前記表示オブジェクトを前記ユーザに見えるように表現している前記データ構造を変更する工程と、を含み、前記工程（１）から工程（５）の複数工程がコンピュータを用いたワイプセッションの間実施され、前記実施が、前記アプリケーターの突然の逆方向の操作が存在するかまたは逆方向の操作を存在させずに前記アプリケーターを物理的に動かすことを含む、コンピュータベースの方法である。
【００１１】
本発明の１つの側面によれば、ユーザの制御下において１つのアプリケータ(applicator)が提供される。そのアプリケータはユーザの制御下での１つのオブジェクトである。アプリケータの位置は、スクリーン上に表示される場合、例えば入力装置としてのペンまたはマウスによるユーザの運動に追随する。もしペンが、例えば、ディスプレイ表面上を掃引されれば、２次元（２−Ｄ）のアプリケータオブジェクトがペンによって描かれる経路に沿って掃引される。そのアクションは、ホワイトボードの表面のワイピング(wiping)のために布またはスポンジを移動させることに類似しており、したがってそれはユーザにとっては自然なワイピング運動である。このワイピングアクションからのディスプレイへの作用は、ユーザによってアプリケータと関連づけられるオペレータ(operator)の性質に依存し、また表示されたどのオブジェクトが選択されかつ操作されるかについてユーザが決めた基準に依存する。
【００１２】
本発明のもう１つの側面によれば、アプリケータは表示されたオブジェクトに影響を及ぼすことができる複数のオペレータの１つに関連づけられている。例えば、グループ化し(grouping)、削除し(deleting)、カットし(cutting) 、複写し(copying) 、選択し(selecting) 、色づけし(coloring)、位置づけし(positioning) 、または取り消す(undoing) ような、多くの種類のオペレータが用いられてもよい。この同一の自然なペンのようなワイピングアクションを複数の異なったオブジェクトに影響するアクションに関連づける能力がこの発明的な技術の効力と一貫性を向上させるのである。
【００１３】
本発明のさらにもう１つの側面によれば、ワイピングアクションによって影響されるオブジェクトは、好ましくは、ユーザコマンドが欠落している場合に有効な省略時の基準によってユーザによって決定されるものであってもよい。使用される基準は多様な環境にわたるものである。例えば、２次元のワイピング運動によって交差するすべてのオブジェクトが選択されてもよく、あるいは、最小の共通部分またはしきい値の共通部分を満足するオブジェクトだけが選択されてもよい。また、使用される基準は、選択に関して、ワイピング運動から一定の距離の範囲内にあるすべてのオブジェクトを包含してもよく、あるいは、お互いが一定の時間間隔の範囲内に生成されたすべてのオブジェクトを包含してもよく、あるいは、任意述語(arbitrary predicate) によってフィルタされたオブジェクトを包含してもよい。
【００１４】
現在用いられているペインティングプログラムはいくつかのワイプのようなアクション（すなわち、ペインティング）を可能とするが、それらのプログラムは画像に基づいた表現にペインティングするのである。本発明は、オブジェクトに基づいた表現にワイピング技術を適用し、そうすることによって、ワイピングによって適用されるオペレータの範囲を一般化する。したがって、画像に基づいた表現とオブジェクトに基づいた表現との間の差異が本発明にとっては重要である。
【００１５】
オブジェクトに基づいた表現は独立して記述されたオブジェクトの集合から構成される。”オブジェクト”という用語はアプリケーション領域のセマンティックな（意味論的）側面(semantic aspect) を表現する（例えば、ワードプロセッサーでの文字、語、および文節、描画システムでのストローク、プロジェクト管理システムでの時間的なイベントおよび従属性(temporal events and dependencies)、など）。それぞれのオブジェクトは、そのオブジェクトの１組の特性を記述するデータ構造体によって表現される。特性は、位置的および視覚的属性だけでなく抽象的属性(abstract attributes) およびアプリケーション固有属性をも表現してもよい。それぞれのオブジェクトはポインターあるいは識別子によって固有にアドレスすることができ、したがって、オブジェクトはそれらの記述によってお互いを参照してもよい。また、オブジェクト間の関係または条件(constraints) を記述するオブジェクトがあってもよい。したがって、記述されたオブジェクトはいくつかの有益な特徴を有する。例えば、
１．オブジェクトは空間に任意に分散されてよい。
２．オブジェクトは空間的にお互いに重なり合ってもよい。
３．オブジェクトは空間の新規の位置に移動せしめられてもよい。
４．オブジェクトは表現から削除されてもよい。
５．新規のオブジェクトはいかなる空間的な位置にある表現にも追加されてもよい。
６．オブジェクトは、任意の計算によって変更されるそれ自身の物理的および抽象的な特性の両方を有してもよい。
【００１６】
すべてのオブジェクトは単一のリストとして集合されることだけを必要とする。なぜなら、オブジェクトはそれ自身がどのようにそれらが空間的に調和するかを完全に記述するからである。オブジェクトに基づいた表現は、ディスプレイのハードウェアおよびソフトウェアを用いてオブジェクトをスクリーン上に表示するために、ポストスクリプト(PostScript)のような手順的知識表現(procedural representations)かまたは画素配列のような画像に基づいた表現のいずれかに翻訳される。ユーザがオブジェクトに基づいた表現を操作することを可能にするために、スクリーン座標による入力が特定のオブジェクトにマッピングしなおされてもよい。そして、オブジェクトに対する結果としてのいかなる変更も新規のディスプレイに再翻訳される。
【００１７】
画像に基づいた表現は、密集した（すなわち、空間全体にフィル(fill)された、即ち、空間を充填する）セルからなる空間構造(compact cellular spatial structure)からなり、通常（限定はされないが）、矩形状セルの２次元配列である。”画素”と呼ばれるそれぞれのセルは画像の小さな唯一の空間領域を表現する。画素はただそれらの領域の視覚的な特徴を記述するだけである（画素のデータ構造体においてたとえ他の特性を記録することが可能でも）。画像表現はしばしば複数の層からなり、それぞれの層は独立した配列であり、画像は異なった層のそれぞれの画素を組み合わせることによって構成される。画素はオブジェクトに類似するように思えるが、画素はオブジェクトに関して先に列挙された６つの特徴を満足することができない。
【００１８】
画像に基づいた表現は直接に表示されてもよく、またそれらはスクリーン座標によるユーザからの入力に応答して操作されてもよい。しかしながら、画像に基づいた表現に対する操作が入力に隣接する画素に影響を及ぼし、かつ空間的に隣接する画素への影響を広める点において、画像に基づいた表現に対する操作は入力に関して”局部的”であることに制限される。例えば、”スプレー”操作はスプレー入力点からある距離の範囲内にある画素の色を変更する。”ブリード(bleed) ”操作は入力点の色を変更し、隣接する画素に減少せしめられた輝度による色の変更を適用し、色の変更がなくなるまでこの処理を続行する。そして”フィル(fill)”操作は入力点の画素の色を変更し、なんらかの”境界色(boundary color)”（例えば、黒）に遭遇するまで反復して隣接する画素に変更を広げる。
【００１９】
オブジェクトを表現しながら画素の組を識別するために、画像に基づいた表現を開始し、そして表現に”認識”操作を適用することは可能である。もしこのことがなされてこれらの認識されたオブジェクトを表現するためのデータ構造体が生成されるならば、このデータ構造体はオブジェクトに基づいた表現であると考えられる。
【００２０】
【実施例】
図１は、参照されたライブボードの研究論文に記述された形態の本発明が特に有効なホワイトボード１０を概略的に図示する。ホワイトボードの詳細は本発明にとって欠くことのできないものではないので説明されない。ここでは、図示されたシステムは、コンピュータ１４によって、かつコンピュータ１４の制御下で決定されたオブジェクトをスクリーン上に投影または表示するための手段１２を有する表示スクリーン１１を備える、とだけ説明するにとどめる。ライブボードにおいて、投影手段は、スクリーン１１上に投影され表示されるオブジェクトを生成する液晶装置１５を用いてＴＶ投影システムをシミュレートする。好ましくはコードレスのペンのようなまたはそれに類似する描画装置２０がシステムに結合され、またペンのいかなる運動の開始および終了をも制御するための手段を備える。例えば、ディジタイザまたはマウスを用いる場合のように、ペンは信号が接続または切断されるときにアクションを選択するボタン２１を有する。加えて、そのペンは感圧チップスイッチ２２を有し、ペンアクション信号の開始または終了としてホワイトボードによって認識されるスクリーンに押しつけられるときに、そのスイッチ２２はアクションを選択する。ホワイトボードにこれらのペン信号またはコマンドを伝達する手段はディジタイザタブレットで使用されるものと同様のものであってもよい。後述されるように、ワイピングは連続的運動感応入力装置によって動かされるので、それはユーザにとって自然なワイピング運動である。”連続的運動感応入力装置”という用語は、ディスプレイ表面上を移動させることのできる入力装置（スタイラスのような）、またはディスプレイのカーソルに電子的にマップされる表面上を移動させることのできる入力装置（ペンとタブレットのような、またはマウスのような）のいかなるものをも意味するものである。ここでは、そのようないかなる装置をも簡単のためにペンと呼ぶことにする。
【００２１】
ホワイトボード１０はスクリーン上のペン２０の位置を、とりわけそのＸＹ座標を認識することができなければならない。このことはスクリーンの背面にディジタイザグリッド（図示されない）を装着することによって、またディジタイザグリッドと協力してペンの位置を突き止めるための電磁気的、静電的、またはその他の手段を備えたペンを装備することによって実現されてもよい。
【００２２】
別の方法として、タッチスクリーンにおけるような、スクリーンの背面に配置された検出器モジュール２５に画像化される光学的放射のビーム２４を生成する手段をペンに装備してもよい。この好ましい実施例によれば、ペン２０は表示スクリーンに接触させる必要はなく、ユーザは遠隔からの位置指定およびジェスチャーによる入力のためにスクリーンから一定の距離だけ離れて入力することができる。このようなシステムの構成と操作のより詳細なことは参照されたライブボードに関する研究論文を調査することによって理解することができる。
【００２３】
上述したように、システムは、ユーザによって信号が送出されたときにペンの位置を計算あるいは決定するための適切なメモリー１３を備えたコンピュータ１４を含み、また、ペイントブラシ(Paintbrush)またはマックペイント(Macpaint)のような既知のグラフィック描画編集システムによって用いられるものと類似した方法によって、ユーザの制御下でスクリーン上に表示される表現を生成し記憶することができる。しかしながら、本発明のシステムにおいては、それぞれの表現は画像に基づいた表現と区別してのオブジェクトに基づくものである。このことをなすための方法はオブジェクト指向デザインに関する公表された文献に詳細に記述される。ワイピング運動がどのように表示されたオブジェクトと相互作用するかを理解するのを助けるための１つの例として、オブジェクトの例は、例えば、オブジェクトのスクリーン位置の座標、オブジェクトの色、オブジェクトを定義するラインの太さ、オブジェクトフィルパターン(object fill patterns)、オブジェクト生成時刻、など、を含むことのできるデータ構造体のフィールドに記憶されるオブジェクトの特性または属性を有する、Ｃ言語の struct 文またはPascal（パスカル）のrecord文のようなデータ構造体とみなすことができがある。
【００２４】
１つの例として、ストロークオブジェクトのための典型的なデータ構造体が以下に示される。この例では、Ｃ＋＋言語のクラスが例示される。オブジェクトはデータ構造体とそのデータに対する１組の演算によって記述される。
【００２５】
0003789946.tif 000002
【００２６】
他の種類のオブジェクトは、そのオブジェクトに固有のその他のフィールドだけでなくストロークオブジェクトと同一のいくつかのフィールドを有する。よく知られているように、オブジェクト指向言語は、それをあるいはそれらを表示するのに必要とされる方法によってオブジェクトを表現するデータを密閉する(encapsulate) 。表示はオブジェクトにメッセージを送信するオペレーティングシステムによってなされスクリーン上にそれ自身を表示する。その他の共通の機能と同様にスクリーン上にオブジェクトを印刷あるいは表示するこれらの機能を実行するためにＣ＋＋言語のライブラリにおけるルーチンが利用できる。
【００２７】
オブジェクトの選択はそれのいかなる属性を使用してなされてもよい。簡単のために、オブジェクトのＸＹ座標が選択基準として使用される好ましい手順を説明する。このことを実現する１つの簡単な方法は、表示されるそれぞれのオブジェクトを表現するデータ構造体に関係づけて考えることであり、つまり、それの位置座標から既知の方法によって、メモリーのオブジェクトのデータ構造体にＸＹ座標が記憶される境界ボックス(bounding box)を計算することである。
【００２８】
以下の説明において、ユーザはスクリーン上に表示される少なくとも１つのオブジェクトを生成しているものと仮定する。参照されるグラフィック描画プログラムのように、ユーザが希望することを実行するためにイベント（事象）を生成してソフトウェアを起動するためにユーザによって使用される一連のボタンまたはアイコンをスクリーンの縁に沿って表示することは表示スクリーンにとって好都合なことである。図２は、本発明を実現するための１組のボタンまたはアイコンを備えた１つの簡単なスクリーン表示の例を例示する。左側のスクリーンの縁に沿ったボタン／アイコン３５はペン機能を設定し、スクリーンの底辺に沿ったボタン／アイコン３６はワイピングオペレータを決定する。例示された例においては、ペン機能は、それぞれボタン３７および３８に関連づけられるＤＲＡＷおよびＷＩＰＥと、図示されないその他の機能とである。例としてのみ図示されるワイピングオペレータのボタンは、ＤＥＬＥＴＥ４０、ＴＨＩＣＫＥＮ４１、ＴＨＩＮ４２、ＦＩＬＬ４３、ＣＯＬＯＲ４４、および、ＵＮＤＯ４５である。よく知られているように、ユーザが特定のボタンまたはアイコンの上または近傍にペンを置いてペンのスイッチまたはボタンを作動すると、コンピュータはペンの位置からユーザによって選択された機能またはオペレータを決定する。
【００２９】
また、図２は、描画ボタンおよび希望される幅設定ボタン（図示されない）を作動したのちにユーザによって描画されることによって生成された数個のオブジェクト４７、４８、４９をスクリーン上に図示する。表示されたオブジェクトは、それぞれ、ペンのスイッチが作動されている間のユーザによる単一の描画ストロークからなる。あるいは、多角形、円、またはその他の形状が生成されるとき、全体の形状が単一のオブジェクトとして取り扱われてもよい。
【００３０】
ユーザインタフェースとしてのワイピング作業の方法は次のシナリオによって説明される。ペンを持ったユーザがボタン３８に触れて”ワイプモード”に入る。システムが１つのアプリケータを提供する。ユーザは削除オペレータ(delete operator) ４０を選択してアプリケータに関連づけるか、または、省略時解釈によってアプリケータが削除オペレータを開始して消しゴム(eraser)になる。ユーザはワイピングによっていくつかのオブジェクトを消去し、そしてカラーボタン４４に触れる。カラースペクトル（図示されない）がポップアップし、ワイパーでメイクレッドボタン(make-red button) を選択する。ここでワイピングはオブジェクトを赤色に変える。いくつかのオブジェクトにそのようにした後、ユーザが赤色に変えられたオブジェクトが多すぎることに気がつく。ユーザはワイパーを取り消しボタン(Undo button) に”入れて(dips)”、取り消しをオペレータにする。そして赤色に変えられるべきではないと考えられるオブジェクトをワイピングすることによってそれらは元の色に復元される。最後にユーザはワイプモードから出る。
【００３１】
より明白には、ワイピングの構成要素は以下の通りである。
１．アプリケータ。データオブジェクトとしてのアプリケータは経路領域(path region) を決定する形状と寸法とを有する。コンピュータによって記憶されるアプリケータの経路は直線セグメントの連鎖から構成され、その終了は感知されたペンの位置である。したがって、経路領域は経路領域セグメントの連鎖から構成される。例えば、長方形のカーソルは六角形（以下で説明される）の経路領域セグメントを生じさせる。アプリケータの形状と寸法は、好ましくは、ユーザによって定義することが可能であり、換言すると、異なった仕事を実現するために変化させることができるということである。
【００３２】
２．選択の基準。ワイピングの概念的機能は操作されるべきオブジェクトを選択またはグループ化することである。基本的には、それの領域がワイプ経路領域に交差するオブジェクトが選択され、それはアプリケータの経路領域の座標との交差についてそれぞれの表示されたオブジェクトの境界ボックスの座標を検査することによってソフトウェアで簡単に実現される。しかしながら、交差したオブジェクトが実際に選択されるかを判定するために使用される他の選択基準が存在する。もっとも簡単な基準は交差しきい値であり、それはワイプ経路領域によって交差されるオブジェクトの領域の割合を測定するものである。もっとも寛大な基準はゼロでない交差しきい値であり、すなわち、アプリケータによるオブジェクトのわずかな接触ですらそのオブジェクトを選択させられる。厳密な100%のしきい値は通常有効ではないが、高い、低い、および、過半数(50%) のしきい値はそれらの用途を有する。交差しきい値はこれらの環境下で動的に計算されることに注意されたい。触れることによってどのようにして選択されるオブジェクトを決定するかのより厳格な記述は以下で明らかとなる。ワイプが進むにつれて、ワイプ経路は成長し、ワイプがしきい値に到達するまで１つのオブジェクトにますます交差する。例えば、図２はユーザによって形成されたワイプ経路領域５０を破線で例示する。しきい値がだいたい30% に設定されていると仮定すると、１つのアッパーケースの文字（大文字）と３つのロアーケースの文字（小文字）の分離されたグループから構成されるオブジェクト４７が選択される。次のオブジェクト４８の頭文字のアッパーケースの文字もまた選択される。もしオペレータがＤＥＬＥＴＥであれば、３つの項目のすべてが消去される。文字Ｂの消去はたぶん意図されないので、ここがＵＮＤＯオペレータを文字Ｂに適用することによってＤＥＬＥＴＥオペレータが無効にされる部分である。
【００３３】
その他の有効な選択基準が存在し、それは通常は作業に関して特有なものである。アプリケータは、通常はアプリケータが選択しようとするオブジェクトの種類に比例した寸法と形状であるように設計される。例えば、ワイピングが手書きの語を横切って簡単になされるように、手書きの語のストロークを選択しようとするアプリケータはその語の高さよりいくぶん小さい寸法であるように作られる。この意図を与えれば、有効な選択基準は語の一部であるには大きすぎるいかなるストロークをも除外する。したがって、語を取り囲むボックスを描写するストロークがワイプされるとき、そのストロークは選択されない。この基準は計算するのに動的な交差しきい値より容易である。
【００３４】
もう１つの例は、表示されるオブジェクトが１組の２次元の層に編成される場合である。ここでは、特殊化された基準は、どの層にオブジェクトがあるかによってオブジェクトが選択されるフィルタである。
【００３５】
また、選択のために使用されてもよい時間に基づいた基準が存在し、それは以下で記述される。
【００３６】
３．ワイプアクションの範囲規定(scoping) 。ワイピングの範囲(scope) を定義するのに使用される４つの入れ子の時間の間隔が存在する。それは、ワイプセッションの範囲と、オペレータの範囲と、ワイプストロークの範囲と、ストロークの枝の範囲と、である。（Ａ）もっとも大きな範囲はワイプセッションである。ワイプセッションは一連のワイプストロークと可能なオペレータの変更とからなる。ワイプセッションは通常はある種のワイプモードに出入りすることによって区切られる。（Ｂ）ワイプセッションは少なくとも１つのオペレータの範囲に分割される。オペレータの範囲はオペレータが変更されないままでいる時間間隔である。オペレータの範囲は一連のワイプストロークから構成される。（Ｃ）それぞれのワイプストロークはディスプレイ表面にペン装置を接触させ（または、ペンボタンが押される）、ディスプレイ表面に沿って滑らせ、それから、ディスプレイ表面から引き上げる（または、ボタンを離す）ことによって定義される。もし枝が存在すれば次の（Ｄ）で定義される枝の範囲がもっとも小さい範囲を定義するが、もし枝が存在しなければ、ワイプストロークの間隔がもっとも小さい範囲を定義する。（Ｄ）枝の範囲。急な方向反転を有するストロークは反転によって”枝(branches)”に分割される。例えば、２つの反転を備えたストロークは３つの枝を有する。枝の範囲は枝の時間である。例えば、上述の例では、それらの枝は、ストロークの開始点から第１の反転までと、第１の反転から第２の反転までと、第２の反転からストロークの終了までとである。
【００３７】
４．選択されたオブジェクトのグループ化。これらの間隔は選択されるオブジェクトの自然なグループ化を定義する。１つの枝によって選択されるオブジェクトの組は枝グループと呼ばれ、１つのワイプストロークによって選択されるオブジェクトの組はワイプストロークグループを形成し、１つのオペレータの範囲によって選択されるオブジェクトの組はオペレータグループを定義し、１つのワイプセッションで選択されるオブジェクトの組はワイプセッショングループを構成する。
【００３８】
５．適用（アプリケーション）のダイナミックス(dynamics of application) 。選択されるオブジェクトの計算は好ましくは動的に発生する。ペン入力装置でユーザがワイプする間に、例えば、オブジェクトが選択基準に合致すると、適切なリストにオブジェクトへのポインタを格納することによって、ワイプストロークセグメントが生成され、それでオブジェクトが選択される。通常、オブジェクトが選択されるときは、オペレータがオブジェクトに適用される。例えば、オペレータが削除であれば、実際の消しゴムの効果のまねをして、ユーザがワイプするときにオブジェクトが削除される。しかしながら、オペレータの適用が遅延されてもよい。遅延の１つの形態は、ワイプストロークが完了されるまで適用を控えることであり、それから、オペレータをワイプストロークグループに適用することである。もう１つの形態は、ワイプセッションが終了されるまで遅延されることであり、それでオペレータをワイプセッショングループ全体に適用することである。
【００３９】
６．ワイプのためのフィードバック。ワイピングの過程の間でユーザへの聴覚および（あるいは）視覚のフィードバックが存在してもよい。聴覚のフィードバックは、ワイプストロークが生成されているとき、オブジェクトが選択されるとき、またはオペレータが適用されたときに、信号を送出するのに使用されてもよい。視覚のフィードバックがワイプストロークを見ることのできるものにしてもよく（例えば、明るいマーカーペンが提供するような背景が透明のような）、または、選択されるオブジェクトが種々の方法で明るくされてもよい（例えば、区別的な色または影によって）。視覚的なフィードバックの継続期間は、通常、ワイプセッションの終了までである。
【００４０】
７．適用されるオペレータ。多くの異なった種類のオペレータが選択されるオブジェクトに適用されてもよい。このインタフェース技術と可能性の範囲との汎用性の認識を提供するためにそれらのいくつかの例をあげる。
【００４１】
削除(Deleting)、切り取り(Cutting) 、複写(Copying) 。すでに述べたように、選択されるオブジェクトを削除することは実際の消しゴムによる消去を模倣する。切り取ることはオブジェクトを削除するだけでなく後に使用する（他の場所に貼り付けする(Pasting) ような）ための”クリップボード”バッファにそれらを保存するのにも使用される。複写は選択されるオブジェクトをそれらを削除することなく保存する。
【００４２】
選択(Selecting) 、グループ化(Grouping)、タグ付け(Tagging) 。ワイピングは単に選択のために使用されてもよい。１つのワイプセッションの後に、そのワイプセッショングループがシステムによって後の使用のために保存される。ワイピングはまたワイプストロークグループを用いてオブジェクトをより高いレベルの構造体にグループ化するのに使用されてもよい。例えば、もしオブジェクトが手書き文字のストロークであれば、ワイプストロークは手書き文字をリストの項目に構造化するのに使用されてもよい。タグ付けオペレータは特色のあるタグをオブジェクトに付加するのに使用されてもよく、それでワイピングがタグ付けのために使用されてもよい。例えば、もしオブジェクトが手書き文字のストロークであれば、ワイピングは、例えば重要な観念(idea)またはアクション項目を表現するときにこれらのストロークの部分集合(subsets) にタグ付けするのに使用されてもよい。
【００４３】
オブジェクトの特性の変更。多くのオペレータはオブジェクトの特性の値、例えば、色、位置、方向、スケール、太さ、などを変更する。これらは直接の(straightforward) ワイピングオペレータである。例えば、ウィンドウシステムにおいて、ワイピングはウィンドウを最大サイズからアイコンサイズまでにする収縮(shrink)オペレータを適用するのに使用されてもよい。
【００４４】
相対的変更のオペレータ。いくつかのオペレータはオブジェクトに相対的な変更を引き起こして、例えば、色を１ビットだけより暗くし、オブジェクトを１ビットだけ上に移動させ、オブジェクトを１ビットだけ回転させ、あるいはオブジェクトを１ビットだけ太くする。相対的なオペレータが特徴とすることは、それらが繰り返して適用されて徐々により大きな変更をもたらすことである。ワイピングによってこれらのオペレータを適用することは、何回それらを適用するかの論議を持ち出す。自然なワイピング運動は前後にワイプすることなので、１つのオブジェクトが同一のワイプストロークで１回以上選択されるかもしれない。実際のオペレータに関してはこれは問題ではない。なぜなら、繰り返しての適用は余分なものであるからである。１つの解決法は、１つのワイプストローク、またはストロークの１つの枝、または１つのワイプセッション、の範囲内においてオペレータのだだ１回の適用だけを許可することである。好ましい解決法はストロークのそれぞれの枝でオペレータを反復することである。
【００４５】
取り消し(Undoing) 。一般的な取り消しオペレータもまたワイピングに適用されてもよい。例えば、もしメイクレッドオペレータ(make-red operator) がアプリケータに付与され、ユーザがそれでいくつかのオブジェクトをワイプしたと仮定して、ユーザが変えられるべきではないいくつかのオブジェクトが赤に変えられたことに気がついたとしたらどうであろう。これを解決するために、取り消しオペレータがアプリケータに付与され間違って赤に変えられたオブジェクトがワイプされてもよく、その結果として、それらのオブジェクトをそれらの元の色に戻すこととなる。もう１つの例として、もしオペレータが削除であり、いくつかのオブジェクトが誤って消去されたらどうであろう。オブジェクトは消されているので取り消しオペレータによってワイプすることは困難である。しかしながら、もしワイプ経路が目に見えるものにされていれば、このことがどこに削除されたオブジェクトが配置されていたかの指示を与え、取り消しオペレータによってそれらの位置をワイプすることがそれらを元に戻すこととなる。
【００４６】
このように、ワイピングの一般的なユーザインタフェース技術は、これらの構成要素の異なった値の組み合わせによって定義される。与えられたアプリケーションプログラムに関して、アプリケーションプログラマーは、アプリケーションに対するワイピングユーザインタフェースを提供するために構成要素に関しての値の範囲を定義してもよい。これらの選択は、ダイナミックス(dynamics)を実現しかつアプリケーションプログラムのユーザインタフェースの残りの部分にそれらを統合するアーキテクチャーまたは制御構造に基づかなければならない。
【００４７】
構成要素の値の範囲が提供されると、それらはユーザに利用できるものにされなければならない。このための１つの簡単な標準的な技法は、アプリケータを定義するのにユーザが使用することのできるセッションに関する設定操作の一部として、特性シート(property sheet)を備えたアプリケータに関する”ワイパーアイコン(wiper icon)”を提供することである。ユーザはワイパーの特性シートを開くことができ、例えば次の構成要素に関する値を設定することができる。
アプリケータ
選択基準
オペレータ
アプリケーションダイナミックス
グループ化
フィードバック
ここで、それぞれの構成要素は許可された値のメニューを提供する。例えば、ユーザは、注釈オブジェクト(annotation objects)だけを選択してそれらを”コメントリスト”に移動させる大きなアプリケータを有するようにワイパーを設定し、ここで、それらのオブジェクトはワイプストロークでグループ化され、またダイナミックスはそれぞれのワイプストローク後にのみ移動し、またフィードバックは注釈オブジェクトが選択されるとそれらを赤にする。
【００４８】
この特性シート技法はほとんどのアプリケーションで必要とされる技法よりも一般的である。最低限、ユーザはオペレータを選択することができ（でなければ、それは汎用型ワイピングではない）、いちど選択されると、その他のすべての構成要素はプログラムによって適切な値に設定されてもよい。したがって、ユーザがなすべきことはオペレータを選択することだけであり、これを実行することが容易なものにされてもよい。もっとも明白な方法は、図２に示されるように、アプリケーションプログラムのユーザインタフェースの一部としてオペレータを表現するボタン、アイコン、またはメニューアイテムを利用することである。ユーザはワイパーアイコンを例えばボタンに移動して、そのボタンによって表現されるオペレータをワイパーに付与するのである。
【００４９】
ユーザのワイピングアクションがどのように表示されたオブジェクトに影響を及ぼすかをより良く理解するために、上述された種々の側面を実現するために本発明で使用されるワイピングアルゴリズムを駆動するいくつかの種類のイベントを詳細に記述することが助けになるであろう。これらのイベントはユーザの物理的なアクションによって起動され、上述したようにハードウェアおよびソフトウェアによって検出される。好ましい実施例におけるペンまたは通常の方法でシステムに接続されるマウスでユーザによって影響を与えられるイベントが以下に記述される。マウスの場合は、机またはテーブルについていても、ユーザがホワイトボード上のオブジェクトを操作することを可能にする。左側の欄は太い文字でワイパーイベントを表し、右側の欄はそのコマンドを実行するためにユーザは１つの例としてなにをしたらよいかを説明する。
0003789946.tif 000003
0003789946.tif 000004
【００５０】
これらのイベントは、時間をいくつかの異なった範囲に分割するのに使用される。
【００５１】
0003789946.tif 000005
【００５２】
もっとも基本的なオブジェクトはワイプストロークセグメントである。ワイプストロークセグメントはその２つの終了点によって定義される短い線分であり、その終了点はワイパーの２つに位置によって決定される。ワイパーは好ましくは無次元の点ではなくて、しっかりした２次元形状である。したがって、セグメントは太さのない理想化された線分ではなく、むしろ理想化された線分に沿ってワイパーを滑らせることによって定義される２次元形状である。
【００５３】
図３は１つの例を描写する。ワイパーが長方形の形状であるとき、ワイプセグメントは図６に示されるように六角形の形状である。ワイパーは理想化された位置Ａから開始して、理想化された位置Ｂで検出される。この移動イベントは理想化されたセグメント〔Ａ，Ｂ〕を定義する。しかしながら、Ａにあるとき、ワイパーは実際には長方形領域〔ａ１，ａ２，ａ３，ａ４〕を包含する。同様に、Ｂにあるとき、ワイパーは領域〔ｂ１，ｂ２，ｂ３，ｂ４〕を包含する。したがって、ワイプセグメントは六角形領域〔ａ１，ａ２，ａ３，ｂ３，ｂ４，ｂ１〕を包含する。さらに六角形の定義は移動の方向に依存することに注意されたい。もしＢがＡの下側でありかつ左側であれば、セグメントの六角形は〔ａ２，ａ３，ａ４，ｂ４，ｂ１，ｂ２〕である。これはセグメントが何であるかのもっとも簡単な例であることに注意されたい。セグメントはどんな形状および寸法のワイパーを有してもよい。ワイパーはそれが移動されるときに向きを変えてもよい（例えば、経路ベクトルに一致するそれの向きを保持するために）。ワイパーはそれが移動されるときに特性を変えるてもよい（例えば、ワイパーは寸法を変えてもよく、またはワイパーの操作は圧力感応入力装置に応答して定義を変えてもよい）。最後に、ワイプセグメント経路は必ずしも直線である必要はなく、曲線であってもよい（例えば、一連の移動の運動を滑らかにするベジェ曲線）。
【００５４】
ワイプストロークはセグメントの列である。ストロークの形状は単なるそのセグメントすべての形状の加算（和集合）である。
【００５５】
ワイプ操作は１組のワイプストロークである。
【００５６】
ワイプセッションは１組のワイプ操作である。省略時のオペレータはワイプモードに入るときに設定されてもよいことに注意されたい。したがって、もしユーザが決してオペレータを再設定しなければ、セッション全体はただ１つの操作からなる。
【００５７】
ワイプストローク枝はより複雑である。なぜなら、それは特別の機能をなすならである。まず、ワイプストロークは必ずしも枝を含む必要はないことに注意されたい。反転および枝の概念は、同一の領域を前後に（荒っぽく）ワイプするユーザの運動を捕らえることを試みるものである。反転を伴わないワイプストロークはただ１つの枝のみを有する。図４は考えられる２つのワイプストロークを示す。図４（Ａ）に示されるワイプストローク５２は、ストロークが左から右へ１つの方向に進むときの１つの枝を有する。左から右へ（５４から５７へ）、そして右から左へ（５５から５８へ）、そして最後に再度左から右へ（５６へ）ユーザが明らかに前後にワイプしている図４（Ｂ）に示されるワイプストローク５３は、３つの枝５４−５７、５５−５８、および５６と、２つの反転５７および５８とを有する。ワイプストロークに反転が存在する場合、付加的な枝が定義される。それぞれの枝はセグメントの部分列である。反転は、ワイプストロークの座標を簡単に追跡して枝として座標の反転を解釈する反転検出アルゴリズム（以下でより詳細に述べられる）によって容易に検出される。
【００５８】
ワイピング技術の目的はディスプレイ上のターゲットオブジェクト（ワイプストロークのようなワイピイングオブジェクトからそれらのオブジェクトを区別するためにターゲットオブジェクトと呼ぶ）を選択することである。ワイピング技術の基本的な”エンジン”はターゲットオブジェクトがワイプセグメントによって選択されるものを決定することである。選択されたターゲットオブジェクトのリストはセグメントリストと呼ばれる。
【００５９】
セグメントリストは直接のセグメント選択アルゴリズムによって計算される。アルゴリズムはターゲットオブジェクトの表示領域がセグメントの領域に重なっているかどうかに関してそれぞれのターゲットオブジェクトを検査する（これはターゲットオブジェクトの形状と位置およびセグメントの形状と位置についての幾何学的な計算によってなされる）。ターゲットオブジェクトが選択されるかどうかは選択基準によって決定される。もっとも簡単な基準はターゲットオブジェクトがセグメントとのゼロでない重なり(non-zero overlap)を有することである。上述したように、より複雑な選択基準が使用されてもよい。
【００６０】
枝リストは構成セグメントリストの集合体である。ストロークリストは構成枝リストの集合体である。操作リストはストロークリストの集合体である。そしてセッションリストは操作リストの集合体である。
【００６１】
これらのリストは、ユーザが物理的なワイピングアクションをなすときにコンピュータによって動的に蓄積されかつ記憶される。蓄積のもっとも小さな単位はセグメントリストである。しかしながら、セグメントリストの新しいターゲットオブジェクトだけが役に立つ。しかし、”新しい”ターゲットオブジェクトは異なったことに関するものであってもよい。それはストロークリストに関して新しくてもよい。ストロークリストにすでに存在するセグメントリストのオブジェクトは”古い”ものである。ストロークリストに存在するオブジェクトを取り除くことによってセグメントリストを減少させることが望ましい。それの結果は（ストロークリストに関する）縮小セグメントリストと呼ばれる。通常は、縮小セグメントリストのオブジェクトを操作して、つぎに、縮小セグメントリストのオブジェクトをストロークリストに追加することが望ましい。
【００６２】
本発明で使用される適切なワイピングアルゴリズムの１つの例が以下で示される。いくつかのアクションを説明するためのコメントがアクションに続く引用符の間に存在する。
【００６３】
0003789946.tif 000006
【００６４】
0003789946.tif 000007
0003789946.tif 000008
【００６５】
ワイプストロークの方向の反転をどのようにして検出するかの例が以下に示される。これは水平方向の反転に関してのみ検査する。それは、大きな垂直の（ホワイトボードの寸法）表面上で腕の動きによって方向を反転するのにもっとも簡単な方法である。したがって、それはワイプストロークセグメントの水平成分（Ｘ成分）だけを考える。つぎの４つの変数が、ワイプストロークが生成されるときのそれの状態を特徴づける。
fwdX        Ｘ軸の前進方向に移動した距離。
revX        Ｘ軸の前進方向とは逆に移動した距離。
newX        もっとも新しいセグメントの長さとＸ軸の方向。
T           方向（前進または反転）を確立するための距離のしきい値。
【００６６】
これらの変数はワイプストロークの前進方向(fwdX)および反転方向(revX)の一連の感知を保持する。移動の”ノイズ”をフィルタするために、しきい値(T) が使用されて反転が本当の方向の反転と考えるのに十分な距離だけ進んだかどうかを確かめる。ワイプストロークが（Downイベントによって）開始されるとき、fwdXがゼロに初期化される。それぞれのMoveイベントで、newXは現在の移動のストロークセグメントのＸ軸方向の距離に設定される。そして、反転があったかどうかを検出するために次の検査がなされる（ＴＲＵＥは反転が存在することを意味し、ＦＡＬＳＥは反転が存在しないことを意味する）。
0003789946.tif 000009
【００６７】
当業者は、本発明が上述された特定のアルゴリズムの使用に制限されないことを理解するであろうし、また、他のアルゴリズムがここで記述されるワイピングアクションを実現するのに容易に考案されることがわかるであろう。その原理は簡単である。つまり、ワイプオブジェクトと現時点で稼働中の選択基準とに照らして検査することによってどのターゲットオブジェクトが選択されるかを決定する。選択されるターゲットオブジェクトを表現する関連したデータ構造体を変更することによってワイピングアクションを実現する。例えば、もしオペレータが削除であれば、オブジェクトのデータ構造体をオブジェクトリストから取り除き、もしオペレータがメイクレッドであれば、カラー属性を赤に変更し、もしオペレータが収縮であれば、オブジェクト構成要素の座標を再計算する、などである。
【００６８】
ここで、いかなるときにでもスタイラスがどのオブジェクトに接触しているかを決定する効果的方法を捜し出すためのより厳密な記述が以下で述べられる。いくつかのオブジェクトに接触しかつその他を回避する経路を特定しているときのユーザを考える。どのオブジェクトが経路上に存在するか？もっとも低いレベルにおいて、ユーザのワイプアクションは一連のイベントとして現れる。これらのほとんどがスタイラスが移動された新しい位置を報告してくれる。それ以上の情報はないので、一連の直線セグメントに沿った”アプリケータ”カーソルの射影としてワイプ”経路”を表現する。これらのセグメントは非常に短くてもよい。アプリケータカーソルとそのカーソルが交差するオブジェクトの両方が実質的な幅を有するので、経路のいくつかの連続的なセグメントが同一のオブジェクトに接触することがしばしば発生する。一般的に、与えられたストロークの期間において与えられた操作を１回以上オブジェクトに適用することは望ましくない。
【００６９】
図５乃至図１１を参照すると、Ｏ、カーソル形状ＳＨ（図５）、および１対の点ＡとＢ（セグメントに一致する）、のオブジェクトの組が与えられ、オブジェクトのどれかがＡＢに沿ったＳＨの射影の結果として生じるワイプセグメントによって接触される。簡単のために、ｘおよびｙ軸に平行な辺を有する長方形カーソルだけを考える。以下で”長方形”という用語を用いる場合、そのような長方形を意味するものとする。また２つのタイプのオブジェクト、すなわち文字とストロークだけを考える。
【００７０】
ＡＢに沿った〔長方形〕ＳＨの射影の結果として生じる経路セグメントは特殊な種類の六角形であり、それの４つの辺はｘおよびｙ軸に平行である。以下で”六角形”という用語を用いる場合、そのようなオブジェクトを意味するものとする。そのような六角形は２つのクラスによって現れることに注意されたい。一方は右上から左下へ進むと考えられ、他方は左上から右下へ進むと考えられる。最初の場合には、それをＮＥＳＷ−六角形と呼び、第２の場合には、それをＮＷＳＥ−六角形と呼ぶ。（完全に水平または垂直の軌道はもう１つの〔一方の寸法がより大きい〕長方形の変形したものを提供する。）
【００７１】
最初に文字を考える。もしワイプセグメントが文字を包含するもっとも小さい長方形である文字の”境界ボックス”と交差するのであれば、そのワイプセグメントは文字と交差するという。ゆえに、問題は、ある六角形がある長方形に交差するかどうかということになる。ここで図７を参照する。ＮＥＳＷ−六角形の場合を考えてみよう。六角形自身はそのもっとも離れた２つの点によって定義される境界ボックスを有する。六角形はそれ自身の境界ボックスの中にあるので、２つの境界ボックスが交差しなければ、六角形は文字と交差することができない。ゆえに、まずそのことを検査する。長方形の交差は自明のことであるが、それぞれの境界ボックスの交差は、六角形が文字の境界ボックスと交差することを保証するのには不十分である。ＮＥＳＷ−六角形の場合、２つの過程のいずれかで誤りをおかす。これらの状況の一方にあるときにどのようにして検出するか？。ゆえに、文字の境界ボックスの右下角が六角形の最上位”対角線”の”上側”にある場合（図８）、または文字の境界ボックスの左上角が六角形の最下位”対角線”の”下側”にある場合（図９）の２つを考える。これらは計算に関しては十分に簡単である。ｘ座標を与えられた線分上のいかなる点のｙ座標も捜し出すことは簡単なことである。ゆえに、第１の偽陽性(false positive)（”上側”の場合）を検査するために、文字の境界ボックスの右辺と同一のｘ座標値を有する最上位対角線上の点について調べる。もしボックスの底辺がこのｙ座標値より小さければ、偽陽性が得られる。”下側”の偽陽性に関して同様の検査をなす。ゆえに、ここでの文字−セグメント交差決定手順はＣ＋＋言語で記述すると以下のようになる。
charBB = boundingBox(character)
hexBB = boundingBox(hexagon)
if (not intersect(charBB,hexBB))
return FALSE
if (bottom(charBB)＜yAtX(rightEdge(charBB),topDiagonal(hexagon)))
return FALSE
if (top(charBB) ＞ YAtx(leftEdge(charBB),bottomDiagonal(hexagon))
return FALSE
return TRUE
【００７２】
ここで、ワイプセグメントの六角形が任意の”ストローク”に交差するかどうかをどのようにして表すかを考えたい。１つのストロークは、すべてが同じ幅のいくつかの数の連続するラインセグメントからなる。明らかに、１つのストロークはそれの少なくとも１つのセグメントが六角形と交差する場合に六角形と交差する。ゆえに、セグメントに沿って進むだけで十分であり、それによって、セグメントが六角形に交差するかどうかをそれぞれについて問い合わせる。容易に見落とされる項目がある。六角形の幅だけでなく（多分大きいであろう）ストロークの幅も考慮すべきことに注意しなければならない。ユーザが消しゴムでストロークに接触したとたんにそのストロークが消去されるべきかを最初に述べるので、カーソルがストロークの”中央”をヒットするまではそれは待たないであろう。しかし、このことは相当に難しい計算を意味する。大幅に引き下げた計算価格でそれを解決するために、十分に近似することを選択する。太いラインが太い六角形と交差するかどうかを判定する代わりに、非常に細いラインが格別に太い六角形と交差するかどうかを判定することを選択する。正確にいえば、ラインの幅によって六角形を拡張する。非常に異常な場合を除いてすべての場合、これはほぼ同様の結果を与えるであろう。ストローク−六角形交差問題のための高レベル判定手順はＣ＋＋言語で記述すると以下のようになる。
strokeBB = boundingBox(stroke)
hex = extend(hexagon,width(stroke))
hexBB = boundingBox(hex)
if (not intersect(strokeBB,hexBB))   /* 簡単なものに関する境界ボックス検査*/
return FALSE
for (i = 1 ; i＜= numberOfSegments(stroke), ++ i)
if (intersectSegAndHex(strokeSegment(i,stroke),hex))
return TRUE
return FALSE
【００７３】
まだ intersectSegAndHex() に関するアルゴリズムを与えること、すなわちセグメントが六角形と交差するかどうかをどのようにして判定するかを説明することが残っている。この問題を解決するには、多分、多くの方法が存在する。ここでは本発明で実施された１つの例を示す。任意の六角形は平面を（中央の四角が六角形の境界ボックスである巨大な三目並べゲーム(tic-tac-toe game)のような）９つの領域に分割するといえる。ここで図１０を参照する。これらの９つの領域を（”４象限(quadrants) ”から類推して）”ノナント(nonants) ”と呼ぶことにする。ここで、いかなるストロークセグメントに対しても、ストロークセグメントの端点(endpoints) が存在するのはこれらのどのノナントかを判定することができる。（任意に、線を引くものが常に中央にもっとも近いノナントに有利なものであると仮定する。すなわち、不明確さは常に中央にもっとも近いノナントに有利に判定されると仮定する。）参照を簡単にするために、ノナントおよび六角形の頂点に図１１に示されるようなラベルを付ける。その間をストロークセグメントが進む２つのノナントを与えると、交差問題はすでに判定されている。例えば、ｂ１からｂ３へ進むセグメントは六角形と交差しなければならないし、ａ１からｃ１に進むセグメントは六角形に交差することができない。
【００７４】
しかし、多くの（厳密にいえば２３通りの）より複雑な場合が存在する。例えば、ｂ１とｃ２との間のセグメントに関する交差の問題は、文字の場合に遭遇したのと同一種類の”上側／下側”問題を引き起こすこととなる。すなわち、点Ａがセグメントの下側かどうかの問題である。関係するノナント対を列挙してみよう。判定手順の同一性によってグループ化し、ほぼ複雑性の増加する順に並べると、それらは、
グループ１  ：（ａ１，ｂ３），（ａ２，ｂ３），（ａ２，ｃ３）
グループ２  ：（ａ１，ｃ２），（ｃ３，ｂ１），（ｃ２，ｂ１）
グループ３  ：（ａ１，ｃ３）
グループ４  ：（ａ２，ｃ１），（ａ２，ｂ１），（ａ３，ｂ１）
グループ５  ：（ａ３，ｃ２），（ｂ３，ｃ２），（ｂ３，ｃ１）
グループ６  ：（ａ３，ｃ１）
非グループＸ  ：（ｂ２，任意の領域）
である。これらのグループを順に考えよう。グループ１に対するここでの手順は、点Ｄがセグメントの上側である場合に真を返す。グループ２に対しては点Ａがセグメントの下側であれば真を返す。グループ３に対しては点Ｄがセグメントの上側でかつ点Ａがセグメントの下側である場合に真を返す。グループ４に対しては点Ｂまたは点Ｃのいずれかがセグメントの上側であれば真を返す。グループ５に対しては点Ｅまたは点Ｆのいずれかがセグメントの下側であれば真を返す。グループ６でのセグメントは、点Ｂおよび点Ｃの少なくとも１つがセグメントの上側でかつ点Ｅおよび点Ｆの少なくとも１つがセグメントの下側であれば六角形に交差する。
【００７５】
つぎに、非グループＸのラベルを付けられた残りの９つの場合を考える。まず、端点の一方だけがｂ２に存在すると仮定する。もしその端点が六角形の内部に存在すれば、明らかにセグメントは六角形と交差する。そうでなければ、判定基準はｂ２にある端点が六角形の”上側”または”下側”にあるかどうかに依存する。ここでは”上側”の場合だけを記述する。なぜなら”下側”の場合は完全に対称だからである。他方の端点の可能な位置が８つ存在する（ｂ２に隣接するノナントのそれぞれに対して１つ）。それらを再度グループ化する。
グループＸa1  ：  ａ１
グループＸa2  ：  ｂ３，ｃ３，ｃ２
グループＸa3  ：  ａ２，ａ３
グループＸa4  ：  ｂ１，ｃ１
【００７６】
グループＸa1はただ偽を返すのみである。グループＸa2はただ真を返すのみである。グループＸa3は、点Ｃがセグメントの上側にある場合のみ真を返す。そして、グループＸa4は点Ｂがセグメントの上側にある場合に真を返す。
【００７７】
最後に、それの端点の両方がｂ２に存在するセグメントは、少なくとも一方の端点が六角形の内部に存在するか、あるいは一方の端点が六角形の上側にありかつ他方の端点が六角形の下側にある、かのいずれかである場合のみ六角形に交差する。
【００７８】
ここで、セグメント−六角形交差判定手順のわずかに抽象化された表現のみが示される。
if (segment is entirely above,below,left,or right of b2)
retunr FALSE
つぎに、両方の端点のノナントを判定し、どのグループにあるかを検査する。
if (Group1)
return pointAbove(D,segment)
if (Group2)
return pointBelow(A,segment)
if (Group3)
return pointAbove(D,segment) && pointBelow(A,segment)
if (Group4)
return pointAbove(B,segment) ｜｜pointAbove(C,segment)
if (Group5)
return pointBelow(E,segment) ｜｜pointBelow(F,segment)
if (Group6)
return (pointAbove(B,segment)｜｜pointAbove(C,segment) &&
(pointBelow(E,segment)｜｜pointBelow(F,segment))
return decideUngroupX(segment,hexagon)
また、 decideUngroupX() のアルゴリズムは、
if (a b2 endpoint is both below BC and above EF) /*六角形内部*/          return TRUE
if (both endpoints are inside b2)
return pointAbove(oneEndpoint,BC)&&(pointBelow(theOther,EF)
if (the b2 endpoint is above BC)
ｂ２にない端点のノナントを判定し、またグループを判定する。
if (GroupXa1)
return FALSE
if (GroupXa2)
return TRUE
if (GroupXa3)
return pointAbove(C,segment)
if (GroupXa4)
return pointAbove(B,segment)
else                               /* ｂ２の端点がＥＦの下側*/
ｂ２にない端点のノナントを判定し、またグループを判定する。
if (GroupXb1)                  /* ｃ３  */
return FALSE
if (GroupXb2)                  /* ａ１，ａ２，またはｂ１*/
return TRUE
if (GroupXb3)                  /* ａ３またはｂ３ */
return pointBelow(E,segment)
if (GroupXb4)                  /* ｃ２またｃ１ */
return pointBelow(F,segment)
【００７９】
ＮＥＳＷ−六角形のみを処理するためのアルゴリズムと判定手順を例示し、また概略を述べた。ＮＷＳＥ−六角形を処理するための手順はまったく対称的なものである。垂直または水平のワイプ経路軌道によって生じる長方形を処理するための手順は、一般的には、垂直のラインセグメントを処理するためのある種の単純化および特殊化に類似する（ここではゼロによる割り算は危険である）。
【００８０】
ワイピングアクションに関するターゲットオブジェクトの選択基準の概念が拡張されて時間の側面を包含してもよい。このことは、オブジェクトに基づいた表現のためのグラフィックユーザインターフェースの一般化されたつぎの論議からよりよく理解されるであろう。
【００８１】
オブジェクトに基づいた表現に作用するプログラムとのグラフィックユーザインタフェースにおいては、ユーザがどのようにしてオブジェクトを選択して操作を施すかの指示を発行する一般的なユーザインタフェースが存在する。ほとんどのグラフィックユーザインタフェースはオブジェクトを選択するための空間的な技術を提供する。ユーザは、長方形を定義しまたは手書きループを描画するためにディスプレイを横切って掃引する。その長方形またはループはディスプレイの空間的な領域を定義し、プログラムがどのオブジェクトが領域に包含されるかを計算し、結果として、これらが選択されたオブジェクトになる。
【００８２】
その包含の計算は、選択されるためにはどの程度の広さのオブジェクトの面積または大きさが領域内に適切に含まれることを必要とするかを知る必要がある。実際には、プログラムは包含の総量に関する有効かつ実行可能なしきい値を設定することができるので、これは処理することのできる問題である。
【００８３】
これらの技術は領域内のあらゆるオブジェクトを選択し領域外のいかなるオブジェクトをも選択しないので、これらを純粋空間閉鎖技術(pure spatial closure techniques) と呼ぶ。記述される限りのワイピングもまた純粋空間閉鎖技術である。なぜなら選択がワイプ経路領域と呼ばれる空間領域内の包含によって決定されるからである。
【００８４】
閉鎖はグループ化（または、オブジェクト上の他の高水準構造体）によって変更されてもよい。表示されたオブジェクトの部分集合がグループに含まれるのであれば（グループ化は必ずしも視覚的に表現されたものではない）、そのグループを選択のために全体として取り扱いたいかもしれない。つまり、グループのすべてのオブジェクトが選択されるか、またはグループの１つも選択されないかのいずれかである。例えば、もしグループが５つのオブジェクトを含み純粋空間閉鎖によって３つが選択されれば、５つすべてが選択される。このことは純粋空間閉鎖の変更と考えられる。他方、もしグループが１つのオブジェクトとみなされれば、それはまだ、グループに対する包含基準が複数のオブジェクトに対する基準といくぶん異なる純粋空間閉鎖と考えられる。
【００８５】
この場合、グループは予め指定されたものでありかつ明示されたものでなければならない。ときどき、グループ化は暗黙なものであり、さらにグループ化は異なった時にそして異なった目的のために異なったものであってもよい。
【００８６】
本発明のこの側面の選択基準は、ワイピングに適用されるとき、オブジェクトが時間的な流れにおいてユーザによって生成される共通状況を調整(address) する。描画プログラムにおいては、ユーザはオブジェクトを生成し、その次に、それらのオブジェクトを編集するのにオブジェクトを選択しなければならない。より明確な例は、ユーザがペンのような入力装置でディスプレイ上にストロークを描画することを可能とする描画プログラムである。ストロークはオブジェクトであり、そのオブジェクトは流れの中で生成される。さらに、人が描画する進路に空間的なオーダライン(orderliness) が存在することは経験的な事実である（すなわち、人は、一般的には、ディスプレイ上の勝手な場所にストロークを生成しない）。このことが、時間的な順序(temporal sequence) が、ユーザの意思を表現する理路整然とした(coherent)選択を創造するオブジェクトの暗黙のグループ化の解決策であることを示唆する。
【００８７】
ここで、１つの例を考える。ユーザが５つのオブジェクトを、Ａ、Ｂ、Ｃ、Ｄ、Ｅの順に生成する。これらは、空間的な集団の縁にオブジェクトＣを備える空間的な集団(cluster) 、又はクラスタ、で存在する。後に、ユーザは５つのオブジェクトを選択するつもりであるが、５つを通しての掃引アクションを実行するとき、オブジェクトＣに交差することに失敗する。純粋空間閉鎖によって４つのオブジェクトだけが選択される。しかしながら、プログラムは判定を助けるような時間的生成順序を用いてオブジェクトＣをも包含し、５つすべてのオブジェクトを選択する。
【００８８】
時間的な順序で１組のオブジェクトを考えれば（または、リアルタイムスタンプによって）、これらのすべてのオブジェクトを取り囲む時間的な間隔が計算されてもよい。もしその時間間隔の間に生成されるすべてのオブジェクトが捜し出されそれらが組に包含されるならば、これが純粋時間閉鎖と呼ばれる。
【００８９】
しかしながら、それ自身による純粋時間閉鎖はユーザにとって意味のあるグループ化のための信頼性のある解決策ではない。人はしばしば”横道(side track)”に入り込む。例えば、ユーザがＡおよびＢを生成し、描画の他の部分で修正されるべきものに気が付いてＣを生成し、それから、ＡおよびＢがあるところに戻ってＤおよびＥを生成することを続行する。この場合、Ｃは当然Ａ、Ｂ、Ｄ、およびＥと一緒にグループ化されない。これの解決策はＣが他のオブジェクトから空間的に分離されていることである。したがって、ユーザの意思に合致する信頼性のあるグループ化を提供するために、本発明のこの側面による組み合わせられた時間−空間閉鎖が計算される必要がある。
【００９０】
このように、空間および時間の基準を組み合わせることは種々の環境に有益である。以下では、異なった状況に関するアルゴリズムの例を示す５つの事例が列挙される。これらのアルゴリズムは空間的かつ時間的な”近接度(nearness)”検査を用い、そのためのアルゴリズムが５つの事例の後に記述される。
【００９１】
つぎの表記法と定義が用いられる。コンピュータに基づいたシステムはグラフィックオブジェクトの収集から構成される。それぞれのオブジェクトはディスプレイ上の位置を有する。Ｓはディスプレイ上の空間的領域を指示する。その領域は多くの異なった方法でユーザによって定義される（例えば、ループまたは投げ輪を描画することによって、長方形を掃引することによって、ワイプストロークによって、または点に触れることによってさえも）。Ｃ（Ｓ）は、Ｓの空間的な閉鎖、すなわちいくつかの選択基準（例えば、オブジェクトがすべてＳの中に位置するという基準）でＳによって選択されるディスプレイ上のオブジェクトの組を指示する。
【００９２】
それぞれのグラフィックオブジェクトはそれに関連した時刻を有する。その時刻は、生成された時刻、最後に変更された時刻、最後に参照された時刻、などであってもよい。そのような時刻は通常は履歴リストに保持される。しかし、ここでの目的のためには、簡単に、適切な時刻はオブジェクトの特性としてそれぞれのオブジェクトに関連するものとする。Ｓに類似して、Ｔは時間的な領域（すなわち、時間間隔）を指示する。Ｃ（Ｔ）はＴの時間的な閉鎖、すなわちそれの関連する項目がＴに存在するオブジェクトの組を指示する。
【００９３】
事例１  ：  空間的選択の時間補間(interpolation)
このアルゴリズムは、例えばワイプ選択がなされるような状況において有益であるが、いくつかの意図されたオブジェクトがワイプストロークによって捕らえ損なわれる。
１．Ｓがなんらかのユーザアクションによって与えられる。
２．Ｃ（Ｓ）を計算する。選択をＣ（Ｓ）に設定する。
３．もっとも小さな時間間隔Ｔを計算する。Ｔは選択を包含する。
４．Ｃ（Ｔ）を計算する。
５．選択に存在しないが（空間近接度検査によって）空間的な選択に近接しているＣ（Ｔ）におけるそれぞれのオブジェクトに関して、それを選択に追加する。
６．選択に戻る。
【００９４】
事例２  ：  空間的選択の時間外挿(extrapolation)
このアルゴリズムは事例１と同様の状況に有益である。これは事例１が用いられた直後に用いられてもよい。
１．Ｓがなんらかのユーザアクションによって与えられる。
２．Ｃ（Ｓ）を計算する。選択をＣ（Ｓ）に設定する。
３．選択におけるオブジェクトに関連する時刻のもっとも早い時刻Ｔmin を捜し出す。
４．それの関連する時刻がＴmin より以前であるオブジェクトＯを捜し出す。
５．もしオブジェクトＯが（時間的近接度検査によって）時間的に選択に近接しており、かつ（空間的近接度検査によって）空間的に選択に近接していれば、オブジェクトＯを選択に追加してステップ３に戻る。
６．選択におけるオブジェクトに関連する時刻のもっとも遅い時刻Ｔmax を捜し出す。
７．関連する時刻がＴmax より以降であるオブジェクトＯを捜し出す。
８．もしオブジェクトＯが（時間的近接度検査によって）時間的に選択に近接しており、かつ（空間的近接度検査によって）空間的に選択に近接していれば、オブジェクトＯを選択に追加してステップ６に戻る。
９．選択に戻る。
【００９５】
事例３  ：  部分的な空間的包含のための時間キュー(time cue)
このアルゴリズムは、ループ選択がなされる状況および少しのオブジェクトがループにおいて部分的にのみ選択される（すなわち、それらがループに部分的に入っており、かつ部分的に出ている）状況で有益である。アルゴリズムは部分的に包含されるオブジェクトが包含されるかどうかを判定する。
１．Ｓがなんらかのユーザアクションによって与えられる。
２．Ｃ（Ｓ）を計算する。選択をＣ（Ｓ）に設定する。
３．Ｓによって部分的に選択されたオブジェクト（例えば、Ｓ内に部分的にのみ取り囲まれたオブジェクト）の組であるＰ（Ｓ）を計算する。
４．（時間的近接度検査によって）時間的に選択に近接するＰ（Ｓ）内のそれぞれのオブジェクトに関して、それを選択に追加する。
５．選択に戻る。
【００９６】
事例４  ：  時間選択の拡張の空間的な検査
このアルゴリズムは、逆方向の操作、すなわち逆の時間順序で以前の操作を取り消す操作（例えば、”バックストローク”がストロークが生成された逆の順序でそれらのストロークを消去するような）をなすときに有効である。このアルゴリズムは、逆方向の操作を継続するのがおそらく不適当となるのを検出する停止基準を提供する。
１．１つのオブジェクトが与えられる（通常、生成または操作されたもっとも最近のオブジェクト）。時間間隔においてそのオブジェクトを単集合(singleton) の組と考える。選択をＣ（Ｔ）に設定する。
２．選択におけるオブジェクトに関連する時刻のもっとも早い時刻Ｔmin を捜し出す。
３．関連する時刻がＴmin の直前であるオブジェクトＯを捜し出す。
４．もしＯが（空間的近接度検査によって）空間的に選択に近接していれば、Ｏを選択に追加してステップ２へ戻る。
５．もしそうでなければ、選択の拡張を停止する。
【００９７】
この場合、処理は、オブジェクトの収集を構成する空間的な選択から空間−時間基準を用いて収集を変更することになる。事例４は、時間的に決定された収集によって開始して空間−時間基準によってそれを変更することを含む代替処理の１つの例である。代替の１つの例は、もっとも最近に生成されたオブジェクトに関する要求によって時間的に決定された収集をユーザが指定することである。
【００９８】
事例５  ：  時間を用いた空間的な選択の解放(disentanglement)
このアルゴリズムは、オブジェクトの２つのグループが空間的に絡み合わされた状況で有益であるが、２つのグループが時間で集団化された状況（例えば、句(phrase)が時間でしっかりとストロークを集団化するグループを提供するように書かれ、後に、句の注釈が元の句に非常に近接して書かれる）では有益ではない。もしユーザがその注釈を空間的に選択することを試みれば、元の句の一部分を包含しないことは困難であろう。なぜなら、それらは空間的に絡み合わされているからである。
１．Ｓがなんらかのユーザアクションによって与えられる。
２．Ｃ（Ｓ）を計算する。選択をＣ（Ｓ）に設定する。
３．オブジェクトの関連する時刻で選択におけるオブジェクトをソートする。
４．ソートされた選択における隣接するオブジェクト間の時刻の差分を計算する。
５．選択における隣接するオブジェクト間のもっとも大きな時刻差分Ｄmax を捜し出す。
６．ソートされた選択においてＤmax が発生した位置で選択を部分集合の選択１と選択２に分割する。
７．ユーザが選択１または選択２を選択したいかどうかをユーザに問い合わせる。
８．もし答えが選択１または選択２のいずれかであれば、答え（選択１または選択２）に選択を設定してステップ５に戻る。
９．もしそうでなければ、選択の解放を停止する。
【００９９】
空間的近接度検査  ：
この検査は、与えられたオブジェクトＯが与えられたオブジェクトの組、つまり選択に空間的に”近接している”ことが真であるかどうかを決定する。標準しきい値距離Ｄthreshが存在し、オブジェクトＯは常にこの範囲内で選択に”近接している”とみなされる。他方、近接度は、選択におけるオブジェクトの空間的な密度に関連して計算される。
Ｄ＝Ｏから選択におけるもっとも近接なオブジェクトまでの距離、を計算。
if  Ｄ＜Ｄthresh、then True を返す。
if  選択がただ１つのオブジェクトを有するれば、then Falseを返る。
temp =  選択のコピー
tempのそれぞれのＸi に対して、
Ｍi ＝Ｘi からtempのもっとも近接するオブジェクトまでの距離、を計算。
Ｘi をtempから除去する。
Ａ＝Ｍi の平均、を計算する。
Ｓ＝Ｍi の標準偏差、を計算する。
if  Ｄ＜（Ａ＋２＊Ｓ）
then Trueを返す。
else False を返す。
【０１００】
時間的近接度検査  ：
この検査は、与えられたオブジェクトＯが与えられたオブジェクトの組、つまり選択に時間的に”近接している”ことが真であるかどうかを決定する。標準しきい値時間Ｄthreshが存在し、オブジェクトＯは常にこの範囲内で選択に時間的に”近接している”とみなされる。他方、近接度は、選択におけるオブジェクトの時間的な密度に関連して計算される。
Ｄ＝Ｏから選択におけるもっとも近接なオブジェクトまでの時間差分、を計算する。
if  Ｄ＜Ｄthresh、then True を返す。
if  選択がただ１つのオブジェクトを有するれば、then Falseを返る。
選択をソートする。その結果オブジェクトは時間順にである。
選択における連続するそれぞれのＸi （最後は除く）に対して、
Ｄi ＝Ｘi とＸi+1 との間の時間差分、を計算。
Ａ＝Ｄi の平均、を計算する。
Ｓ＝Ｄi の標準偏差、を計算する。
if  Ｄ＜（Ａ＋２＊Ｓ）
then Trueを返す。
else False を返す。
【０１０１】
空間的なグループ化と時間的なグループ化を組み合わせる前述したアルゴリズムは、多くの場合において、オブジェクトのもっとも適切なグループ化、すなわちお互いにうまく関係しているオブジェクトのグループ化、したがってユーザの意思にもっとも合致しそうなオブジェクトのグループ化を提供することが期待できることは明白であろう。いったんターゲットオブジェクトが選択されると、それはターゲットオブジェクトのデータ構造体の選択されたフィールドに値を格納することによってまたはターゲットオブジェクトへのポインタをリストに格納することによって容易に設定されるが、そのようにして選択されたターゲットオブジェクトは上述された方法と同様の方法で操作されてもよい。
【０１０２】
図２は、選択されるターゲットオブジェクトを決定するための時間−空間閉鎖を用いるいくつかの利点を例示する。例えば、もし文字”ｉｐｅ”が文字”Ｗ”を生成してすぐに生成されたならば、物理的に分離されているにもかかわらず、”Ｗ”および”ｉｐｅ”は両方とも同一のオブジェクト４７の一部であると考えられる。対照的に、文字”Ｂ”は後で生成されたと考えると、たとえワイプストローク５０が”Ｂ”に交差していてもそれは選択されない。同様な方法は、３つの分離したストロークセグメントから作られていても、単一のオブジェクトとして文字”ＯＫ”を取り扱われるようにする。
【０１０３】
【発明の効果】
このように、ユーザとコンピュータ制御ディスプレイとの間の新規性のあるインタフェースが記述された。そこではユーザの自然なワイピンイグアクションが、その時あるいはその後の結合した取り扱いの選択のために表示されたオブジェクトを自然にグループ化する方法として用いられることができる。同様のワイピングまたは身振りによる運動が選択されるオブジェクトに非常に多様なアクションをなすのに使用されてもよいので、調和した、しかし強力なインタフェース技術を生み出すこととなる。その技術は、ユーザの意思を実現するための、例えば与えられたまたは設定されたアプリケータの空間領域または時間領域の範囲内にないオブジェクトを取り除くための種々のフィルタリング方式に容易に役に立つのである。ここで記述されたインタフェース技術は、特に研究発表に使用される形態のホワイトボードすなわち図式の手書き写生を可能にするその能力に対して、およびお互いに考えを交換するためのその他同種類のものに有益である。
【図面の簡単な説明】
【図１】本発明が使用されるコンピュータ制御されたホワイトボードの１つの形態を例示するブロック構成図である。
【図２】スクリーンの２つの縁に表示されるソフトウェア制御された選択ボタンまたはアイコンメニューと、ディスプレイ上のいくつかのオブジェクトと、を表示したスクリーン表示の前面図である。
【図３】ＡからＢに移動しているワイパーアプリケータオブジェクトの１つの形態（長方形）を例示する。
【図４】（Ａ）及び（Ｂ）は、２つのワイピングストロークを図示し、一方が反転すなわち枝を有し、他方が反転すなわち枝を有しない。
【図５】本発明を実現するためのターゲット検出アルゴリズムの１つの形態の派生を例示する。
【図６】本発明を実現するためのターゲット検出アルゴリズムの１つの形態の派生を例示する。
【図７】本発明を実現するためのターゲット検出アルゴリズムの１つの形態の派生を例示する。
【図８】本発明を実現するためのターゲット検出アルゴリズムの１つの形態の派生を例示する。
【図９】本発明を実現するためのターゲット検出アルゴリズムの１つの形態の派生を例示する。
【図１０】本発明を実現するためのターゲット検出アルゴリズムの１つの形態の派生を例示する。
【図１１】本発明を実現するためのターゲット検出アルゴリズムの１つの形態の派生を例示する。
【符号の説明】
１０・・・ホワイトボード
１１・・・表示スクリーン
１２・・・投影表示手段
１３・・・メモリー
１４・・・コンピュータ
１５・・・液晶装置
２０・・・ペン
２１・・・ボタン
２２・・・スイッチ
２４・・・ビーム
２５・・・検出モジュール
３５〜３６・・・ボタン／アイコン
３７〜４５・・・ボタン
【図１】
0003789946.tif 000010
【図２】
0003789946.tif 000011
【図３】
0003789946.tif 000012
【図４】
0003789946.tif 000013
【図５】
0003789946.tif 000014
【図６】
0003789946.tif 000015
【図７】
0003789946.tif 000016
【図８】
0003789946.tif 000017
【図９】
0003789946.tif 000018
【図１０】
0003789946.tif 000019
【図１１】
0003789946.tif 000020