(57)【要約】  コンピュータ実装方法は、ユーザによって入力されたストロークを表す２つのタイプのベクトルデータを選択的に出力する。タイプ１のストロークオブジェクトは位置入力センサを備えた装置において生成され、ユーザは、ストロークを表すタイプ１のストロークオブジェクトを生成するように位置入力センサ上でポインタを操作する。ストロークは、ポインタが位置入力センサ上に配置されるペンダウン時に開始し、ポインタがそこから取り除かれるペンアップ時に終了する。タイプ１のストロークオブジェクトのリアルタイムレンダリングを、ストロークのペンダウン時の後にペンアップ時を待たずに開始する。タイプ１のストロークオブジェクトの、ペンアップ時を経た完了後に、タイプ１のストロークオブジェクトを、ストロークの境界を定義する曲線のセットであるタイプ２のストロークオブジェクトに変換し、ファイルとしてエクスポートまたはディスプレイ上にレンダリングし得る。【選択図】図３
2019512118.tif 000002
【特許請求の範囲】
【請求項１】
ユーザによって入力されたストロークを表す２つのタイプのベクトルデータを選択的に出力するコンピュータ実装方法であって、
位置入力センサを備えた装置においてタイプ１のストロークオブジェクトを生成することであって、前記タイプ１のストロークオブジェクトは、前記位置入力センサに対してポインタを操作するユーザによって形成されるストロークであり、各タイプ１のストロークオブジェクトは、前記ポインタが位置入力センサに対して検出可能に配置されるペンダウン時に開始し、前記ポインタが前記位置入力センサから取り除かれるペンアップ時に終了する、タイプ１のストロークオブジェクトを生成することと、
タイプ１のストロークオブジェクトのリアルタイムレンダリングを開始することであって、前記タイプ１のストロークオブジェクトによって表されるストロークの前記ペンダウン時の後に前記ペンアップ時における前記ストロークの完了を待たずにタイプ１のストロークオブジェクトのリアルタイムレンダリングを開始することと、
タイプ１のストロークオブジェクトのペンダウン時からペンアップ時までのストロークを表すタイプ１のストロークオブジェクトの完了の後に、前記タイプ１のストロークオブジェクトをタイプ２のストロークオブジェクトに変換することであって、前記タイプ２のストロークオブジェクトは前記ストロークの境界を定義するセグメントのセットである、前記タイプ１のストロークオブジェクトをタイプ２のストロークオブジェクトに変換することと、
出力要求に応答して前記タイプ２のストロークオブジェクトをエクスポートすることとを含む方法。
【請求項２】
請求項１に記載のコンピュータ実装方法であって、
タイプ１のストロークオブジェクトを生成する前記ステップは、
前記位置入力センサによって検出されるペンイベントデータを順次に受け取ることと、
受け取ったペンイベントデータに含まれる座標値に基づいてポイントオブジェクトを順次に生成することであって、前記ポイントオブジェクトは、タイプ１のストロークオブジェクトを形成するように、定義された曲線補間アルゴリズムに従って曲線セグメントを補間する制御点として作用し、各ポイントオブジェクトは幅情報に関連付けられる、ポイントオブジェクトを順次に生成することと、
タイプ１のストロークオブジェクトを、前記タイプ１のストロークオブジェクトによって表されるストロークを定義する前記ポイントオブジェクトの集合として生成することとを含む方法。
【請求項３】
請求項２に記載のコンピュータ実装方法であって、
前記幅情報は、前記タイプ１のストロークオブジェクトによって表されるストロークの幅を定義するのに用いられるポイントオブジェクトの半径を示す方法。
【請求項４】
請求項２に記載のコンピュータ実装方法であって、
前記タイプ１のストロークオブジェクトのリアルタイムレンダリングを開始するステップは、
前記タイプ１のストロークオブジェクトの各曲線セグメントを複数の分割ポイントｉにセグメント化することと、
前記幅情報を前記分割ポイントｉのそれぞれに適用して、前記タイプ１のストロークオブジェクトを形成する２つの輪郭曲線を特定することと、
前記タイプ１のストロークオブジェクトを前記２つの輪郭曲線の間でラスター化することによってレンダリングすることとを含む方法。
【請求項５】
請求項４に記載のコンピュータ実装方法であって、
前記分割ポイントｉは、前記タイプ１のストロークオブジェクトによって表される前記ストロークが前記ペンダウン時から前記ペンアップ時までユーザによって入力される順序と同じ順序をなす方法。
【請求項６】
請求項２に記載のコンピュータ実装方法であって、
前記タイプ１のストロークオブジェクトを、それぞれ前記幅情報に関連付けられた前記ポイントオブジェクトを含むコンピュータ読み取り可能なファイルとしてエクスポートすることを含む方法。
【請求項７】
請求項１に記載のコンピュータ実装方法であって、
前記タイプ１のストロークオブジェクトを前記タイプ２のストロークオブジェクトに変換する前記ステップは、
クリッピングアルゴリズムを用いて、自己交差を含まない１以上の単純化された形状に前記タイプ１のストロークオブジェクトの形状を単純化することであって、単純化された各形状は、前記境界ポイントと前記境界ポイント間に形成された前記セグメントとによって定義される、前記タイプ１のストロークオブジェクトの形状を単純化することと、
前記１以上の単純化された形状を、前記ストロークの前記境界を定義する前記セグメントのセットからなる前記タイプ２のストロークオブジェクトとして出力することとを含む方法。
【請求項８】
請求項７に記載のコンピュータ実装方法であって、
前記タイプ２のストロークオブジェクトによって表される前記前記ストロークが前記ペンダウン時から前記ペンアップ時までユーザによって入力される順序と同じ順序をなさない方法。
【請求項９】
請求項７に記載のコンピュータ実装方法であって、
前記タイプ２のストロークオブジェクトは、前記ストロークの前記境界を定義する前記セグメントのセットを含むコンピュータ読み取り可能なファイルとしてエクスポートされる方法。
【請求項１０】
請求項７に記載のコンピュータ実装方法であって、
境界が曲線適合された前記タイプ２のストロークオブジェクトは、前記ストロークの前記境界を定義する前記セグメントのセットとしてのベジェ曲線のセットを含むコンピュータ読み取り可能なファイルとしてエクスポートされる方法。
【請求項１１】
請求項１０に記載のコンピュータ実装方法であって、
各ベジェ曲線は４つの制御点によって定義される三次曲線であり、ベジェ曲線の１番目の制御点は直前のベジェ曲線の４番目の制御点に一致する方法。
【請求項１２】
請求項１１に記載のコンピュータ実装方法であって、
前記ベジェ曲線は、それぞれ前記ベジェ曲線の１番目の制御点、２番目の制御点、及び３番目の制御点によって明示的に定義され、前記直前のベジェ曲線の３番目の制御点によって暗黙的に定義される方法。
【請求項１３】
請求項１０に記載のコンピュータ実装方法であって、
前記コンピュータ読み取り可能なファイルはスケーラブルベクトルグラフィックス（ＳＶＧ）ファイルである方法。
【請求項１４】
請求項１に記載のコンピュータ実装方法であって、
ディスプレイ上に、エクスポートされる前記タイプ２のストロークオブジェクトをレンダリングすることを含む方法。
【請求項１５】
請求項１４に記載のコンピュータ実装方法であって、
前記タイプ２のストロークオブジェクトをレンダリングすることは、前記タイプ２のストロークオブジェクトによって表される前記ストロークのズーミング、スクローリング、及びレンダリング領域の変更のうちの１つ以上を含む方法。
【請求項１６】
請求項１に記載のコンピュータ実装方法であって、
さらに、前記タイプ１のストロークオブジェクトを格納することと、
前記タイプ２のストロークオブジェクトを格納することと、
出力要求に応じて前記タイプ１のストロークオブジェクト及び前記タイプ２のストロークオブジェクトのうちの一方または両方を選択的にエクスポートすることとを含む方法。
【請求項１７】
請求項１６に記載のコンピュータ実装方法であって、
さらに、リアルタイム描画アプリケーション及びテキスト認識アプリケーションを含むアプリケーションからの出力要求に応答して、前記タイプ１のストロークオブジェクトをエクスポートすることと、
一括描画アプリケーション及びポータブルドキュメントフォーマット（ＰＤＦ）アプリケーションを含むアプリケーションからの出力要求に応答してタイプ２のストロークオブジェクトをエクスポートすることとを含む方法。
【請求項１８】
ユーザによって入力されたストロークを表す２つのタイプのベクトルデータを選択的に出力するシステムであって、
メモリ装置と、
前記メモリ装置に結合されたプロセッサとを備え、前記プロセッサは、
位置入力センサからペンイベントデータを受け取ることであって、前記ペンイベントデータは前記位置入力センサに対してポインタを操作するユーザによって形成されたストロークを表し、各ストロークは、前記ポインタが位置入力センサに対して検出可能に配置されるペンダウン時に開始し、前記ポインタが前記位置入力センサから取り除かれるペンアップ時に終了する、位置入力センサからペンイベントデータを受け取ることと、
受け取った前記ペンイベントデータに基づいて、それぞれ前記ストロークを表すタイプ１のストロークオブジェクトを生成することと、
タイプ１のストロークオブジェクトのリアルタイムレンダリングを開始することであって、前記タイプ１のストロークオブジェクトによって表されるストロークの前記ペンダウン時の後に前記ペンアップ時における前記ストロークの完了を待たずにタイプ１のストロークオブジェクトのリアルタイムレンダリングを開始することと、
タイプ１のストロークオブジェクトのペンダウン時からペンアップ時までのストロークを表すタイプ１のストロークオブジェクトの完了の後に、前記タイプ１のストロークオブジェクトをタイプ２のストロークオブジェクトに変換することであって、前記タイプ２のストロークオブジェクトは前記ストロークの境界を定義するセグメントのセットを含む、タイプ１のストロークオブジェクトをタイプ２のストロークオブジェクトに変換することと、
出力要求に応答してタイプ２のストロークオブジェクトをエクスポートすることとを実行するように構成されているシステム。
【請求項１９】
請求項１８に記載のシステムであって、
前記プロセッサは、前記タイプ２のストロークオブジェクトを、前記ストロークの前記境界を定義する前記セグメントのセットとしてのベジェ曲線のセットを含むコンピュータ読み取り可能なファイルとしてエクスポートするシステム。
【請求項２０】
請求項１９に記載のシステムであって、
前記コンピュータ読み取り可能なファイルはスケーラブルベクトルグラフィックス（ＳＶＧ）ファイルであるシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、位置入力センサ上で手書きされるストロークを再生するのに使用可能な２つのタイプのインクベクトルデータを生成して選択的に出力する方法及びシステムを対象とする。
【背景技術】
【０００２】
ユーザがペン形の装置を用いることによって手書き（フリーハンド）データを入力することが可能である様々な手書き入力システムが知られている。例えば、関連付けられた筆圧及びペンの傾きデータを含む手書きデータの入力が可能である電磁共鳴タイプのペンタブレット入力システムが知られている。さらなる例としては、静電タイプのペン入力システムが知られており、これは指とセンサ表面との間に静電容量が生成されるのと同じように、ペン形の入力装置と（タブレット）センサ表面との間に静電容量を生成する。測定された入力素子の位置のコレクションから導出されるジェスチャー情報のような、相対的にシンプルな情報を出力する入力システムもまた知られている。
【０００３】
ペン形の道具によって入力される手書きデータまたはストローク（パスまたはトレース）データは、定義されたデータ型またはフォーマットで格納され、インクメッセージング、インク保管・回復、電子メール、写真注釈、及び遠隔ビデオ会議アプリケーションなどの、様々な種類の装置及びアプリケーション上で使用され（例えば、表示され）得る。このような手書きデータをデジタルインクまたはインクデータと称する。インクデータは、ユーザによって入力された位置の座標値からなる未加工のデータと、画像としてディスプレイに直接にレンダリングされ得る画素データからなるラスタデータとの間に存在する中間データである。したがって、大抵のインクデータはベクトルデータである。様々なタイプのインクデータの例が、次の非特許文献である非特許文献１乃至非特許文献５に記載されている。
【０００４】
例えば、ＩｎｋＭＬ（非特許文献１）及びＩＳＦ（非特許文献２）のデータ構造は、様々なアプリケーション間で共有可能なようにペン型の装置によって入力されたストロークデータを表す。ＳＶＧ（非特許文献３）は、どのタイプのペン装置が入力装置として使用されるかに関わらず、ユーザによって入力された制御点によって定義されるパスを、ベクトルデータとして描画することを可能にするウェブ標準を提供する。
【０００５】
非特許文献１乃至非特許文献５に記載されたインクデータはすべて、ペンまたは指の動きにより形成されるストローク（またはトレースもしくはパス）を再生するのに必要な幾何学的な情報を定義する。このような幾何学的な情報を、本明細書では「ストロークオブジェクト」と総称する。ストロークオブジェクトは、そのデータ構造が、ペンまたは指の動きにより形成されるストローク（またはトレースもしくはパス）を再生するために集合的に使用される一組のポイントまたは制御点座標を含むベクトルデータ情報である。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】Ｗ３Ｃ、レコメンデーション、２０１１年９月２０日、「インクマークアップ言語（Ink Markup Language）（ＩｎｋＭＬ）」（ＵＲＬ−http://www.w3.org/TR/2011/REC-InkML-20110920/）
【非特許文献２】マイクロソフトコーポレーション他、「インクシリアライズドフォーマット仕様書(Ink Serialized Format Specification)」、２００７年(ＵＲＬ−http//download.microsoft.com/download/0/B/E/0BE8BDD7-E5E8-422A-ABFD-4342ED7AD886/InkSerializedFormat(ISF)Specification.pdf)
【非特許文献３】Ｗ３Ｃワーキングドラフト、２０１４年２月１１日、「スケーラブルベクトルグラフィックス(Scalable Vector Graphics)（ＳＶＧ）２」、(ＵＲＬ−http://www.w3.org/TR/SVG2/)Ｗ３Ｃレコメンデーション、２０１１年８月１６日、「スケーラブルベクトルグラフィックス(Scalable Vector Graphics)（ＳＶＧ）１．１（第２版）」(ＵＲＬ−http://www.w3.org/TR/2011/REC-SVG11-201110816/)
【非特許文献４】Ｗ３Ｃ、「ＨＴＭＬ５  ＨＴＭＬ及びＸＨＴＭＬのための語彙及び関連するＡＰＩ  Ｗ３Ｃレコメンデーション２０１４年１０月２８日(HTML5 A vocabulary and associated APIs for HTML and XHTML W3C Recommendation 28 October 2014)」（ＵＲＬ−http://www.w3.org/TR/html5/）
【非特許文献５】スレートコーポレーション他、「ＪＯＴ−インクの格納及び交換フォーマットのための仕様書(A Specification for an Ink Storage and Interchange Format)」、バージョン１．０、１９９６年９月
【発明の概要】
【発明が解決しようとする課題】
【０００７】
種々の態様によれば、本発明は、出力要求に応じて、ユーザによって入力されたストロークを表す２つのタイプのベクトルデータを生成して選択的に出力する方法及びシステムを提供する。態様は、上記の非特許文献１乃至非特許文献５に定義される種々のタイプのストロークオブジェクトとともに使用することが可能であり、以前に、非特許文献１乃至非特許文献５では利用可能でなかった技術的解決手法を提供する。例えば、本発明の種々の態様によれば、非特許文献１乃至非特許文献５に定義されるストロークオブジェクトまたはそれらの変形を、２つのタイプのストロークオブジェクトの一方として用いてもよく、それらを２つのタイプのストロークオブジェクトの他方を生成するように変換してもよい。
【課題を解決するための手段】
【０００８】
一側面によれば、ユーザによって入力されたストロークを表す２つのタイプのベクトルデータを選択的に出力するコンピュータ実装方法が提供される。位置入力センサを含む装置においてタイプ１のストロークオブジェクトを生成し、タイプ１のストロークオブジェクトは、ユーザが位置入力センサに対してポインタを操作することによって形成されるストロークを表す。それぞれのタイプ１のストロークオブジェクトは、ポインタが位置入力センサに対して検出可能に配置されるペンダウン時に開始してポインタが位置入力センサから取り除かれるペンアップ時に終了するストロークを表す。タイプ１のストロークオブジェクトによって表されるストロークのペンダウン時の後に、ペンアップ時におけるストロークの完了を待たずに、タイプ１のストロークオブジェクトのリアルタイムレンダリングを開始する。タイプ１のストロークオブジェクトのペンダウン時からペンアップ時までのストロークを表すタイプ１のストロークオブジェクトの完了の後に、タイプ１のストロークオブジェクトを、ストロークの境界を定義するセグメント（例えば、曲線セグメント）のセットであるタイプ２のストロークオブジェクトに変換する。タイプ２のストロークオブジェクトによって表されるストロークのズーミング、スクローリング、及びレンダリング領域の変更を含む多数のストロークをレンダリングする一括描画アプリケーションからの出力要求などの出力要求に応じて、タイプ２のストロークオブジェクトをエクスポートする。
【０００９】
幅情報に関連付けられるとともにタイプ１のストロークオブジェクトによって表されるストロークがペンダウン時からペンアップ時までユーザによって入力される順序と同じ順序であるポイントオブジェクトを用いて定義されるタイプ１のストロークオブジェクトとは異なり、タイプ２のストロークオブジェクトは、ベジェ曲線のセットなどのセグメントのセットを用いてストロークの境界を定義する。したがって、ユーザによる入力と同じ（時間的）順序を再生することはできない一方、タイプ２のストロークオブジェクトは、ストロークの一括操作（ズーミング、スクローリング、傾斜、レンダリング領域の変更など）を含む迅速なレンダリングに適している。
【００１０】
一側面によれば、タイプ２のストロークオブジェクトを、ストロークの境界を定義するセグメントのセットとしてのベジェ曲線のセットを含むコンピュータ読み取り可能なファイルとしてエクスポートする。
【００１１】
さらなる一側面によれば、各ベジェ曲線は４つの制御点によって定義される三次曲線であり、ベジェ曲線の１番目の制御点は直前のベジェ曲線の４番目の制御点に一致する。
【００１２】
他の一側面によれば、ベジェ曲線は、それぞれベジェ曲線の１番目、２番目、及び３番目の制御点によって明示的に定義され、直前のベジェ曲線の３番目の制御点によって暗黙的に定義される。
【００１３】
他の一側面によれば、コンピュータ読み取り可能なファイルは、スケーラブルベクトルグラフィックス（ＳＶＧ）ファイルである。
【図面の簡単な説明】
【００１４】
【図１Ａ】図１Ａは、手書きデータが入力される位置入力センサであって、未加工の位置データ、リアルタイム／高速レンダリングに適するタイプ１のベクトルデータ、または一括操作（ズーム、スクロール、回転、レンダリング領域の変更など）に適するタイプ２のベクトルデータが選択的に出力される位置入力センサを備えたシステム全体を示す図である。
【図１Ｂ】図１Ｂは、手書きデータが入力される位置入力センサであって、未加工の位置データ、リアルタイム／高速レンダリングに適するタイプ１のベクトルデータ、または一括操作（ズーム、スクロール、回転、レンダリング領域の変更など）に適するタイプ２のベクトルデータが選択的に出力される位置入力センサを備えたシステム全体を示す図である。
【図２】図２は、ペンイベントデータ（または未加工の位置データ）、タイプ１のベクトルデータ、タイプ２のベクトルデータ、及びラスター化された画像データ間の関係及び変換（変形）方向を示す図である。
【図３】図３は、出力要求に応じて少なくともタイプ１のベクトルデータ及びタイプ２のベクトルデータを選択的に出力する概略的な方法を示すフローチャートである。
【図４】図４は、タイプ１のベクトルデータ生成器、タイプ２のベクトルデータ生成器（タイプ１からタイプ２への変換器）、及びタイプ１のベクトルデータまたはタイプ２のベクトルデータを選択的に出力するセレクタを備えたインクデータ処理システムの機能ブロック図である。
【図５】図５は、図４のタイプ１のベクトルデータ生成器の機能ブロック図である。
【図６】図６は、図５のタイプ１のベクトルデータ生成器におけるポイント「Ａ」〜ポイント「Ｄ」で実行される処理を示す。
【図７】図７は、図５のタイプ１のベクトルデータ生成器によって実行されるルーチン例を示すフローチャートである。
【図８】図８は、タイプ１のベクトルデータのリアルタイムレンダリングを共同で実行するリアルタイムレンダラ及びグラフィック処理部の機能ブロック図である。
【図９Ａ】図９Ａは、タイプ１のストロークオブジェクトを生成してレンダリングする処理を示す。
【図９Ｂ】図９Ｂは、タイプ１のストロークオブジェクトを生成してレンダリングする処理を示す。
【図９Ｃ】図９Ｃは、タイプ１のストロークオブジェクトを生成してレンダリングする処理を示す。
【図９Ｄ】図９Ｄは、タイプ１のストロークオブジェクトを生成してレンダリングする処理を示す。
【図１０Ａ】図１０Ａは、図４のタイプ２のベクトル生成器（タイプ１からタイプ２への変換器）の機能ブロック図である。
【図１０Ｂ】図１０Ｂは、曲線適合が適用される前の、図１０Ａのタイプ２のベクトル生成器によって生成される境界データ例（単純な多角形）を示す。
【図１０Ｃ】図１０Ｃは、図１０Ａのタイプ２のベクトル生成器によって生成されて曲線適合が適用された境界データ例（三次ベジェ）を示す。
【図１１】図１１は、自己交差を含まない２つの形状からなるタイプ２のストロークオブジェクトへの自己交差を含むタイプ１のストロークオブジェクトの変換を示す概略的なフロー図である。
【図１２】図１２は、図１０Ａのタイプ２のベクトルデータ生成器によって実行されるルーチン例を示すフローチャートである。
【図１３】図１３は、元のタイプ１のベクトルデータの透過度値に基づいて色値を調整することによって、ＰＤＦファイルに埋め込まれるタイプ２のベクトルデータを生成する方法を示すフローチャートである。
【図１４Ａ】図１４Ａは、図１３におけるようにタイプ２のベクトルデータを生成する方法を示す概略図である。
【図１４Ｂ】図１４Ｂは、図１３におけるようにタイプ２のベクトルデータを生成する方法を示す概略図である。
【図１５】図１５は、出力要求に応じて、タイプ１のベクトルデータ、タイプ２のベクトルデータ、またはタイプ０のデータ（未加工のペンイベントデータ）を選択的に出力する処理を示す。
【図１６Ａ】図１６Ａは、それぞれタイプ１のストロークオブジェクトによって表されるストロークを定義する幅情報に関連付けられたポイントオブジェクトセットを含むコンピュータ読み取り可能なファイル例を示す。
【図１６Ｂ】図１６Ｂは、図１６Ａのタイプ１のストロークオブジェクトを定義するポイントオブジェクトセットのレンダリング結果例である。
【図１７Ａ】図１７Ａは、タイプ２のストロークオブジェクトによって表されるストロークの境界を定義するベジェ曲線のセットを含むコンピュータ読み取り可能なファイル例を示す。
【図１７Ｂ】図１７Ｂは、レンダリングされたベジェ曲線の制御点を示す。
【図１７Ｃ】図１７Ｃは、制御点に基づいたベジェ曲線のレンダリング結果例である。
【発明を実施するための形態】
【００１５】
本明細書で使用される以下の用語は、次の一般的な意味を有する。
【００１６】
「ペンイベントデータ」（図４参照）は、ユーザの手書き描画動作に基づいて入力されるデータを意味する。ペンイベントデータは、所与の入力装置１０ａによって入力される未加工の（位置）データであってもよいし、（例えば、動作イベント／タッチ入力サブシステム２１によって）未加工のデータを処理したデータであってもよい。すべてのイベントデータは少なくとも、ユーザによって描かれたストロークの位置情報（例えば、ＸＹ座標）を有することが期待される一方、ペンイベントデータは装置に依存しており、入力装置の種類ごとに固有である付加的な属性（例えば、筆圧データ「Ｐ」、ペン回転または傾斜角のデータなど）を含み得る。例えば、筆圧を検出可能な入力装置から受け取ったペンイベントデータは、筆圧を検出できない入力装置から受け取ったペンイベントデータとは異なる。
【００１７】
「インクデータ」は、ペンイベントデータから導出されるオブジェクトの集合を意味する。インクデータはイベントデータに基づいてストローク（パス、トレース）をキャプチャし、通常、未加工のデータ（またはペンイベントデータ）とディスプレイ上に画像として直接描画され得るラスタデータ（または画素データ）との間に存在する一種の中間データであるベクトルデータの形態をなす。したがって、インクデータは、ストロークの幾何／形状のみならず、色、透過度値、圧力値などのインクデータの特性をも記述する。ペンイベントデータとは異なって、インクデータは装置に依存し、例えば、筆圧及び／またはペンの回転／傾斜角の属性をサポートする装置と、これらの属性をサポートしない装置とを含む、異なる種類の装置によって共有され得る。
【００１８】
参照によって本明細書に援用される、同様に譲渡された２０１４年１１月１９日出願の米国特許出願第１４／８３８，１８２号（以後、「'１８２出願」）に開示されたインクデータの一種は、ストロークオブジェクト、メタデータオブジェクト、描画スタイルオブジェクト、及び操作オブジェクトという、概して４種類のオブジェクトを含む。手短に言うと、「ストロークオブジェクト」は、入力装置のユーザ操作によって得られたストロークの形状を定義する。上述の非特許文献１乃至非特許文献５に記載された「ストローク」、「パス」、「トレース」、及び「カンバスパス」は、すべて、'１８２出願のインクデータにおいてサポートされ得るストロークオブジェクトである。「メタデータオブジェクト」は、著者、ペンＩＤ、ローカルに取得される日時情報、ＧＰＳにより取得される位置情報などのストロークオブジェクトを説明する非描画関連情報を含む。「描画スタイルオブジェクト」は、ディスプレイ上に描画され、表現され、またはラスター化される際に、ストロークオブジェクトのレンダリングされる形状（ストローク幅、ストロークスタイル、またはストロークパターン）及びレンダリングされる色を制御または調整するのに必要な描画関連情報を含む。「操作オブジェクト」は、既存のストロークオブジェクトの全体または一部に対して、操作／変更の動作（例えば、スライス操作、拡大操作、回転操作、傾斜操作など）を実行するように構成されている。本明細書に開示された本発明の様々な実施の形態は、'１８２出願に開示されたインクデータを含む様々な種類のインクデータに使用可能であって十分に適合する。
【００１９】
図１Ａ及び図１Ｂは、個々の出力要求または出力先に応じ、未加工の（ペンイベント）データに加えて、２つのタイプのインクベクトルデータを生成して選択的に出力することが可能な、本発明の代表的な実施の形態にかかるシステム全体を示す図である。本システムは、スタイラス、ポインタなどの入力装置１０ａの操作に基づいて手書きデータが入力される位置入力センサ５０を備える。位置入力センサ５０のセンサコントローラ１０から、図１Ｂに示すように特定のアプリケーション３００からの出力要求（ＲＴ）に応じて、未加工の位置データ、例えばリアルタイム描画に適したタイプ１のベクトルデータ、または、例えば一括操作（ズーム、スクロール、回転、描画領域／範囲の変更など）及び高速一括再描画に適したタイプ２のベクトルデータが選択的に出力される。示された図１Ｂの非限定的な例において、署名検証アプリケーションからの出力要求に応答して、未加工の位置データが出力される。タイプ１のベクトルデータは、入力装置１０ａによって手書きデータが入力されると、またはテキスト（文字）認識アプリケーションからの出力要求に応答して、手書きデータのリアルタイム描画（レンダリング）のために出力される。タイプ２のベクトルデータは、ストロークオブジェクトセットに一括して適用される、ズーミング、回転、スクローリング、もしくは傾斜のコマンド、または描画領域を変更するコマンド（例えば、ストロークを含む全領域内のどのサブ領域を描画するかを変更するコマンド）などの、一括描画操作に関連付けられた出力要求に応答して、またはベクトルデータをＰＤＦファイルに埋め込む出力要求に応答して、出力される。
【００２０】
位置入力センサ５０は、従来周知である電磁タイプ、静電容量タイプ、及び抵抗タイプのセンサを含む、様々な種類の位置入力センサのうちの任意のものからなり得る。位置入力センサ５０は、通常、通信モジュール、ＩＯインタフェース制御部、センサＩＣ、ＣＰＵ２０、メモリ（ＲＡＭ）３０などの、位置入力センサ５０の動作を処理するのに必要なハードウェア／ソフトウェア１００を備えたコンピュータ１の一部をなす。コンピュータ１は、さらに、グラフィック処理ユニット（ＧＰＵ）４０を備える、またはそのアクセス権を有する。コンピュータ１は様々な他の構成要素を備え得るが、その詳細な説明が本開示の目的に必須でないことは明らかである。
【００２１】
図２は、ペンイベントデータ（または未加工の位置データ）、タイプ１のベクトルデータ、タイプ２のベクトルデータ、及びラスター化された画像データとの間の関係及び変換（変形）方向を示す図である。
【００２２】
示された図２の例において、位置入力センサ５０に入力されたペンイベントデータは、入力された各位置のＸＹ座標と、入力された位置において位置入力センサ５０の表面に対して入力装置１０ａにより加えられた圧力値を示す、入力された位置に関連付けられた圧力データ「Ｐ」とを含む。
【００２３】
流れ線２０ａは、ペンイベントデータ（Ｘ，Ｙ，Ｐ）を用いてタイプ１のベクトルデータを生成することを示す。タイプ１のベクトルデータは、それぞれが位置入力センサ５０上で入力装置１０ａによって手書きされたストロークを表すように生成される、１以上のタイプ１のストロークオブジェクト２１を含む。位置入力センサ５０は、マトリックス状の電極１０ｂを備える。図１Ａに示すように、タイプ１のストロークオブジェクトは、入力装置１０ａが位置入力センサ５０に対して検出可能に配置されるペンダウン（「ダウン」）時に開始し、入力装置１０ａが位置入力センサ５０から取り除かれるペンアップ時に終了するストローク（「ｓｔ」）を表すように構成されている。したがって、タイプ１のストロークオブジェクト２１は、通常、ストロークがそのペンダウン時からそのペンアップ時まで手書きされる順序と同じ順序となる一連のポイント（またはポイントオブジェクト）によって定義される。さらに、ポイントのそれぞれは、以下で説明するように、ポイントに関連付けられた幅及び／または透過度のパラメータを有する。図２に示すように、タイプ１のストロークオブジェクト２１は、タイプ１のストロークオブジェクト２１によって表されるストロークが自身と交差する自己交差２１ａを含み得る。
【００２４】
流れ線２０ｂは、タイプ１のベクトルデータが、通常、ペンイベントデータに可逆に変換されないことを示す。代わりに、代表的な実施の形態では、ペンイベントデータから生成されるタイプ１のベクトルデータは、ディスプレイ上でリアルタイムに継続的に描画され、またはメモリ装置に格納される。格納されたタイプ１のベクトルデータは、タイプ２のベクトルデータを生成するのに用いられ得る、または、タイプ１のベクトルデータを呼び出す出力要求に応答して、ラスター化されたデータを形成するように選択的に出力され得る。
【００２５】
流れ線２２ａは、例えば、一括操作（ズーム、スクロール、回転、レンダリング領域の変更など）に適したタイプ２のベクトルデータを生成するのに用いられ、またはタイプ２のベクトルデータに変換される。タイプ２のベクトルデータは、それぞれタイプ１のストロークオブジェクト２１から変換された、１以上のタイプ２のストロークオブジェクト２３を含む。タイプ２のストロークオブジェクト２３の特性の態様は、自己交差２１ａを含み得るタイプ１のストロークオブジェクト２１とは異なって、タイプ２のストロークオブジェクト２３が、自己交差を全く含まない１以上の単純な形状２３ａ、２３ｂからなることである。タイプ２のストロークオブジェクト２３は、ストロークの境界を定義する曲線のセットである。図２の例において、タイプ２のストロークオブジェクト２３は、２つの単純な形状２３ａ、２３ｂからなり、形状２３ａは、ストロークの内部境界を定義する境界ポイントＶ１〜Ｖ１０間に形成された曲線（例えば、ベジェ曲線）のセットを含み、形状２３ｂは、ストロークの内部境界を定義する境界ポイントＶ１〜Ｖ６間に形成された曲線のセットを含む。単純な形状からなるタイプ２のベクトルデータは、一括した（大きな）ストロークオブジェクトセットのズーミング、回転、傾斜、及びレンダリング領域の変更などの、一括描画及び操作に適している。
【００２６】
流れ線２２ｂは、タイプ２のベクトルデータが、通常、タイプ１のベクトルデータに可逆に変換されないことを示す。代わりに、代表的な実施の形態では、タイプ１のベクトルデータから生成された（変換された）タイプ２のベクトルデータはメモリ装置に格納されて、一括描画を求める出力要求、またはストロークオブジェクトをＰＤＦファイルに埋め込む出力要求などの、タイプ２のベクトルデータを呼び出す出力要求に応答して、選択的に出力される。
【００２７】
流れ線２４ａは、画面上に直接レンダリングされ得る画素データからなるラスター化されたデータを形成するために、実行中の特定のアプリケーションからの個々の出力要求に応じて、タイプ１のベクトルデータまたはタイプ２のベクトルデータのいずれかが選択的に出力され得ることを示す。
【００２８】
流れ線２４ｂは、ラスター化されたデータが、通常、タイプ１のベクトルデータにもタイプ２のベクトルデータにも可逆に変換されないことを示す。同様に、上述の流れ線２０ｂは、タイプ１のベクトルデータのみならず、タイプ２のベクトルデータも、通常、ペンイベントデータに可逆に変換されないことを示す。
【００２９】
図３は、出力要求に応じて少なくともタイプ１のベクトルデータ及びタイプ２のベクトルデータを選択的に出力する概略的な方法を示すフローチャートである。図１Ｂに示すように、タイプ１及びタイプ２のベクトルデータに加え、出力要求に応じて未加工の（位置）データ（またはペンイベントデータ）が選択的に出力され得る。ステップＳ３１において、位置入力センサ５０に入力されたペンイベントデータに基づき、タイプ１のベクトルデータを生成する（図２の流れ線２０ａ参照）。ステップＳ３３において、タイプ１のベクトルデータに基づき、タイプ２のベクトルデータを生成する（図２の流れ線２２ａ参照）。ステップＳ３５において、個々の出力要求に応じて、少なくともタイプ１のベクトルデータまたはタイプ２のベクトルデータを選択的に出力する。
【００３０】
図２は、自己交差２１ａを含む、タイプ１のベクトルデータからなるタイプ１のストロークオブジェクト２１の例を示す。以下では、まず、図４乃至図９Ｄを参照し、タイプ１のベクトルデータを生成してリアルタイムにレンダリングする方法及びシステムを説明し、その後に図４と図１０Ａ乃至図１４Ｂを参照し、タイプ２のベクトルデータを生成する方法及びシステムの説明を続ける。
【００３１】
図４は、コンピュータ１のハードウェア／ソフトウェア１００において実施されるインクデータ処理システムの機能ブロック図であり、タイプ１のベクトルデータ生成器４１０と、タイプ２のベクトルデータ生成器（タイプ１からタイプ２への変換器）４３０と、出力要求に応じてタイプ１のベクトルデータ、タイプ２のベクトルデータ、または未加工のペンイベントデータを選択的に出力するセレクタ４６０とを備える。
【００３２】
インクデータ処理システム１００は、入力装置１０ａによって入力された未加工のデータを受け取り、動作イベント／タッチ入力システム２１によってペンイベントデータ（ｘ，ｙ，ｐ）へと処理し得る。上述したように、ペンイベントデータは装置に依存し、入力装置１０ａによって入力されたポイントに関連付けられた種々の属性値（例えば、圧力及び透過度のパラメータ）を含んでもよいし、含まなくてもよい。
【００３３】
インクデータ処理システム１００は、描画アプリケーション、及び、入力されたペンイベントデータに含まれ得る圧力データ（「Ｐ」）をタイプ１のストロークオブジェクトによって表されるストロークの可変幅を示す幅データ（「Ｗ」）に変換するアプリケーションなどの、インクデータアプリケーション３００と通信する。このようなアプリケーションの詳細と、種々の属性値に基づいて幅値（「Ｗ」）を得る方法とは、上記の参照によって援用される'１８２出願に開示されている。手短に言うと、位置入力センサ５０に対して入力装置１０ａにより加えられる圧力が大きいほどユーザによって意図されるストロークが幅広であることを意味し、圧力が低いほどストロークが狭い（より幅が小さい）ことを意味するという原理に基づいて、圧力データを幅データに変換する処理を用い得る。さらに、'１８２出願には、入力されたペンイベントデータに含まれる速度データを幅データに変換する処理が開示されている。当該処理は、入力装置１０の速度が大きいほどユーザによって意図されるストロークが狭い（より幅が小さい）ことを示し、速度が小さいほど幅広のストロークが幅広であることを示すという原理に基づいて、各ポイントにおいて入力装置１０ａが移動する速度を示す速度データを幅データに変換する。さらにまた、'１８２出願には、位置入力センサ５０に対して入力装置１０ａにより加えられる圧力が大きいほどユーザによって意図されるストロークが濃い（より透過度が低い）ことを示し、圧力が小さいほどストロークの透過度が高いことを示すという原理に基づき、圧力値を透過度値（「Ａ」）に変換する処理が開示されている。さらに、'１８２出願には、入力装置１０ａの速度が大きいほどユーザによって意図されるストロークの透過度が高い（淡い）ことを示し、速度が小さいほどストロークが濃い（より透過度が低い）ことを示すという原理に基づき、速度値を透過度値（「Ａ」）に変換する処理が開示されている。
【００３４】
インクデータアプリケーション３００は、タイプ１のベクトルデータ及びタイプ２のベクトルデータを生成するインクデータ処理システム１００の動作を制御し得る。インクデータアプリケーション３００は、さらに、タイプ１のベクトルデータ、タイプ２のベクトルデータ、または未加工のイベントデータを選択的に出力するようにセレクタ４６０の動作を制御し得る。このために、インクデータアプリケーション３００は、出力要求のタイプ（例えば、タイプ１のベクトルデータであるか、それともタイプ２のベクトルデータであるか）を示す制御情報と、出力するように要求されるそれらのストロークのストロークＩＤとを、セレクタ４６０に発行し得る。
【００３５】
インクデータ処理システム１００はグラフィック処理ユニット４０に結合されている一方、グラフィック処理ユニット４０はセンサ画面５０ａに結合されている。グラフィック処理ユニット４０は、タイプ１のベクトルデータまたはタイプ２のベクトルデータを受け取り、画素の色（例えば、ＲＧＢ）値を含む定義された解像度レベルの画素値のセットを含むラスター化されたデータを出力し、次いでラスター化されたデータをＬＣＤなどの画面５０ａ上に直接表示し得る（ラスター化されたデータは、通常、位置入力センサ５０上に重畳される）。例えば、グラフィック処理ユニット４０は、タイプ１またはタイプ２のストロークオブジェクトを形成するポイントオブジェクトを受け取り、キャットマル−ロム曲線アルゴリズム及びベジェ曲線アルゴリズムなどの適した曲線補間アルゴリズムに従って、制御点として用いられるポイントオブジェクト間の曲線を形成し、ＤｉｒｅｃｔＸ（ｒ）及びＯｐｅｎＧＬ（ｒ）のライブラリなどの関連するＧＰＵライブラリを用いて、ディスプレイ５０ａ上に、結果として得られるストロークオブジェクトのパス（ストローク）を描画する（レンダリングする）。
【００３６】
様々な例において、動作イベントタッチ入力サブシステム２１、インクデータアプリケーション３００、インクデータ処理システム１００、及び、ＶＲＡＭに結合されたグラフィックス処理ユニット４０は、すべて、コンピュータ１上で動作するＯＳによって制御され得る。
【００３７】
タイプ１のベクトルデータ生成器４１０は、インクデータアプリケーション３００の制御下で、位置入力センサ５０から受け取ったペンイベントデータに基づき、タイプ１のベクトルデータを生成する。タイプ１のベクトルデータを生成する代表的な処理は、概して３つのステップを含む。第１に、位置入力センサ５０によって検出されたペンイベントデータを順次受け取る。第２に、受け取ったペンイベントデータに含まれる座標値に基づいて、ポイントオブジェクトを順次生成し、ポイントオブジェクトを幅情報（「Ｗ」）に関連付ける。ポイントオブジェクトは、キャットマル−ロム曲線アルゴリズムなどの定義された曲線補間アルゴリズムに従って曲線セグメントを補間する制御点として作用する。第３に、タイプ１のストロークオブジェクトを、タイプ１のストロークオブジェクトによって表されるストロークを定義するポイントオブジェクトの集合として生成する。ペンイベントデータが各ポイントの色及び／または透過度の値を示す色及び／または透過度の情報を含む場合に、このような情報は、さらに、順次取得されて、それぞれが色及び／または透過度の値に関連付けられたポイントオブジェクトを生成し得る。未加工のペンイベントデータが既に幅値を含んでいる場合に、変換は必要なく、幅値をそれぞれポイントオブジェクトに直接関連付け得る。本発明の代表的な実施の形態において、幅値は、ポイントオブジェクトによって形成されるストロークの幅を定義するのに用いられるポイントオブジェクトの半径を示す。したがって、ストロークを形成するポイントオブジェクトセットを変化する幅値に関連付けることにより、自身の長さに沿って可変幅を有するタイプ１のストロークオブジェクトを生成することができる。本明細書で使用される可変幅は、各ポイントオブジェクトが可変幅に関連付けられ得ることと、ストロークの長さに沿ったポイントオブジェクトが互いに異なる幅を有し得ることとの両方を意味する。
【００３８】
図４に示すように、タイプ１のベクトルデータ生成器４１０によって生成されたタイプ１のベクトルデータは、次いで、図２におけるタイプ１のストロークオブジェクト２１を形成するＰ１〜Ｐ８などの「曲線データ（Ｐ１，...Ｐｎ）として、メモリ装置４５０に格納され得る。
【００３９】
タイプ１のベクトルデータは、それぞれがポイントオブジェクトセットによって形成された１以上のタイプ１のストロークオブジェクトを含み、各ポイントオブジェクトは幅情報に関連付けられている。後述するように、格納されたタイプ１のベクトルデータは、次いで、タイプ２のベクトルデータ生成器によって、タイプ２のベクトルデータを生成するように用いられ得る。あるいは、格納されたタイプ１のベクトルデータは、テキスト認識アプリケーション３００、またはストロークをストロークが位置入力センサ５０に最初に入力されたのと同じ順にレンダリングする（再生する）ように要求する任意のアプリケーションからの出力要求などのタイプ１のベクトルデータを求める出力要求に応答して、セレクタ４６０によって選択的に出力され得る。このことが可能であるのは、様々な代表的な実施の形態において、タイプ１のストロークオブジェクト２１（図２参照）が、ストロークオブジェクトによって表現されるストロークが入力装置によって手書きされる順序と同じ順序で配置される一連のポイントによって定義されるからである。
【００４０】
メモリ装置４５０にタイプ１のベクトルデータを格納することに加えて、または代えて、タイプ１のベクトルデータ生成器４１０によって生成されたタイプ１のベクトルデータは、リアルタイムレンダラ４２０に出力されることによって、各タイプ１のストロークオブジェクトのリアルタイムレンダリングを、そのペンダウン時以後であって、そのペンアップ時におけるストロークオブジェクトの完了の前に、または完了を待たずに、開始し得る。言い換えれば、ユーザが位置入力センサ５０ａ上にストロークを描画する際に、ストロークの初期ポイントから全長までのストロークの「成長」をユーザが見ることができるように、リアルタイムに、ストロークを表すタイプ１のストロークオブジェクトを生成して画面５０ａ上にレンダリングする。
【００４１】
図５は、図４のタイプ１のベクトルデータ生成器４１０の機能ブロック図である。
【００４２】
タイプ１のベクトルデータ生成器４１０は、「Ａ」においてペンイベントデータ（Ｘ，Ｙ，Ｐ（圧力））を受け取ってタイプ１のストロークオブジェクトを生成し、各ポイントオブジェクトを「Ｄ」において幅情報（Ｗ）に関連付ける。代表的な実施の形態において、タイプ１のベクトルデータ生成器４１０は、ペンイベントデータが入力されるに従って数が増加するようにポイントオブジェクトを継続的に生成する。タイプ１のベクトルデータ生成器４１０は、生成されたポイントオブジェクトを、リアルタイムの画像レンダリングのためにリアルタイムレンダラ４２０に、及び／または格納のためにメモリ装置４５０に、継続的に出力する。
【００４３】
図５に示すように、タイプ１のベクトルデータ生成器４１０は、メモリ装置４５０を備え、またはメモリ装置４５０に結合されている。図示した実施の形態におけるタイプ１のベクトルデータ生成器４１０は、さらに、装置タイプに基づいて適切なパスビルダを選択するパス（ストローク）ビルダ部１２２Ｂと、ストロークオブジェクトが生成されると、ストロークオブジェクトが完了する前にストロークオブジェクトに平滑処理を適用し始める平滑器１２２Ｃと、部分的に形成されたストロークにいくつのポイントオブジェクトを付加するべきかを制御する対ストローク追加部１２２Ｄと、タイプ１のストロークオブジェクトの末尾にあるギャップ（図６における「遅延」）を埋めるサフィックス付加部１２２Ｅとを備える。
【００４４】
継続的に生成されてメモリ４５０に格納されたポイントオブジェクトは、（図５における「Ｄ」を経て）リアルタイムレンダラ４２０によりストロークオブジェクトの断片としてリアルタイムレンダリングに用いられる。したがって、メモリ装置４５０は、タイプ１のベクトルデータ生成器４１０の一部である一方、リアルタイムレンダラ４２０の一部となり得る。
【００４５】
パス（ストローク）ビルダ部１２２Ｂは、入力された特定のタイプのペンイベントデータに適した１つのパスビルダを選択するように構成されている。例えば、ペンイベントデータが筆圧値を含む場合に、筆圧値に基づいてストローク幅（Ｗ）及び透過度（Ａ）を導出することが可能な第１の（圧力）機能ｆ１を有する圧力パスビルダ１２２Ｂ１を選択する。これに対して、ペンイベントデータが筆圧値を含まない場合に、速度パスビルダ１２２Ｂ２を選択する。速度パスビルダ１２２Ｂ２は、ペン移動速度に基づいてストローク幅（Ｗ）及び透過度（Ａ）を導出することが可能な第２の（速度）機能ｆ２を有し、これを、大抵のペンイベントデータに含まれる点座標またはタイムスタンプの変化量から特定する。言い換えれば、速度パスビルダ１２２Ｂ２は、圧力パスビルダ１２２Ｂ１において用いられる圧力値に代えて速度値を用いる。パスビルダ部１２２Ｂからの出力は図５において「Ａ（ｘ）」で示され、ＸＹ座標及び幅（Ｗ）、さらには任意選択により透過度（Ａ）値を有する各ポイントオブジェクトを定義する。
【００４６】
平滑器１２２Ｃは、パスビルダ部１２２Ｂから出力されたポイントオブジェクトを受け取り、それに対して平滑化処理を適用する。様々な代表的な実施の形態において、平滑器１２２Ｃは、ポイントオブジェクトを含むストロークオブジェクトに対し、当該ストロークオブジェクトが生成されるとそれが完了する前に、平滑化処理を適用し始める。加速度平均、加重平均、指数平滑化、二重指数平滑化などの、任意の適切な平滑化処理または平滑化アルゴリズムを用い得る。
【００４７】
図６は、図５のタイプ１のベクトルデータ生成器４１０におけるポイント「Ａ／Ａ（ｘ）」〜「Ｄ」において実行される処理を示す。図６は、列Ａと列Ｂとの間において平滑器１２２Ｃにより適用される平滑化処理を示す。列Ａは図５におけるポイント「Ａ／Ａ（ｘ）」に対応し（平滑化前）、列Ｂは図５におけるポイント「Ｂ」に対応する（平滑化後）。列Ａにおいて、ｘ１〜ｘ１０は、ペンイベントデータから取得された１０点の座標を表す。図６において、ｘ１〜ｘ１０は（１０，２０，３０，４５，６０，８０，９０，１００，１１０，１１５）である。
【００４８】
列Ｂにおいて、ｘ１'〜ｘ１０'は、平滑化処理が適用された後の上記１０点のＸ座標を表す。図示した例では、次の指数平滑化関数が適用されている。
【００４９】
【数１】
2019512118.tif 000003
ここで、フィルター強度α＝０．５である。
【００５０】
図６において、ｘ１'〜ｘ１０'は（１０，１５，２３，３４，４７，６３，７７，８８，９９，１０８）である。
【００５１】
平滑器１２２Ｃによる平滑化処理が、これらの点の修正された（平滑化された）位置を継続的に出力するべく、それらの点座標が導出される都度、回転ベースで各点に適用される。こうして、ペンダウンイベントが検出されるペンダウン時から、ペンアップイベントが検出されるペンアップ時の前に（を待たずに）、タイプ１のベクトルデータ生成器４１０は、部分的に形成された、平滑化されたストロークオブジェクトを生成して出力することを開始し得る。
【００５２】
図示した例では、列Ｂにおいてポイントｘ０'が追加されており、ここではキャットマル−ロム曲線を用いて各対の制御点間の補間曲線を定義している。従来周知のように、キャットマル−ロム曲線は、スタートポイント（Ｐｉ）、エンドポイント（Ｐｉ＋１）、スタートポイントの「前」のポイント（Ｐｉ−１）、及びエンドポイントの「後ろ」のポイント（Ｐｉ＋２）を含んだ４つの制御点を有する各曲線セグメントを定義する。したがって、ポイントｘ１'とポイントｘ２'との間の開始曲線セグメントを定義するために、スタートポイントｘ１'を複製して、ｘ１'とｘ２'との間の曲線セグメントを定義する制御点としてのポイントｘ１'、ポイントｘ２'、及びポイントｘ３'とともに用いられ得る新たなポイントｘ０'を（ｘ１'と同じ位置に）生成する。新たなポイントｘ０'の位置は、入力されたストロークにｘ１'とｘ２'との間のキャットマル−ロム曲線が最もよく適合する位置に調整され（曲線適合され）得る。ｘ１'（ｐ１）の値を単に複製してｘ０'（ｐ０）の値を生成することにより、本処理は直ちに、ｘ０'の位置を定義し、ｘ０'（ｐ０）からｘ１'（ｐ１）に至るベクトル成分をゼロに設定することが可能である。本処理は、リアルタイム実行に適しており（ｐ２がｐ０を生成するのを待つ必要がない）、ｘ１'（ｐ１）とｘ２'（ｐ２）との間の曲線セグメントの曲率に、曲率を一方側または他方側へ過度に突出させるといったように過度に影響を与えるものではない。
【００５３】
図５及び図６をさらに参照すると、サフィックス付加部１２２Ｅは、ストロークオブジェクトの末端にある入力位置（ｘ１０，列Ａ）と、ストロークオブジェクトの末端にある平滑化位置（ｘ１０'，列Ｂ）との間のギャップ（または「遅延」）を埋める。図６において、列Ｃは、「遅延」を埋める（サフィックス付加）動作を示す。図示した例では、平滑化処理の後に、最初に入力された位置ｘ１０（１１５）と列Ｂにおけるストロークオブジェクトの末端にある平滑化位置ｘ１０'（１０８）との間に「遅延」が生じている。代表的な実施の形態において、タイプ１のベクトルデータ生成器４１０は、例えばインクデータアプリケーション３００から受け取った制御情報に応じて、サフィックス付加オペレーションを実行すべきであるか、それとも実行すべきでないかを判定するように構成されている。他の実施の形態において、ストロークオブジェクトに新たなポイントオブジェクトが追加されるたびにサフィックス付加オペレーションを発動することが可能であり、それは、例えば、リアルタイムレンダリングの目的に適切であり得る。
【００５４】
図６の列Ｃにおいてサフィックス付加オペレーションを実行すべきであれば、サフィックス付加部１２２Ｅはｘ１１'、ｘ１２'、及びｘ１３'において新たなポイントオブジェクトを追加する。ポイントｘ１２'は、列Ａの最初に入力された最後の位置ｘ１０（１１５）と同じ位置に追加される。ポイントｘ１１'は、ポイントｘ１０'とポイントｘ１２'との間の平滑化されたポイントに追加される。最終的に、本例においてはキャットマル−ロム曲線を用いて各対の制御点間の補間曲線を定義していることから、エンドポイントｘ１２'を複製して、ｘ１１'とｘ１２'との間の終了曲線セグメントをキャットマル−ロム曲線として定義するのに必要である新たなポイントｘ１３'を（ｘ１２'と同じ位置に）生成する。新たなポイントｘ１３'の位置は、入力されたストロークにｘ１１'とｘ１２'との間のキャットマル−ロム曲線が最もよく適合する位置に調整され（曲線適合され）得る。また、サフィックス付加オペレーションが実行されない場合でも、キャットマル−ロム曲線を用いるならば、列Ｂにおける最後の平滑化ポイントｘ１０'を複製して、この場合にｘ９'とｘ１０'との間の最後の曲線セグメントを定義する制御点としてのポイントｘ８'、ポイントｘ９'、及びポイントｘ１０'とともに用いられ得る新たなポイントｘ１０'（新）を生成し得る。ｘ１０'の値を単に複製してｘ１０'（新）の値を生成することにより、本処理は直ちに、ｘ１０'の位置を定義し、ｘ９'（ｐ９）とｘ１０'（ｐ１０）との間の曲線セグメントの曲率に過度に影響を与えずに、中立位置にｘ１０'の位置を定義することが可能である。
【００５５】
図５を再度参照すると、対ストローク追加部１２２Ｄは、平滑化されて場合によってはサフィックス付加されたポイントオブジェクトのうちのいくつが、メモリ装置４５０に格納されているか、したがって出力されるタイプ１のストロークオブジェクトの部分的なデータに付加され得るかを判定する（または追跡し続ける）。図示した実施の形態において、ポイントオブジェクトＰ１〜Ｐｎ−１は、メモリ装置４５０に格納されており、（タイプ１のストロークオブジェクト全体の完了を待たずに）リアルタイムレンダラ４２０またはメモリ装置４５０に出力されるタイプ１のストロークオブジェクトの部分的なデータに追加されるべきであると判定される。リアルタイムレンダラ４２０は、（図８に示すこととなるように）部分的に形成されたタイプ１のストロークオブジェクトを表示することが可能である。メモリ装置４５０は、タイプ１のストロークオブジェクト全体が格納されるまで、部分的に形成されたタイプ１のストロークオブジェクトを継続的に格納する。
【００５６】
図６において、列Ｄはタイプ１のストロークオブジェクトを示し、これは（列Ａから列Ｂへと）平滑化されており、場合によっては（列Ｂから列Ｃへと）末端においてサフィックス付加され、対ストローク追加部１２２Ｄによって継続的に出力される。図示した実施の形態におけるタイプ１のストロークオブジェクトは、キャットマル−ロム曲線アルゴリズムに従って補間曲線を生成するように定義されており、この場合に各曲線セグメント（Ｐｉ〜Ｐｉ＋１）は４つの制御点（Ｐｉ−１、Ｐｉ、Ｐｉ＋１、Ｐｉ＋２）によって定義され、キャットマル−ロム曲線の特性であるが、結果として得られる曲線は制御点のすべてを通過する。
このように、タイプ１のストロークオブジェクトは、４つの制御点ｘ０'、ｘ１'、ｘ２'、ｘ３'により定義される開始曲線セグメント（ｘ１'〜ｘ２'）を含み、４つの制御点ｘ１０'、ｘ１１'、ｘ１２'、ｘ１３'により定義される終了曲線セグメント（ｘ１１'〜ｘ１２'）を含む。
【００５７】
図７は、タイプ１のベクトルデータ生成器４１０によって実行される処理例を示すフローチャートである。ステップＳ７０１において、タイプ１のベクトルデータ生成器４１０は、位置座標（ｘ，ｙ）と次の３種類のタイミングのうちの１つを示すタイミング情報とを含んだペンイベントデータを受け取る。
１）指またはポインティング装置（例えば、ペン型装置）などのポインタが他の（検知）物体に接触するペンダウン時
２）ペンダウン時とペンアップ時との間のペンムーブ時
３）ポインタが他の（検知）物体から離れる（取り除かれる）ペンアップ時
【００５８】
１．ペンダウン時の処理フロー
【００５９】
ステップＳ７１２において、タイプ１のベクトルデータ生成器４１０は、例えばインクデータアプリケーション３００（図４参照）から受け取った制御情報（図５における入力ダイナミクス設定４０１）に基づいて、タイプ１のストロークオブジェクトを作成するのに用いる複数のパスビルダから１つのパスビルダ（例えば、図５における１２２Ｂ１または１２２Ｂ２）を選択する。
【００６０】
ステップＳ７１４において、タイプ１のベクトルデータ生成器４１０は、例えばアプリケーション３００から受け取った制御情報（チャネル数４０３）に基づいて、上記のステップＳ７１２において選択されたパスビルダから出力すべきパラメータセットを決定する。出力すべきパラメータセットは、例えば（ｘ，ｙ，Ｗ，Ａ）及び（ｘ，ｙ，Ｗ）からなり得るものであって、（ｘ，ｙ）はポイントオブジェクトのｘ座標、ｙ座標、Ｗはストローク幅値、Ａは透過度（または不透明度）を示すアルファ（α）である。各ポイントに対し、２Ｄ座標（ｘ，ｙ）の他に「ｚ」値を追加して３Ｄ座標を生成してもよい。
【００６１】
ステップＳ７１６において、タイプ１のベクトルデータ生成器４１０は、例えばアプリケーション３００から受け取った制御情報に基づいて（平滑化使用，フィルター強度４０５）、選択されたパスビルダから出力されるパラメータセットに平滑化処理を適用すべきか否かを判定する。制御情報は、さらに、パラメータのうちのいずれのものに平滑化処理を適用するかを示し得る。
【００６２】
平滑化の適用が示された場合（ステップＳ７１６においてＹＥＳ）に、ステップＳ７１８において、示された平滑化処理を適用する。アプリケーション３００からの制御情報は、さらに、タイプ１のベクトルデータ生成器４１０が所望の強度レベルの平滑化処理を選択するのに用い得る、位置入力センサ５０のサンプリングレート情報を含み得る。例えば、位置入力センサ５０のサンプリングレートが低めである（例えば、通常の６０〜２４０サンプル毎秒から、何百サンプル毎秒とは反対側の何十サンプル毎秒へ外れる）場合に、大きめの平滑化値（効果）を有する強めの平滑化処理を選択し得る。
【００６３】
ステップＳ７２０において、図６を参照して上述したように、列Ｂの初期ポイント（制御点）ｘ１'を複製して、ｘ１'とｘ２'との間の開始曲線セグメントをキャットマル−ロム曲線として定義する新たな制御点ｘ０'を生成する。
【００６４】
ステップＳ７７２において、タイプ１のベクトルデータ生成器４１０は、アプリケーション３００からのユーザコマンドまたは制御情報に応じて、タイプ１のストロークオブジェクトの平滑化された初期（開始）曲線セグメントを、リアルタイムレンダラ４２０またはメモリ装置４５０に送る。平滑化されたポイントオブジェクトを制御点として用いて補間曲線を作成するには、キャットマル−ロム曲線アルゴリズムなどの適切な曲線補間アルゴリズムを適用する。
【００６５】
２．ペンムーブ時の処理フロー
【００６６】
フローチャートの初期ステップＳ７０１に戻り、タイプ１のベクトルデータ生成器４１０が、ペンムーブ時、すなわちペンがスタートポイントとエンドポイントとの間で移動していることを検出すると、タイプ１のベクトルデータ生成器４１０は、ペンイベントデータに含まれるポイントの、ｘ、ｙ座標値、及び、タイムスタンプ及び／または筆圧情報を受け取り、上記のステップＳ７１２において選択されたパスビルダを用いて、上記のステップＳ７１４においてポイントに対して決定されたパラメータセット（例えば、ｘ，ｙ，Ｗ，Ａ）を用意及び出力する。
【００６７】
ステップＳ７３０において、タイプ１のベクトルデータ生成器４１０は、例えばアプリケーション３００から受け取った制御情報に基づいて、ポイントに対してパラメータセット（ｘ，ｙ，Ｗ，Ａ）に平滑化処理を適用すべきか否かを判定する。制御情報は、さらに、パラメータのうちのいずれのものに平滑化処理を適用するかを示し得る。ステップＳ７３０の動作は、上述したステップＳ７１６の動作と同じである。
【００６８】
平滑化の適用が示された場合（ステップＳ７３０に対してＹＥＳ）に、ステップＳ７３２において、示された平滑化処理を適用する。また、例えばアプリケーション３００から受け取った制御情報に応じて、ステップＳ７３３において、タイプ１のベクトルデータ生成器４１０は、さらに、図６の列Ｃに示すように、サフィックス付加オペレーションを実行する。サフィックス付加オペレーションは必須ではなく、各動作において必ずしも実行されない。例えば、平滑化処理を実行しない場合に、サフィックス付加オペレーションは必要でなく、実行されない。
ステップＳ７３４において、タイプ１のベクトルデータ生成器４１０は、対ストローク追加部１２２Ｄを用いて、ポイントオブジェクトのうちのいくつを確立してメモリ装置４５０に格納し、出力すべきタイプ１のストロークオブジェクトの部分的なデータに追加するかを決定する。
【００６９】
ステップＳ７７６において、タイプ１のベクトルデータ生成器４１０は、ユーザコマンドまたはアプリケーション３００からの制御情報に応答して、タイプ１のストロークオブジェクトの平滑化された中間の曲線セグメントを、リアルタイムレンダラ４２０またはメモリ装置４５０に送る。平滑化されたポイントオブジェクトを制御点として用いて補間曲線を作成するには、キャットマル−ロム曲線アルゴリズムなどの適切な曲線補間アルゴリズムを適用する。中間の曲線セグメントは、例えば、リアルタイムレンダラ４２０が、タイプ１のストロークオブジェクトの中間部分を、上記のステップＳ７７２において出力されたタイプ１のストロークオブジェクトの初期部分に連続して表示し得るように、継続的に出力される。
【００７０】
３．ペンアップ時の処理フロー
【００７１】
フローチャートの初期ステップＳ７０１に戻り、タイプ１のベクトルデータ生成器４１０が、イベントタイプはペンアップイベントである（すなわち、タイプ１のストロークオブジェクトの描画が完了して、入力装置１０が位置入力センサ５０から取り除かれる）と判定すると、タイプ１のベクトルデータ生成器４１０は、ペンイベントデータに含まれるポイントの、ｘ、ｙ座標値、及び、タイムスタンプ及び／または筆圧情報を受け取り、上記のステップＳ７１２において選択されたパスビルダを用いて、上記のステップＳ７１４においてポイントに対して決定されたパラメータセット（例えば、ｘ，ｙ，Ｗ，Ａ）を用意及び出力する。
【００７２】
ステップＳ７５０において、タイプ１のベクトルデータ生成器４１０は、ポイントに対して受け取ったパラメータセット（ｘ，ｙ，Ｗ，Ａ）に平滑化処理を適用すべきか否か、及びパラメータのうちのいずれのものに平滑化処理を適用するかを判定する。ステップＳ７５０の動作は、上述のステップＳ７１６及びＳ７３０の動作と同じである。
【００７３】
平滑化の適用が示された場合（ステップＳ７５０に対してＹＥＳ）に、ステップＳ７５２において、示された平滑化処理を実行する。また、例えばアプリケーション３００から受け取った制御情報に応じて、タイプ１のベクトルデータ生成器４１０は、さらに、図６の列Ｃに示すように、サフィックス付加オペレーションを実行する。サフィックス付加オペレーションは必須ではなく、各動作において必ずしも実行されない。例えば、平滑化処理を実行しない場合に、サフィックス付加オペレーションは必要でなく、実行されない。
【００７４】
ステップＳ７５３において、さらに図６の列Ｃに示すように、エンドポイント（制御点）ｘ１２'を複製して、ｘ１１'とｘ１２'との間の終了曲線セグメントをキャットマル−ロム曲線として定義する新たな制御点ｘ１３'を生成する。
【００７５】
ステップＳ７８０において、タイプ１のベクトルデータ生成器４１０は、タイプ１のストロークオブジェクトの平滑化された（及びサフィックスが付加された）終了曲線セグメントを、リアルタイムレンダラ４２０またはメモリ装置に送る。平滑化されてサフィックスが付加されたポイントオブジェクトを制御点として用いて補間曲線を作成するには、キャットマル−ロム曲線アルゴリズムなどの適切な曲線補間アルゴリズムを適用する。終了曲線セグメントを、上記で出力されたタイプ１のストロークオブジェクトの中間部分に連続して出力することによって、タイプ１のストロークオブジェクトを全体として完成させる。
【００７６】
図７に示すタイプ１のベクトルデータ生成器４１０及び関連する処理は、こうして、ペンイベントデータを継続して入力し、部分的に形成されたタイプ１のストロークオブジェクトを作成されたまま出力することが可能である。出力された部分的なタイプ１のストロークオブジェクトを、メモリ装置４５０に継続的に格納してもよいし、タイプ１のストロークオブジェクトにより表される手書きのリアルタイム表示（レンダリング）のためにリアルタイムレンダラ４２０に継続的に送ってもよい。
【００７７】
図８は、タイプ１のベクトルデータのリアルタイムレンダリングを共同で実行する、リアルタイムレンダラ４２０及びグラフィック処理ユニット４０の機能ブロック図である。リアルタイムレンダラ４２０とグラフィック処理ユニット４０との区分は図８に示すものに限定されず、機能の中に、例えば各プログラムアプリケーションのレンダリング設定に応じて、組み合わされ、さらに分割され、またはリアルタイムレンダラ４２０とグラフィック処理ユニット４０とに個々に共有されるものがあってもよい。一方、代表的な実施の形態において、図示したように、ハードウェアアクセラレートされ得るそれらの機能及び計算は、タイプ１のベクトルデータのリアルタイムレンダリングをサポートするグラフィック処理ユニット４０において有利に実行される。
【００７８】
タイプ１のベクトルデータ生成器４１０によって生成されたタイプ１のベクトルデータは、リアルタイムレンダラ４２０に入力される。図示した例において、タイプ１のベクトルデータはタイプ１のストロークオブジェクトを含み、それぞれのタイプ１のストロークオブジェクトは、幅情報「Ｗ」にそれぞれ関連付けられたポイントオブジェクトＰｎのセットからなる。キャットマル−ロム曲線を用いてタイプ１のストロークオブジェクトを定義する場合に、タイプ１のストロークオブジェクトの各曲線セグメントは、上述したように４つの制御点によって定義され、後続の４つの制御点により定義される後続の各曲線に対してスライドする態様をなす。図９Ａに示すように、１番目の曲線セグメントが４つの制御点Ｐ０〜Ｐ３（９０１）によって定義され、２番目の曲線セグメントが４つの制御点Ｐ１〜Ｐ４（９０２）によって定義され、（ｎ−２）番目の曲線セグメントが４つの制御点Ｐｎ−３〜Ｐｎ（９００ｎ）によって定義される。図９Ｂは、所与の時点における、図８に示すタイプ１のベクトルデータ生成器４１０からリアルタイムレンダラ４２０への入力データ（（タイプ１）曲線データ）を示す。図９Ｂは、リアルタイムレンダラ４２０が、曲線セグメントＳｎ−１を定義する４つの制御点を受け取った後に、曲線セグメントＳｎを定義する後続の４つの制御点９００ｎを受け取ることを示す。
【００７９】
リアルタイムレンダラ４２０は、入力される曲線セグメントのそれぞれを、図９Ｃに示すように分割ポイントｉ（＝０〜ｎ）のセットにセグメント化する。分割ポイントｉの数及び位置は、例えば、ディスプレイ５０ａの画素解像度、タイプ１のストロークオブジェクトの輪郭／形状などを考慮して、曲線セグメントごとに計算され得る。例えば、ディスプレイ画素解像度を考慮して、タイプ１のストロークオブジェクトの各曲線セグメントに沿って配置すべき１番目のセグメント化ポイントの最適な数及び位置を、ディスプレイ５０ａ上においてストロークのリアルなレンディションを達成するように決定し得る。
【００８０】
具体的には、タイプ１のストロークオブジェクトを形成する曲線セグメントのそれぞれ（例えば、キャットマル−ロム曲線セグメント）は、曲線セグメントを定義する（４つのうちの）２つの制御点間における分割ポイントｉによってセグメント化される。したがって、各曲線セグメントに対して結果として得られる分割ポイントは、曲線セグメントと２つの隣り合う制御点間に挿入される追加の分割ポイントとを定義する元の制御点（例えは、キャットマル−ロム曲線セグメントに対する４つの制御点）を含む。言い換えれば、分割ポイントは、タイプ１のベクトルデータ生成器４１０から入力される曲線セグメントに対して定義される元の制御点を再使用し、さらに、タイプ１のストロークオブジェクトを描画する場合に所望レベルの画素解像度を達成するように追加された「フィラーポイント」を含む。タイプ１のストロークオブジェクトを形成する１以上の曲線セグメントに対して分割ポイントｉを決定した後に、図７を参照して上述した適切な平滑化アルゴリズムを適用して分割ポイントを平滑化し得る。結果として得られる分割ポイントは、元の制御点及び追加されたフィラーポイントを含んでおり、次いで埋め合わせる三角形を形成するように直線で接続される頂点として用いられる（図９Ｄ参照）。
【００８１】
図９Ａに示すように、制御点Ｐ０...Ｐｎにキャットマル−ロム曲線アルゴリズムを適用すると、曲線９０４が生成される。曲線９０４は、キャットマル−ロム曲線の特性であるが、制御点（Ｐ０...Ｐｎ）のすべてを通過するように形成される。
【００８２】
図９Ｃの実施の形態に示されるように各分割ポイントが幅値に関連付けられている場合に、幅値を用いて、各分割ポイント（すなわち、曲線セグメントを定義する制御点）の付近に中心を有する円９０５の半径を定義する（図９Ａ参照）ことにより、図示したように、タイプ１のストロークオブジェクトによって表されるストロークに可変幅を付与する。分割ポイントに対する幅値として、２つの元の制御点の幅値を用い得る、または元の幅値に基づいて計算される新たな幅値を用い得る。例えば、フィラーポイントを分割ポイントとして追加する場合に、タイプ１のベクトルデータ生成器４１０から入力された元の制御点（ポイントオブジェクト）に関連付けられた既知の幅値を用いる適切な補間方法に基づいて、フィラーポイントに対する幅値を計算し得る。同様に、分割ポイントに対する色及び透過度の値などの他の属性値を、元の制御点の色及び透過度の値から導出し得る。
【００８３】
可変幅を有する曲線９０４は、その制御点（分割ポイント）において個別の幅（または半径）を有する。曲線９０４の境界を計算する一方法は、曲線９０４の長さに沿った、制御点（分割ポイント）を中心とする円のセットの包絡線９０８（図９Ｃにおける９０８ａ／９０８ｂ）を計算することであり、ここで各円の半径（または直径）は各分割ポイントｉに関連付けられた幅値に相当する。この場合に、包絡線９０８に属するポイントは、次の条件を満たす。
【００８４】
【数２】
2019512118.tif 000004
【００８５】
さらに、キャットマル−ロム曲線を用いてタイプ１のストロークオブジェクトを補間する場合に、次の多項式関数ｕ（ｔ）、ｖ（ｔ）、及びｒ（ｔ）を定義することが可能であり、ここでＰｉ−３〜Ｐｉは、スタートポイント（Ｐｉ−２）、エンドポイント（Ｐｉ−１）、スタートポイントの「前」のポイント（Ｐｉ−３）、及びエンドポイントの「後ろ」のポイント（ｐｉ）という各曲線セグメントを定義するのに必要な４つの制御ポイントを定義する。
【００８６】
【数３】
2019512118.tif 000005
【００８７】
分割ポイントｉのそれぞれに対して、図８におけるボックス４２１に示すように、リアルタイムレンダラ４２０は多項式（式２）及び（式３）の定義と、「左」（＋１）及び「右」（−１）のインデックスとを、グラフィック処理ユニット４０に渡す。具体的には、図９Ｃに示すように、各分割ポイントｉ（ｔ＝ｉ，ここでｉ＝０，...ｎ）は分割ポイントの「左」座標（ｘ１，ｙ１）及び分割ポイントの「右」座標（ｘ２，ｙ２）に関連付けられ、これによって分割ポイントｉのセットにより定義される各曲線セグメントは、一方が「左」座標のセットによって定義されるとともに他方が「右」座標のセットによって定義される２つの輪郭曲線（すなわち包絡線）を有するようになっている。
【００８８】
グラフィック処理ユニット４０内の動作ボックス４２２は、上記の（式２）及び（式３）を解いて、分割ポイントｔのそれぞれに対して「左」及び「右」の２つのポイント（ｘ１，ｙ１）及び（ｘ２，ｙ２）を生成する。結果として得られるポイントセット（ｘ１，ｙ１）及び（ｘ２，ｙ２）は、図９Ｃに示すように、タイプ１のストロークオブジェクトによって表されるストロークを共同で包絡する輪郭曲線９０８ａ及び９０８ｂを形成する。
【００８９】
グラフィック処理ユニット４０内のボックス４２３は、図９Ｄに示すような包絡線三角形９１０ａ、９１０ｂなどを示しており、これらは動作ボックス４２２によって用意される。２つの輪郭曲線９０８ａ及び９０８ｂ沿いの２つのポイントセット（ｘ１，ｙ１）及び（ｘ２，ｙ２）を接続することによって、ストロークが複数の三角形９１０ａ、９１０ｂなどにセグメント化され、それらの頂点は２つのポイントセット（ｘ１，ｙ１）及び（ｘ２，ｙ２）によって定義される。
【００９０】
次いで、グラフィック処理ユニット４０内の動作ボックス４２４が、三角形９１０（９１０ａ、９１０ｂなど）、したがってディスプレイ５０ａ上の画素を着色するように、典型的にはそれぞれ制御点（分割ポイント）に関連付けられた色値を適用する。当業者に明らかなように、三角形９１０を着色する任意の適切なカラーリングアルゴリズムを適用し得る。次いで、ディスプレイ５０ａ上におけるタイプ１のベクトルデータのリアルタイムレンダリングのために、画素色情報をＶＲＡＭへ出力する。
【００９１】
一般に、タイプ１のベクトルデータのリアルタイムレンダリングは、上述したように、ストロークがユーザにより手書きされたのと同じ順序でストロークの順次のレンダリングを達成するように、ストロークパスに沿って三角形９１０を埋めることを目的とする。例えば、図２のタイプ１のストロークオブジェクト２１を再度参照すると、ユーザが「ペンダウン」ポイントから「ペンアップ」ポイントまでタイプ１のストロークオブジェクト２１を手書きする際に、ユーザは、ディスプレイ５０ａ上で「ペンダウン」ポイントから開始して「ペンアップ」ポイントで停止するまで継続的に成長するストロークのリアルタイムレンダリングを見ることができる。したがって、リアルタイムレンダリングアプローチは、図２における自己交差２１ａなどの任意のストロークの任意の自己交差部における強調描画（強調着色）を伴う。リアルタイムレンダリングアプローチは、上述したように、十分なハードウェアアクセラレーションがグラフィック処理ユニット４０によって許容されることを図って、三角形９１０の強調描画を許容する。いくつかの実施の形態では、当業者に明らかなように、適切な混合機能を適用して、三角形９１０の強調描画によって引き起こされ得る任意の視覚的なアーチファクトを防止し得る。
【００９２】
一方、自己交差部における強調描画に起因する非効率さのおそれを考慮して、本発明の実施の形態は、タイプ１のベクトルデータに基づき、自己交差を全く含まない、したがって三角形９１０の強調描画に起因する非効率さに煩わされないタイプ２のベクトルデータを用意することを提案する。図４に示すように、タイプ２のベクトルデータ生成器４３０を用いて、タイプ１のベクトル生成器４１０により生成されたタイプ１のベクトルデータに基づき、このようなタイプ２のベクトルデータを生成し得る。したがって、タイプ１のベクトルデータの利益とタイプ２のベクトルデータの利益との両方を最大限に利用するために、個々の出力要求に応じて、タイプ１のベクトルデータまたはタイプ２のベクトルデータのいずれかを選択的に出力し得る。
【００９３】
図２を再度参照すると、自己交差２１ａを含むタイプ１のストロークオブジェクト２１に基づいて生成されたタイプ２のストロークオブジェクト２３は、それぞれ自己交差を含まない２つの形状２３ａ及び２３ｂからなる。タイプ１のストロークオブジェクトをタイプ２のストロークオブジェクトに変換する処理を、図４と図１０Ａ乃至図１４Ｂを参照して以下で説明する。
【００９４】
図４を再度参照すると、タイプ２のベクトルデータ生成器４３０はメモリ装置４５０からタイプ１のベクトルデータを受け取り、ここでタイプ１のベクトルデータ（または「曲線データ」）は、それぞれがポイントオブジェクトセット（Ｐ１〜Ｐｎ）からなるタイプ１のストロークオブジェクトを含む。タイプ２のベクトルデータ生成器４３０は、受け取ったタイプ１のベクトルデータに基づいてタイプ２のベクトルデータを生成し、生成したタイプ２のベクトルデータ（または「境界」データ（Ｖ１〜Ｖｍ））をメモリ装置４５０へ出力する。次いで、セレクタ４６０を用いて、個々の出力要求に応じて、すべてメモリ装置４５０に格納された、タイプ１のベクトルデータ、タイプ２のベクトルデータ、または未加工のペンイベントデータを選択的に出力し得る。
【００９５】
図１０Ａは、タイプ２のベクトルデータ生成器４３０（タイプ１からタイプ２への変換器）の機能ブロック図である。タイプ２のベクトルデータ生成器４３０は、メモリ装置４５０からタイプ１のベクトルデータ（または「曲線データ」（Ｐ１〜Ｐｎ））を受け取る。以下で詳述するように、本発明の様々な実施の形態は、キャットマル−ロム補間が使用可能なタイプ１のベクトルデータを、コンピュータグラフィックスにおいて用いられる最も一般的な補間法のうちの１つである三次ベジェ補間が使用可能なタイプ２のベクトルデータに変換する。
【００９６】
図１０Ａの動作ブロック４３２において、タイプ２のベクトルデータ生成器４３０は、曲線セグメントを定義する２つの制御点間の「境界ポイント」によってタイプ１のストロークオブジェクトを形成する曲線セグメント（例えば、キャットマル−ロム曲線セグメント）のそれぞれをセグメント化する。これに関連して、図１０Ａのブロック４３２における動作は、図８を参照して上述したような分割ポイントを求める動作と同様である。
【００９７】
具体的には、図１０Ａのブロック４３２において、境界ポイントは、例えばディスプレイ５０ａの画素解像度、タイプ１のストロークオブジェクトの輪郭／形状などを考慮して、曲線ごとに計算され得る。例えば、ディスプレイ画素解像度を考慮して、タイプ１のストロークオブジェクトの各曲線セグメントに沿って配置すべき境界ポイントの最適な数及び位置を、ディスプレイ５０ａ上でストロークのリアルなレンディションを達成するように決定し得る。結果として得られる境界ポイントは、入力されたタイプ１のストロークオブジェクトに対して定義される元の制御点（Ｐ１〜Ｐｎ）を含むとともに再使用し、さらに、結果として得られるタイプ２のストロークオブジェクトをレンダリングする場合に所望レベルの画素解像度を達成するように追加されたフィラーポイントを含む。例えば、フィラーポイントは、追加されたフィラーポイントによって定義される曲線セグメントと実際の輪郭との間の距離を、例えば一定の画素サイズに基づく閾値より小さくなるように最小化する境界ポイントして追加され得るが、上述した「分割ポイント」の場合とは異なり、リアルタイムレンダリングに関連して通常は必要とされる高解像度表示が必要とされないブロック４３２では、閾値が緩和され得る。さらに、ブロック４３２において、境界ポイントが決定された後に、適切な平滑化アルゴリズムを適用して境界ポイントを平滑化し得る。結果として得られる境界ポイントは、元の制御点及び追加されたフィラーポイントを含み、次いで、三次ベジェ曲線などの曲線を定義する新たな制御点として用いられる。図１０Ａのブロック４３２は、図８のボックス４２１及び４２２と同様に、共同でストロークを包絡する輪郭曲線９０８ａ及び９０８ｂを集合的に形成する２つの（左右の）包絡線ポイントセット（ｘ１、ｙ１）及び（ｘ２，ｙ２）を生成する。前記のように、２つのポイント（ｘ１、ｙ１）及び（ｘ２，ｙ２）は境界ポイントのそれぞれに対して生成される。
【００９８】
結果として得られる境界ポイントデータは、境界ポイントのそれぞれに対して計算される左右の包絡線ポイントを含み、ブロック４３３に示すように、未加工タイプの「境界データ」として任意選択により格納され得る。上述した分割ポイントの場合におけるように、境界ポイントのそれぞれ及びその関連付けられた「左」及び「右」のポイントは、境界ポイントを求める基となった元の制御点（Ｐ１〜Ｐｎ）の色及び透過度の値から導出され得る色及び透過度の値などの属性情報に関連付けられ得る。
【００９９】
本発明の代表的な実施の形態に従い、動作ブロック４３４において、タイプ２のベクトルデータ生成器４３０は、２つの輪郭曲線９０８ａ及び９０８ｂ沿いの２つのポイントセット（ｘ１、ｙ１）及び（ｘ２，ｙ２）によって包絡されるストロークを、ブロック４３５におけるようにタイプ２のストロークオブジェクトを形成する１以上の単純な多角形（または単純な形状）へと単純化する。例えば、ブロック４３４は、図２に示すように自己交差２１ａを含むタイプ１のストロークオブジェクト２１を、それぞれが同様に図２に示すように自己交差を含まない２つの単純化された形状２３ａ及び２３ｂからなるタイプ２のストロークオブジェクト２３へと単純化する。
【０１００】
所与の形状を自己交差を含まない１以上の単純な多角形へとクリッピングするのに適切である様々な多角形クリッピングアルゴリズムが知られている。このようなアルゴリズムは、非限定的な例として、バーラ・アール・バッティ（Ｂａｌａ  Ｒ  Ｖａｔｔｉ）、「多角形クリッピングに対する包括的な解法（Ａ  ｇｅｎｅｒｉｃ  ｓｏｌｕｔｉｏｎ  ｔｏ  ｐｏｌｙｇｏｎ  ｃｌｉｐｐｉｎｇ）」、コミュニケーションズ・オブ・ザ・エー・シー・エム（Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ  ｏｆ  ｔｈｅ  ＡＣＭ）,第３５巻、第７号（１９９２年７月）第５６−６３頁に開示されたバッティ多角形クリッピングアルゴリズムと、従来周知であるグライナー・ホアマン（Ｇｒｅｉｎｅｒ−Ｈｏｒｍａｎｎ）クリッピングアルゴリズムとを含む。特に、バッティクリッピングアルゴリズムは、任意の凹形状、凸形状、及び自己交差形状をクリッピングして非自己交差多角形を生成することが可能な極めて一般的な解を与え、したがって、本発明の様々な実施の形態における使用に極めて適している。
【０１０１】
結果として得られるタイプ２のストロークオブジェクトは、図１０Ｂに示すように境界ポイントＶｋ−１、Ｖｋ、Ｖｋ＋１により順次定義されるセグメントセットによって定義される単純な多角形である。図１０Ｂは、曲線適合４３６が適用される前に図１０Ａにおける動作ブロック４３４によって生成される境界データ例（単純な多角形）を示す。タイプ２のストロークオブジェクトは、図１０Ｂに示すように、境界ポイントにより定義されるセグメントの集合として出力され得る。
【０１０２】
任意選択により、図１０Ａの動作ブロック４３６において、図１０Ｂの単純な多角形４３５に、従来周知であるフィリップ・ジェイ・シュナイダー（Ｐｈｉｌｉｐ  Ｊ．  Ｓｃｈｎｅｉｄｅｒ）アルゴリズムなどの適切な曲線適合アルゴリズムを適用し得る。いくつかの実施の形態では、曲線適合を、例えばブロック４３２において事前に適用してもよく、このような場合には、ブロック４３６における追加の曲線適合は必須でなくてもよい。様々な実施の形態において、図２に示すようにストロークの形状の角２１ｂにおいて追加される境界ポイントなどの、レンダリング時に手書きストロークの元の形状の正確な再生を容易にするように特別に設計された境界ポイントを追加してもよい。
【０１０３】
図１０Ｃは、図１０Ａの動作ボックス４３６において曲線適合が適用された境界データ例（三次ベジェ）を示す。図１０Ｃは、ベジェ曲線に対する制御点として機能する境界ポイントＶ３ｋ＋１、Ｖ３（ｋ＋１）＋１、Ｖ３（ｋ＋２）＋１により順次定義されるベジェ曲線のセットによって、ストロークの境界が定義されることを示す。二次ベジェ曲線と三次ベジェ曲線などの高次のベジェ曲線とを含む任意のタイプのベジェ曲線を用い得る。図１０Ｃの例では、それぞれの三次ベジェ曲線が４つの制御点によって定義される２つの三次ベジェ曲線を用いて、ストロークの境界を定義する。１番目のベジェ曲線は、制御点Ｖ３（ｋ−１）＋１、Ｖ３ｋ−１（「ＣｕｒｖｅＴｏ１」ポイント）、Ｖ３ｋ（「ＣｕｒｖｅＴｏ２」ポイント）、Ｖ３ｋ＋１によって定義される。２番目のベジェ曲線は、制御点Ｖ３ｋ＋１、Ｖ３（ｋ＋１）−１（「ＣｕｒｖｅＴｏ１」ポイント）、Ｖ３（ｋ＋１）（「ＣｕｒｖｅＴｏ２」ポイント）、Ｖ３（ｋ＋１）＋１によって定義される。上記の図１０Ｂとの比較から明らかなように、セグメントごとに、「ＣｕｒｖｅＴｏ１」ポイント及び「ＣｕｒｖｅＴｏ２」ポイントと称する２つの追加の制御点が、ストロークの境界の輪郭をより精密に追跡及び定義するように追加される。手短に言うと、三次ベジェ曲線は次数３のベジェ曲線であり、４つの制御点（Ｐ０、Ｐ１、Ｐ２、及びＰ３）によって定義される。曲線はＰ０において開始し、Ｐ３において停止する。直線Ｐ０Ｐ１はポイントＰ０における曲線の接線であり、直線Ｐ２Ｐ３はポイントＰ３における曲線の接線である。Ｐ０は「ＭｏｖｅＴｏ」ポイントと称し、ベジェ曲線の開始ポイントを示す。一般に、ベジェ曲線はＰ１もＰ２も通過せず、これらのポイントの機能は方向の情報を与えることである。Ｐ０（「ＭｏｖｅＴｏ」ポイント）とＰ１との間の距離は、曲線が、Ｐ３のほうへ向きを変えるまでに「どのくらい長く」方向Ｐ１へ移動するかを特定し、したがってＰ１及びＰ２は「ＣｕｒｖｅＴｏ」ポイントと称する。様々な実施の形態において、タイプ２のストロークオブジェクトは、図１０Ｃに示すように、（図示した実施の形態において境界ポイントにより与えられる）制御点によって定義されるベジェ曲線の集合として出力される（エクスポートされる）。
【０１０４】
図２の例において、タイプ２のストロークオブジェクト２３は２つの単純な形状２３ａ及び２３ｂからなり、単純な形状のそれぞれは、それぞれ境界ポイントＶ１〜Ｖ１０、境界ポイントＶ１〜Ｖ６によって定義される。２つの境界ポイントセットは、ベジェ曲線を形成する制御点として作用し、それぞれストロークの外部境界、内部境界を形成する。
【０１０５】
こうして、タイプ２のベクトルデータ生成器４３０は、それぞれが図２における単純化された形状２３ａのポイントＶ１〜Ｖ１０と単純化された形状２３ｂのポイントＶ１〜Ｖ６などの境界ポイントセットによって定義されるタイプ２のストロークオブジェクトを含むタイプ２のベクトルデータの生成を完了する。境界ポイントは、単純化された形状２３ａ及び２３ｂの輪郭を追跡する補間曲線を例えば三次ベジェ補間アルゴリズムを用いて生成する制御点として作用する。次いで、生成されたタイプ２のベクトルデータは、図１７Ａ乃至図１７Ｃを参照して以下でより詳細に説明するように、それぞれが制御点によって定義されるベジェ曲線のセットを含むスケーラブルベクトルグラフィックス（ＳＶＧ）ファイルなどのコンピュータ読み取り可能なファイルとしてエクスポートされ得る。これに代えて、またはこれに加えて、生成されたタイプ２のベクトルデータを、レンダリングのために、グラフィック処理ユニット４０（図４）に結合された２Ｄグラフィックライブラリに入力してもよい。さらに、これに代えて、またはこれに加えて、生成されたタイプ２のベクトルデータを、後に出力要求に応答してセレクタ４６０により選択的に出力またはエクスポートするために、メモリ装置４５０に格納してもよい。
【０１０６】
図２に示すように、共同でタイプ２のストロークオブジェクトを形成する単純化された形状２３ａ及び２３ｂは、それぞれ、元のストロークが手書きされた順序に一致しない境界ポイントＶ１〜Ｖ１０、境界ポイントＶ１〜Ｖ６によって定義される。このことは、同様に図２に示すタイプ１のストロークオブジェクト２１と対照的であり、タイプ１のストロークオブジェクト２１は、元のストロークが手書きされたのと同じ順序である分割ポイントＰ１〜Ｐ８によって定義される。したがって、図示した実施の形態におけるタイプ２のストロークオブジェクト２３は、通常、元のストロークが手書きされたのと同じ順序で再生することができない。しかし、タイプ２のストロークオブジェクトは自己交差を全く含まない単純な形状からなるため、タイプ１のストロークオブジェクト２１に関連付けられる三角形９１０（図９Ｄ参照）の強調描画に起因する非効率さがない。これにより、タイプ２のベクトルデータは、特に、（非常に）多数のタイプ２のストロークオブジェクトを一括してレンダリング及び操作する（ズーミングする、回転する、スクロールする、傾斜させる、レンダリング領域を変更するなど）必要がある一括レンダリングのためには高効率となる（図４における既存のストロークの一括レンダリング４４０参照）。
【０１０７】
図１１は、自己交差を含むタイプ１のストロークオブジェクトを自己交差を含まない２つの単純化された形状からなるタイプ２のストロークオブジェクトに変換することを示す概略的なフロー図である。
【０１０８】
図１２は、図１０Ａのタイプ２のベクトルデータ生成器４３０によって実行されるルーチン例を示すフローチャートである。ステップＳ１２０１において、境界ポイントごとの２つのポイントセット（ｘ１，ｙ１）及び（ｘ２，ｙ２）がストロークを包絡する２つの輪郭曲線９０８ａ及び９０８ｂを形成するように計算されることに基づいて、受け取ったタイプ１のストロークオブジェクトを境界ポイントによってセグメント化する。結果として得られる境界ポイントは、元の境界ポイント、及び、元の境界ポイントに基づいて計算される左右の包絡線ポイントを含み得る。ステップＳ１２０３において、任意選択により、各境界ポイントＶ１，...Ｖｎが色値及び透過度（アルファ）値の両方に関連付けられる未加工タイプの境界データ（図１０Ａにおけるブロック４３３参照）に関して、各境界ポイント（及び各境界ポイントの左右のポイント）の色値を、同じ境界ポイントの透過度値を用いて調整し、図１３乃至図１４Ｂを参照して以下でより詳細に説明するように、生成されたタイプ２のベクトルデータをＰＤＦファイルに埋め込む場合に役立つようにする。
【０１０９】
ステップＳ１２０５において、多角形単純化を実行して、タイプ１のストロークオブジェクトを、それぞれが自己交差を含まない１以上の多角形からなるタイプ２のストロークオブジェクトに変換する。単純な多角形のそれぞれは、図１０Ｂに示すように、セグメントを生成する制御ポイントとして用い得る境界ポイントセットによって定義される。ステップＳ１２０７において、任意選択により、曲線適合を適用し得るとともに、境界ポイントを調整し得る（例えば、平滑化する、または単純化された形状の任意の角にさらなる境界ポイントを追加する）。結果として、例えば、ストロークオブジェクトに対するタイプにより表されるストロークの境界を定義するように、三次ベジェ補間などの適切な補間アルゴリズムを用いた補間曲線が生成される。
【０１１０】
図１３は、未加工タイプの境界データを処理して（図１０Ａにおけるブロック４３３参照）、ＰＤＦファイルに埋め込むのに適したタイプ２のベクトルデータを生成するルーチンを示すフローチャートである。ステップＳ１３０１において、本ルーチンは、境界ポイントの左右のポイントである、それぞれが色及び透過度の値に関連付けられたポイント対（ｘ１，ｙ１）及び（ｘ２，ｙ２）を受け取る。上述したように、境界ポイントに基づくポイント（ｘ１，ｙ１）及び（ｘ２，ｙ２）の色及び透過度の値は、タイプ２のベクトルデータを生成する入力として用いられるタイプ１のベクトルデータ（例えば、Ｐ１〜Ｐｎ）の色及び透過度の値から導出され得る。
【０１１１】
ＰＤＦアプリケーションなどのいくつかのアプリケーションは、処理される各ポイントに対する透過度値をサポートしない。したがって、ステップＳ１３０３において、本ルーチンは、同じポイントのアルファ値により（左右の）各ポイントの色値を調整することによって、透過度情報を色値単独になるように組み込み、または埋め込む。ステップＳ１３０５において、本ルーチンは、各境界ポイント、ひいてはその左右のポイントが、元の色値及び元の透過度値の組合せである、したがって元の色値及び元の透過度値を表す、調整された色値に関連付けられたタイプ２のベクトルデータを出力する。
【０１１２】
図１４Ａ及び図１４Ｂは、図１３のフローチャートを参照して上述したように、調整された色値を有するタイプ２のベクトルデータを生成する処理を概略的に示す。図示した例において、１番目のポイント対ｐ１ａ及びｐ１ｂと２番目のポイント対ｐ２ａ及びｐ２ｂとは、（図１０Ａにおける）未加工タイプの境界データ４３３に対応し、ポイントｐ１ａ、ｐ１ｂ、ｐ２ａ、及びｐ２ｂはそのＸＹ座標によって定義されて色値及び透過度値（アルファ）に関連付けられる。通常、各ポイント対は同じ色及び透過度の値を有する。例えば、１番目の境界ポイント（黒丸）に基づくポイントｐ１ａ及びｐ１ｂの色及び透過度の値は（１番目の境界ポイントの色及び透過度の値と）同じであり、２番目の境界ポイントに基づくポイントｐ２ａ及びｐ２ｂの色及び透過度の値は（２番目の境界ポイントの色及び透過度の値と）同じである。
【０１１３】
図１３のステップＳ１３０３において、ポイントのそれぞれの色値は次のように調整され得る。
調整されたｃｏｌｏｒ＝ｃｏｌｏｒ＋（１−アルファ）＊（１−ｃｏｌｏｒ）（式４）
【０１１４】
このような調整により、典型的には、背景色が白（「ＦＦＦＦＦＦ」）であると仮定すると、元の色より白い調整された色が生じて、ディスプレイ上にレンダリングされるときに色の混合が向上する結果となる。
【０１１５】
図１４Ｂにおいて、参照符号１４０１は、ポイントｐ１ａ、ｐ１ｂ、及びｐ２ａを定義するデータの最初の３つの直線は、頂点としてのこれら３つのポイントによって形成される１つの三角形を形成することを示す。上述したようにポイントｐ１ａ、ｐ１ｂ、及びｐ２ａの色値が調整されると、三角形５６０ａ（図１４Ａ参照）の色（または三角形５６０ａ内の色）が、例えばＰＤＦ「シェーディングタイプ４（自由形式のグローシェーディングによる三角形メッシュ」によって自動的に計算され得る。
【０１１６】
図１５は、出力要求に応じてタイプ１のベクトルデータ、タイプ２のベクトルデータ、またはタイプ０のデータ（未加工のペンイベントデータ）を選択的に出力する詳細なルーチンを示すフローチャートである。
【０１１７】
ステップＳ１５０１において、位置入力センサ５０上のペンダウンイベントを検出する。ペンダウンイベントが検出されると、ステップＳ１５０３において、例えばペンイベントデータ（Ｘ，Ｙ，Ｐ）を取得する。ステップＳ１５０５において、タイプ１のベクトルデータ生成器４１０が、受け取ったペンイベントデータに基づいてタイプ１のベクトルデータを生成し、リアルタイムレンダラ４２０が、タイプ１のストロークオブジェクトのペンアップポイントにおけるタイプ１のストロークオブジェクトの完了を待たずに、生成されたタイプ１のストロークオブジェクトのリアルタイム出力を（タイプ１のストロークオブジェクトのペンダウンポイントから作成されるように）開始する。ステップＳ１５０７において、ペンアップイベントを検出する。ＮＯである場合は、ユーザのペン入力操作が継続すること、及びペンがダウンであって位置入力センサ５０上においてムーブすることを意味し、したがって本ルーチンはステップＳ１５０１へ戻ってステップＳ１５０３〜Ｓ１５０７を通したサイクルを継続する。
【０１１８】
ステップＳ１５０７において、ペンアップイベントが検出される場合は、ユーザのストローク入力が（そのペンアップポイントにおいて）完了したことを意味する。次いで、ステップＳ１５０９において、本ルーチンは、ストロークをそのペンダウンポイントからペンアップポイントまで表すタイプ１のストロークオブジェクトを完成させて、完成したタイプ１のストロークオブジェクトをメモリ装置４５０（図４参照）に格納し得る。
【０１１９】
ステップＳ１５１１において、タイプ２のベクトルデータ生成器４３０は、上記のステップＳ１５０９において完成したタイプ１のベクトルデータに基づいてタイプ２のベクトルデータを生成し、生成したタイプ２のベクトルデータをメモリ装置４５０に格納する。
【０１２０】
ステップＳ１５４１において、実行中のアプリケーション３００（図１Ｂ参照）から受け取った出力要求（「ＲＴ」）のタイプを判別する。
【０１２１】
出力要求（ＲＴ）がタイプ１のベクトルデータを求める場合に、ステップＳ１５４７において、メモリ装置４５０に格納されたタイプ１のベクトルデータを出力する。図１６Ａは、出力またはエクスポートされ得るタイプ１のベクトルデータを含んだコンピュータ読み取り可能なファイル例を示す。当該ファイルはポイントオブジェクトＰｎのセットを含み、ポイントオブジェクトＰｎのセットは、タイプ１のストロークオブジェクトによって表されるストロークを集合的に定義する幅情報（Ｗｎ）にそれぞれ関連付けられたポイントオブジェクトＰｎのセットの座標（Ｘｎ，Ｙｎ）により定義される。図１６Ａのファイル例において、合計５０個のポイントオブジェクト（Ｐ０〜Ｐ４９）が、ストロークに沿って変化する幅（１．１〜２）を有して定義される。図１６Ｂは、ディスプレイ上に図１６ＡのポイントオブジェクトセットＰ０〜Ｐ４９をレンダリングした結果例である。タイプ１のデータが出力またはエクスポートされる形式はファイルとすることに限定されず、ストリーミングバイナリデータとしてもよい。
【０１２２】
タイプ１のベクトルデータを求める出力要求は、例えば、テキスト（文字）認識アプリケーション、署名検証アプリケーション、マシン制御アプリケーションからの出力要求、さらに一般的には、ストロークが最初に入力されたのと同じ順序でレンダリングされ（再生され）得るインクデータを求める任意の出力要求を含み得る。
【０１２３】
出力要求（ＲＴ）がタイプ２のベクトルデータを求める場合に、ステップＳ１５４３において、メモリ４５０に格納され得るタイプ２のベクトルデータを出力またはエクスポートする。タイプ２のベクトルデータを求める出力要求は、例えば、一括したストロークセットのズーミング、回転、傾斜、またはレンダリング領域の変更を含む一括レンダリングを求める出力要求と、インクベクトルデータをＰＤＦファイルに埋め込む出力要求とを含み得る。図１７Ａは、出力またはエクスポートされ得るタイプ２のベクトルデータを含んだコンピュータ読み取り可能なファイル例を示す。本ファイルは、それぞれが４つの制御点によって定義されるベジェ曲線のセット（ｍ＝０〜３２）を含む。上記の図１０Ｃに示すように、三次ベジェ曲線（Ｖ３ｋ＋１〜Ｖ３（ｋ＋１）＋１）の１番目の制御点（例えば、図１０ＣにおけるＶ３ｋ＋１）は直前のベジェ曲線（Ｖ３（ｋ−１）＋１〜Ｖ３ｋ＋１）の４番目の制御点に一致する。言い換えれば、隣接する２つの三次ベジェ曲線は１つの制御点を共有する。したがって、図１７Ａのファイル例において、ベジェ曲線はそれぞれ１番目（Ｖ３ｍ−１）、２番目（Ｖ３ｍ）、及び３番目（Ｖ３ｍ＋１）の制御点という３つの制御点によって明示的に定義され、冗長性を解消するように、またファイルサイズを低減するように、直前のベジェ曲線の３番目（Ｖ３ｍ＋１）の制御点によって暗黙的に定義される。例えば、１番目のベジェ曲線（ｍ＝１）は、その３つの制御点（Ｖ３ｍ−１）、（Ｖ３ｍ）、（Ｖ３ｍ＋１）と直前のベジェ曲線（ｍ＝０）の３番目（Ｖ３ｍ＋１）の制御点とによって定義され、２番目のベジェ曲線（ｍ＝２）は、その３つの制御点（Ｖ３ｍ−１）、（Ｖ３ｍ）、（Ｖ３ｍ＋１）と直前のベジェ曲線（ｍ＝１）の３番目（Ｖ３ｍ＋１）の制御点とによって定義される、などである。様々な実施の形態において、タイプ２のベクトルデータを含むコンピュータ読み取り可能なファイルはスケーラブルベクトルグラフィックス（ＳＶＧ）ファイルであり得る。図１７Ｂは、レンダリングされたベジェ曲線の制御点を示す。１番目（Ｖ３ｍ＋１）の「ＭｏｖｅＴｏ」制御点、２番目（Ｖ３（ｍ＋１）−１）の「ＣｕｒｖｅＴｏ１」制御点、及び３番目（Ｖ３（ｍ＋１））の（「ＣｕｒｖｅＴｗｏ２」）制御点を、互いに見分けることができるように示す。制御点は、タイプ１のストロークオブジェクトによって最初に表されたストロークの境界を集合的に追跡する（図１６Ｂ参照）。図１７Ｃは、図１７Ａ及び図１７Ｂのタイプ２のストロークオブジェクトをディスプレイ上にレンダリングした結果例（例えば、境界の内部が埋められている）であり、タイプ１のストロークオブジェクトによって最初に表されたストロークの形状に極めて近い。
【０１２４】
タイプ２のデータが出力またはエクスポートされる形式はファイルとすることに限定されず、ストリーミングバイナリデータとしてもよい。
【０１２５】
タイプ２のベクトルデータをファイル中の状態で、またはストリーミングバイナリデータとして出力またはエクスポートすることに代えて、または加えて、タイプ２のベクトルデータを図１７Ｃにおけるようにディスプレイ上にレンダリングしてもよい。
【０１２６】
出力要求（ＲＴ）がタイプ０のデータ（未加工のペンイベントデータ）を求める場合に、ステップＳ１５４９において、メモリ装置４５０に格納された未加工のペンイベントデータ（例えば、「Ｘ，Ｙ，Ｐ」）を出力する。タイプ０のデータを求める出力要求は、例えば、署名検証アプリケーションからの出力要求を含み得る。
【０１２７】
上述した要素、装置、ステップ、及び処理のそれぞれが  各実装及びアプリケーションに応じて、他の要素、装置、ステップ、及び処理と組み合わせられ得ること、または、さらに、部分的な要素、部分的な装置、部分的なステップ、及び部分的な処理に分割され得ることは、当業者に明らかなはずである。またさらに、本ステップ及び本処理を、各実装及びアプリケーションに応じて、単一のプロセッサで実行してもよいし、複数のプロセッサで分散的に実行してもよい。
【図１Ａ】
2019512118.tif 000006
【図１Ｂ】
2019512118.tif 000007
【図２】
2019512118.tif 000008
【図３】
2019512118.tif 000009
【図４】
2019512118.tif 000010
【図５】
2019512118.tif 000011
【図６】
2019512118.tif 000012
【図７】
2019512118.tif 000013
【図８】
2019512118.tif 000014
【図９Ａ】
2019512118.tif 000015
【図９Ｂ】
2019512118.tif 000016
【図９Ｃ】
2019512118.tif 000017
【図９Ｄ】
2019512118.tif 000018
【図１０Ａ】
2019512118.tif 000019
【図１０Ｂ】
2019512118.tif 000020
【図１０Ｃ】
2019512118.tif 000021
【図１１】
2019512118.tif 000022
【図１２】
2019512118.tif 000023
【図１３】
2019512118.tif 000024
【図１４Ａ】
2019512118.tif 000025
【図１４Ｂ】
2019512118.tif 000026
【図１５】
2019512118.tif 000027
【図１６Ａ】
2019512118.tif 000028
【図１６Ｂ】
2019512118.tif 000029
【図１７Ａ】
2019512118.tif 000030
【図１７Ｂ】
2019512118.tif 000031
【図１７Ｃ】
2019512118.tif 000032
【国際調査報告】
2019512118.tif 000033