JP3392870B2 - 図形エッジ・システム - Google Patents

図形エッジ・システム

Info

Publication number
JP3392870B2
JP3392870B2 JP50345695A JP50345695A JP3392870B2 JP 3392870 B2 JP3392870 B2 JP 3392870B2 JP 50345695 A JP50345695 A JP 50345695A JP 50345695 A JP50345695 A JP 50345695A JP 3392870 B2 JP3392870 B2 JP 3392870B2
Authority
JP
Japan
Prior art keywords
edge
scan line
pixel
engine
geometry
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP50345695A
Other languages
English (en)
Other versions
JPH08512156A (ja
Inventor
ウェッブ,リチャード,ディー.
カブラル,オーサー,ダブリュ.
Original Assignee
オブジェクト テクノロジー ライセンシング コーポレイション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by オブジェクト テクノロジー ライセンシング コーポレイション filed Critical オブジェクト テクノロジー ライセンシング コーポレイション
Publication of JPH08512156A publication Critical patent/JPH08512156A/ja
Application granted granted Critical
Publication of JP3392870B2 publication Critical patent/JP3392870B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)
  • Processing Or Creating Images (AREA)

Description

【発明の詳細な説明】 著作権通知書 本特許出願は、一部に、著作権保護の対象となる内容
を含んでいる。特許書類または特許開示事項を、米国特
許商標庁の特許ファイルまたは記録の通り、何人がファ
クシミリ複製しても、著作権者はそれを妨げるものでは
ないが、そうでない場合は、一切の著作権を留保する。
技術分野 本発明は、コンピュータ・システムの改良に関し、特
に、グラフィック・ディスプレイ上のエッジ情報を処理
するシステムおよび方法に関する。
背景技術 美学的、人間工学的方法で情報を表示するために、エ
ッジ情報をグラフィック処理することは非常に厄介なこ
とである。したがって、最新のグラフィック・システム
は、テキストおよび図形情報を含む広範囲な情報を処理
する情報ハンドリング・システムを利用しているが、こ
のシステムはこのような情報をより人間工学的な方法で
処理するため、ますます精巧になっている。例えば、選
択された方法で、図形エッジ情報をプログラミングする
か、あるいは処理するコンピュータ・プログラマまたは
コンピュータ・ユーザの能力には限界がある。
従来のOS(operating system)はエッジ処理能力に限
界があった。その限界の1つには、OSアーキテクチャが
所定の周辺デバイス用に設計されていないが、所定の周
辺デバイスをサポートできるようにOSアーキテクチャを
修正することができない場合、OSアーキテクチャはその
周辺デバイスをサポートすることができないということ
が挙げられる。また、従来のアーキテクチャは図形エッ
ジ情報を予め定義された単一の方法で処理できるだけで
ある。
Ackland et al,“The Edge Flag Algorithm−A Fill
Method for Raster Scan Displays",IEEE Transactions
on Computer,vol.C−30,no.1,January 1981,pages 41
−47には、ラスタ・スキャン・ディスプレイのための多
数の周知の輪郭塗り潰しアルゴリズムが記載され、評価
されている。ordered edge listアルゴリズムは、order
ed edge listのセットからスパンを生成し、輪郭を塗り
潰している。このアルゴリズムはスキャン・ライン順で
適用され、現在のスキャンラインと交差するエッジのテ
ーブルであるアクティブなエッジ・リストにエントリを
付加するか、あるいは、そのアクティブなエッジ・リス
トからエントリを削除する。前ラインの結果に基づき、
差分方程式を用いて、アクティブな各エッジの交差点を
現在のスキャンラインを用いて評価している。そして、
x値を増加させて、これらの交差点が並べられ、内部
(interior)スパンのセットが生成される。あるいはま
た、このアルゴリズムは、まず、各ポリゴンを、エッジ
・ソートの量を減少させる台形または三角形のセットに
分解している。OELアルゴリズムが必要とする処理は、
大部分、フレーム・ストアをワーキング・メモリとして
用いることにより除去することができる。これはシード
塗り潰しアルゴリズムにより行われ、このアルゴリズム
に従って、塗り潰される図形の接続された輪郭が、ま
ず、フレーム・ストアのワーキング・プレーン上にドロ
ーイングされる。ついで、この図形の内部にあるシード
点が選択され、このアルゴリズムにより、当該図形の境
界を与える周知の内部の点の近傍の点を連続的に検査す
ることにより、その図形のextentが交差していないこと
が判定される。
記載されている別のアルゴリズムは、ワーキング・プ
レーン上にドローイングされた輪郭の内部を判定するパ
リティ・チェックである。そのピクセルから境界まで引
かれたラインが輪郭と奇数回交差する場合、あるピクセ
ルがその図形の内部に割り当てられる。記載された別の
アルゴリズムはエッジ塗り潰し技法であり、一連のピク
セルにより表されるアウトライン・ドローイングにより
塗り潰される輪郭を定義することを避けて、その代わ
り、輪郭を数学的に記述する技法である。パリティ・チ
ェック形アルゴリズムを用いて、実際の塗り潰しが行わ
れている。スキャン・ライン当たりのエッジ・チェック
の回数を減少させることによりエッジ塗り潰し技法を改
善するために、Ackland et alの文献では、エッジ・フ
ラグ・アルゴリズムを提案している。このアルゴリズム
よれば、1つのピクセルのみがエッジ/スキャン交差ご
とにマークされ、その後、実際の塗り潰しがコピー・ル
ーチンにより行われる。交点でピクセルを補完すること
によりマークする。このアルゴリズムは訂正塗り潰しを
行なうため、パリティ・チェックを簡単にしている。
説明されているアルゴリズムの中には、手続き型プロ
グラミングか、マイクロコードか、あるいは、ハードウ
ェアによるインプリメンテーションが示されているもの
がある。これら記載されているアルゴリズムのどれも、
オブジェクト指向環境で用いられるものではないが、あ
るオペレーティング・システム・アーキテクチャには存
在していない。これらのアルゴリズムは輪郭塗り潰しに
限定されている。
さらに、輪郭線をシャープニングするか、細線化して
スケルトン表現を修正する種々の方法が良く知られてい
る。Chin et al,“A One−Pass Thinning Algorithm an
d its Parallel Implementation"と、COMPUTER VISION,
GRAPHICS AND IMAGE PROCESSING,vol.40,no.1,October
1987,pages 30−34,Academic Press,Inc.,Duluth,MN,US
Aと、Naccache et al,“An Investigation into the Sk
eletonizaton Approach of Hilditch",PATTERN RECOGNI
TION,vol.17,no.3,1984,pages 279−284,Pergamon Pres
s,Ltd.,Oxford,GBを参照されたい。これらの方法は、上
述した周知のエッジ処理の欠点を解消するのにもまた適
さない。
発明の開示 従って、本発明の目的は、メモリおよび付属のディス
プレイを有するコンピュータによって、図形オブジェク
トと、これらの図形オブジェクトに関係付けをしたエッ
ジを柔軟に処理することにある。本発明の目的は、図形
オブジェクトをメモリにロードし、この図形オブジェク
トを複数のエッジ・オブジェクトに変換し、このエッジ
・オブジェクトを複数の走査線ピクセルに変換し、この
走査線ピクセルをディスプレイ上に表示することによっ
て達成される。
本発明は独立項である請求の範囲第1項および第12項
で定義されている。その他の請求の範囲には本発明の改
善を記載している。
図形の簡単な説明 第1図は好ましい実施態様に係るパーソナル・コンピ
ュータ・システムのブロック図である。
第2図は好ましい実施態様に係る図形エッジ対を示す
図である。
第3図は好ましい実施態様に係るソート順を示す図で
ある。
第4図は好ましい実施態様に係る星型多角形、奇偶規
則を示す図である。
第5図は好ましい実施態様に係るワインディング数
(winding number)規則を採用する星型多角形を示す図
である。
第6図は好ましい実施態様に係る有心奇偶規則に従う
星型多角形の有心フレームを示す図である。
第7図は好ましい実施態様に係る有心ワインディング
数規則に従う星型多角形の有心フレームを示す。
第8図は好ましい実施態様によるインセット奇偶規則
に従う星型多角形のインセット・フレームを示す図であ
る。
第9図はワインディング数規則に従う星型多角形のイ
ンセット・フレームを示す図である。
第10図は好ましい実施態様に係るアウトセット奇偶規
則に従う星型多角形のアウトセット・フレームを示す図
である。
第11図は好ましい実施態様に係るアウトセットワイン
ディング数規則に従う星型多角形のアウトセット・フレ
ームを示す図である。
第12図は好ましい実施態様に係る個別装置によって使
用されるエッジ・エンジンを示す図である。
第13図は好ましい実施態様に係る図示された構造を有
する領域プリミティブである。
第14図は好ましい実施態様に係る現在位置の状態を決
定する方法を示す図である。
第15図は好ましい実施態様に係る種々のエッジを示す
図である。
第16図は好ましい実施態様に係る+y方向の走査変換
を示す図である。
第17図は好ましい実施態様に係る直線エッジの例を示
す図である。
第18図は好ましい実施態様に係る論理のフローチャー
トである。
第19図は本発明に係るエッジ遷移処理の実施態様を示
すフローチャートである。
第20図は本発明に係るエッジ遷移処理の実施態様を示
すフローチャートである。
第21図は本発明に係るエッジ遷移処理の実施態様を示
すブロック図である。
発明の実施するための最良の形態 本発明は、パーソナル・コンピュータ、例えば、IBM
(登録商標)のPS/2(登録商標)またはApple(登録商
標)のマッキントッシュ(登録商標)のようなパーソナ
ルコンピュータに駐在するOSのコンテキストで実施され
るのが好ましい。代表的なハードウェア環境を第1図に
示す。この代表的なハードウェア環境は、本発明に係る
コンピュータの典型的なハードウェア構成を示してお
り、このコンピュータはCPU(central processing uni
t)10、例えば、慣用のマイクロプロセッサを有し、不
揮発性メモリ11が内蔵されており、システムバス12を介
して多数の他の装置が相互接続されている。第1図に示
すワークステーションは、RAM(random access memor
y)14と、ROM(read only memory)16と、I/Oアダプタ1
8と、ユーザ・インタフェース・アダプタ22と、通信ア
ダプタ34と、ディスプレイ・アダプタ36を含む。I/Oア
ダプタ18は周辺装置、例えば、ディスク・ユニット20お
よびディスケット・ユニット21のような周辺装置をシス
テムバスに接続するためのものである。ユーザ・インタ
フェース・アダプタ22はキーボード24、マウス26、スピ
ーカ28、マイクロホン32および/またはユーザ・インタ
フェース装置、例えば、タッチ・スクリーン装置(図示
せず)のようなユーザ・インタフェース装置をシステム
バスに接続するためのものである。通信アダプタ34はワ
ークステーションをデータ処理ネットワーク23に接続す
るためのものである。ディスプレイ・アダプタ36はシス
テムバスをディスプレイ装置38に接続するためのもので
ある。このコンピュータには、OS、例えば、Apple Syst
em/7(登録商標)のようなOSが駐在している。
好ましい実施態様では、本発明は、OOP(object−ori
ented programming)技術を用いて、C++プログラミ
ング言語で実装される。当業者にとって当然のことであ
るが、OOPオブジェクトは、データ構造と、データに対
するオペレーションとを備えたソフトウェア・エンティ
ティである。同時に、これらの要素により、オブジェク
トはデータ要素により表される特性と、データ操作機能
によって表されるその振る舞いの観点から、任意のリア
ル・ワールド・エンティティをバーチャルにモデル化す
ることができる。このように、オブジェクトは人間およ
びコンピュータのような具体的な事物をモデル化するこ
とができ、しかも、オブジェクトは数または幾何学的概
念のような抽象的な概念をモデル化することができる。
オブジェクト技術の利点は、3つの基本原理、すなわ
ち、カプセル化と、ポリモフィズム(多形)と、継承か
ら生じる。
オブジェクトは、そのデータの内部構造と、オブジェ
クトが機能するアルゴリズムを隠蔽、すなわちカプセル
化する。これらの実装の細部を露出する代わりに、オブ
ジェクトは、外部からの情報を一切有しない抽象化を完
全に表すインタフェースを表示する。その多形はさらに
1ステップだけカプセル化する。そのアイディアとは多
くの形態、1つのインタフェースである。ソフトウェア
・コンポーネントは、そのコンポーネントが何であるか
を正確に知らないので、他のコンポーネントを要求する
ことができる。この要求を受けるコンポーネントは、そ
の要求を解釈し、その変数およびデータに従って、その
要求をどのように実行するかを理解する。第3の原理は
継承である。この継承により、デベロパーは前から存在
する設計およびコードを再使用することができる。よっ
て、デベロパーは初めからソフトウェアを作成しなくて
済むことになる。それどころか、継承によって、デベロ
パーは振る舞いを継承するサブクラスを導出しており、
デベロパーはサブクラスをデベロパーの特定の要求を満
足させるためにカスタマイズしている。
従来のアプローチでは、手続き環境で、オブジェクト
を階層化し、ライブラリをクラス化している。市販のア
プリケーション・フレームワークは、この設計アプロー
チを採っているものが多い。この設計では、モノリシッ
クOSの頂上に1つ以上のオブジェクト層が存在する。こ
のアプローチでは、オブジェクト層で、カプセル化と、
多形と、継承という全ての原理を利用しており、しか
も、このアプローチは手続きプログラミング技術を実質
的に改良したものであるが、この方法には限界がある。
この方法の限界は次のようなことから生じる。すなわ
ち、デベロパーが手続きプログラミング技術のオブジェ
クトを再使用することは容易であるが、他のシステムか
らオブジェクトを使用することは困難であり、しかも、
デベロパーは、依然、手続きOSコールにより、下位の非
オブジェクト層に到達する必要があることから生じる。
OOPの他の態様は、フレームワークのアプリケーショ
ン開発へのアプローチである。フレームワークの定義と
して、the University of IllinoisのRalph E.Jonson
と、PurdueのVincent F.Russoから最も合理的な定義が
得られた。1991年の論文、すなわち、Reusing Object−
Oriented Designs,University of Illinois tech repor
t UIUCDCS91−1696で、Ralph E.JonsonとVincet F.Russ
oは次のように定義している。すなわち、「抽象クラス
とは、責任のセットを遂行するために協働するオブジェ
クトのセットの設計である。従って、フレームワークと
は、コンピューティング責任の定義されたセットを実行
するため協働するオブジェクト・クラスのセットであ
る。」と定義している。プログラミングの観点からいう
と、フレームワークは、本質的には、ワーキング・アプ
リケーションの前もって作成された構造を提供するオブ
ジェクト・クラスであって、相互接続されたオブジェク
ト・クラスのグループである。例えば、ユーザ・インタ
フェース・フレームワークであれば、ウィンドウと、ス
クロールバーと、メニュー等のドローイングをサポート
し、それらの「デフォルト」なる振る舞いを提供するこ
とができる。フレームワークがオブジェクト技術に基づ
いているので、デベロパーはこの振る舞いを継承、か
つ、オーバライドして、フレームワークを拡張し、カス
タマイズされた解決法を、専門的知識の特定の領域で生
み出すことができる。この点は伝統的なプログラミング
に勝る主な利点である。というのは、プログラマはオリ
ジナルなコードを変更しないが、ソフトウェアを拡張す
るからである。さらに、デベロパーはコードの層を無闇
に行き来していない。というのは、フレームワークはア
ーキテクチャを導き、アーキテクチャをモデル化し、同
時に、コードの層を解放して、問題ドメインに特有の特
定のアクションを供給するからである。
ビジネスの観点から言うと、フレームワークは、専門
的知識を特定の知識領域でカプセル化するかあるいは具
体化する1つの方法として見ることができる。企業の開
発組織と、独立のソフトウェア・ベンダー(ISV)と、
システム・インテグレータは、既に例を挙げたが、特定
の領域、例えば、製造、金融、または為替のような特定
の領域で、専門的な知識を獲得してきた。この専門的な
知識は自らのコードで具体化される。企業は、その企業
のコードで、その専門的知識をフレームワークにより具
体化して、その専門的知識の共通の特性を獲得し、パッ
ケージ化することができる。最初に、このようにして、
デベロパーは専門的な知識を利用するアプリケーション
を作成するか拡張することができ、従って、この問題が
一度解決され、ビジネス規則および設計が絶えず強化さ
れ使用される。また、フレームワークと、これらフレー
ムワークの背後にある専門的知識は、戦略資産として、
垂直市場(vertical market)、例えば、製造、金融の
ような垂直市場で、専門的な知識を獲得してきた企業に
影響を与えている。さもないと、バイオ技術なんかが、
これらの専門的知識をパッケージ化し、リセリング(re
selling)し、展開し、さらに技術の進歩および普及を
促進するための販売機構を持つことになるのである。
歴史的に言えば、フレームワークは、つい最近、パー
ソナル・コンピューティング・プラットホームに関する
主流の概念として出現した。このマイグレーションが支
えられているのは、C++のようなオブジェクト指向言
語が利用可能になったからである。伝統的には、C++
は、商業的背景のパーソナル・コンピュータよりも、UN
IXシステムや、研究者のワークステーション上で使用さ
れるのがほとんどである。多くの大学および研究プロジ
ェクトにより、今日の商用フレームワークおよびクラス
・ライブラリの先駆者を作らせたのが、C++のような
言語と、Smalltalkのようなオブジェクト指向言語、等
々である。例えば、Stanford UniversityのInterViews
と、Carnegie−Mellon UniversityのAndrew toolkit
と、University of ZurichのET++フレームワークがあ
る。
種々のタイプのフレームワークはシステムのレベルと
問題の性質に依存している。フレームワークのタイプ
は、ユーザ・インタフェース開発を支援するアプリケー
ション・フレームワークから、基本的なシステム・ソフ
トウェア・サービス、例えば、通信と、印刷と、ファイ
ル・システム・サポートと、グラフィックス等のような
サービスを提供する低レベルフレームワークに及んでい
る。市販のアプリケーション・フレームワークとして
は、MacAPP(Apple)と、Bedrock(Symantec)と、OWL
(Borland)と、NeXTStep App Kit(NeXT)と、Smallta
lk−80 MVC(ParcPlace)がある。
フレームワークを用いたプログラミングは、他の種類
のシステムに慣れたデベロパーに新しい思考法を要求す
るものだ。実際、フレームワークを用いたプログラミン
グは、伝統的な意味では、「プログラミング」に似つか
わしくないのである。DOSまたはUNIXのような旧いタイ
プのOSでは、デベロパー自身のプログラムが全ての構造
を提供するのであり、OSはシステム・コールによってサ
ービスを提供する。すなわち、デベロパーのプログラム
がサービスを必要とするとき、そのプログラムがコール
を行い、サービスが提供されたとき、制御を戻すのであ
る。プログラム構造は、デベロパーにより書かれたコー
ドで具体化された制限のフローに基づいている。
このことはフレームワークが使用されたときは撤回さ
れる。デベロパーはもはや制御の流れに責任を負わない
のである。デベロパーは実行のフローによってプログラ
ミング作業を理解するという風潮より先んじていなけれ
ばいけない。この考え方は、いつタスクが実行されるか
を決定するために、フレームワークを信頼しなければな
らず、オブジェクトの責任によらなければならない。デ
ベロパーが書いたルーチンは、デベロパーが書いてもい
ないし、見てもいないコードによって活動化される。こ
のように制御フローが突然転換することは、手続きプロ
グラミングのみの経験を積んだデベロパーの大きな心理
的な障げになり得るのである。しかしながら、このこと
が一旦理解されると、フレームワーク・プログラミング
は他のタイプのプログラミングよりも作業量が非常に少
なくなる。
アプリケーション・フレームワークがデベロパーにプ
レハブ機能を提供するのと同様の方法で、システム・フ
レームワーク、例えば、好ましい実施態様で含まれるよ
うなシステム・フレームワークは、システム・レベル・
サービスを提供して同一の概念をレバレッジする。この
同一の概念を用いて、システム・プログラマのようなデ
ベロパーはサブクラス化/オーバライドし、カスタマイ
ズされた解決法を作成する。例えば、マルチメディア・
フレームワークを考えてみよう。マルチメディア・フレ
ームワークは新して多様な装置、例えば、オーディオ
と、ビデオと、MIDIと、アニメーションと、等々のよう
な装置をサポートするための基盤を提供する。新しい種
類の装置をサポートするのに必要なデベロパーは、デバ
イス・ドライバを書かなければならなくなる。フレーム
ワークを用いてデバイス・ドライバを書くには、デベロ
パーは新しい装置の特性と、その新しい装置に特有の振
る舞いを供給するだけでよい。
この場合、デベロパーはマルチメディア・フレームワ
ークによってコールされるあるメンバー関数にインプリ
メンテーションを供給する。デベロパーが直接得る利益
は、装置の各カテゴリに対して必要なジェネリックなコ
ードが、マルチメディア・フレームワークによって既に
提供されていることである。これは、デバイス・ドライ
バ・デベロパーが書き、試験し、デバッグするコードが
少ないことを意味する。システム・フレームワークを使
用する他の例を挙げると、SCSI装置と、NuBusカード
と、グラフィックス・ドライバに対する別々のI/Oフレ
ームワークを有することにある。継承された機能が存在
するため、各フレームワークはそのデバイス・カテゴリ
ーにある共通の機能をサポートする。従って、他のデベ
ロパーは、全ての種類のデバイスに対するインタフェー
スに一貫して依存することができる。
好ましい実施態様では、フレームワークの概念を採用
しており、その概念をシステム全体に適用している。企
業のデベロパーか、システム・インテグレータか、ある
いはOEMにとって、このことは次のようなことを意味す
る。すなわち、MacAppのようなフレームワークのために
説明してきた利点を、テキストおよびユーザ・インタフ
ェースのような事物に対しては、アプリケーション・レ
ベルでレバレッジできるだけでなく、サービス、例え
ば、グラフィックスと、マルチメディアと、ファイル・
システムと、I/Oと、試験と、等々のようなサービスに
とっては、システム・レベルでレバレッジすることがで
きる。
好ましい実施態様のアーキテクチャでアプリケーショ
ンを作成することは、本質的には、フレームワーク・プ
ロトコルに付着するドメイン特有のパズルのピースを書
くのに似ている。このように、プログラミングの全概念
は変化する。多重API階層をコールするコードの行ごと
に書く代わりに、この環境内に前から存在していたフレ
ームワークからクラスを導出し、ついで、新しい振る舞
いを付加し、かつ/あるいは、継承された振る舞いをオ
ーバライドして、ソフトウェアが開発されることにな
る。
従って、デベロパーのアプリケーションは、書かれた
コードのコレクションであって、他の全フレームワーク
・アプリケーションと共有されるコードのコレクション
になる。デベロパーは互いの作品の上に築きあげること
ができるので、これは強力な概念である。この概念も必
要なだけカスタマイズする柔軟性をデベロパーに与え
る。フレームワークの中には、そのまま用いられものも
ある。カスタマイズの程度は最少なので、デベロパーが
加担するパズルのピースは小さくなることがある。デベ
ロパーが非常に細な修正をして、何か全く新しいものを
作成する場合もある。好ましい実施態様では、第1図で
示すように、RAM14に常駐し、しかも、CPU10により制御
されるプログラムは、オブジェクト指向のグラフィック
・フレームワークを使用して、種々のタスクを管理する
ことを担当する。
好ましい実施態様では、TGrafEdgeのリストを操作す
るためにレンダリング・パイプラインのエッジ・エンジ
ンを採用している。エッジ・エンジンは個別のデバイス
だけで使用されている。例えば、TFrameBufferデバイス
では、エッジ・エンジンは、プリミティブのうちの塗り
潰されかつフレーム化(framed)された部分を表すエッ
ジから走査線のスパンを生成する。この処理は走査変換
として公知である。
TGrafEdgeは多形の走査変換プリミティブである。一
対の図形エッジを第2図に示す。図形エッジ230,240
は、それぞれ、最小Y値が210、開始X値が200、高さ22
0であり、virtualStepメソッドを有する。virtualStep
メソッドは次の走査線(次の整数Y値)に対してX値を
更新する。従って、TGrafEdgeはYが単調な任意の曲線
を記述することができる。すなわち、TGrafEdgeはスパ
ンされる走査線ごとに単一のX値を有する。TGrafEdge
も単一のCAGノード・オブジェクトに対してリファレン
スを有する。このレファレンスを用いて、ある点が全幾
何学形状の内部にあるか外部にあるかを判定するのに用
いられる。
簡単なプリミティブはレンダリングするのが容易であ
る。簡単なプリミティブは、ある点が幾何学形状の内部
にあるか外部にあるかを判定するための単一のラップ・
カウントを有する。一方、TGAreaプリミティブは、任意
に複雑にすることができる。サブ・プリミティブはそれ
ぞれ独立のラップ・カウントを有する。サブ・プリミテ
ィブのラップ・カウント値は全て全プリミティブの状態
を計算するのに用いることができる。内部/外部の計算
を行うための構造はTGAreaによってセットアップされ、
エッジ・エンジンに渡される。しかし、TGAreaプリミテ
ィブに対してのみ、より複雑な内部/外部計算に関連す
るオーバヘッドがある。エッジ・エンジンのサブクラス
はアンチ・エイリアシング走査変換を行うことになり、
加速されたエッジ、例えば、直線エッジのようなエッジ
に対して、エッジ・エンジンのサブクラスをmakeするこ
とができる。
ピクセル・パーフェクション(pixel perfection)は
エッジ・エンジンにとって重要である。というのは、エ
ッジ・エンジンが個別のデバイス・ユニットへの走査変
換を行うからである。ピクセル・パーフェクションは、
どのピクセルが変更され、どのピクセルに、デバイス空
間の領域を規定するエッジのセットが付与されるかを規
定する。たとえ「ピクセル」という用語を用いるとして
も、ピクセル・パーフェクションは他の個別のデバイス
に対しても有用である。というのは、個別のユニットが
デバイス座標系のどこにあるのかが、ピクセル・パーフ
ェクションにより規定されるからである。
走査変換は、個別のグラフィック・デバイス上にドロ
ーイングすることができる幾何学形状を、水平走査ライ
ン・スパンに変換する処理である。幾何学形状を、塗り
潰すか、フレーム化するか、あるいは塗り潰しかつフレ
ーム化することができる。塗り潰しおよび/またはフレ
ーム化された幾何学形状をドローイングするためのアル
ゴリズムは、どの領域も2度ドローイングされないし、
変換(transfer)モードが正確に機能し、正確に透過す
ることができることを保証する。エッジ・エンジンによ
り、輪郭を表すTGrafEdgeのリストにより規定される幾
何学形状が塗り潰される。ユーザは、幾何学形状の周辺
を任意の方向にトレースすることにより、幾何学形状の
輪郭を指定することができる。こうすることにより、リ
スト中の各エッジの符号が決定される。エッジが+y方
向を指す場合は、エッジの符号は+である。出力に影響
を与えないエッジは廃棄される。
第3図は好ましい実施態様に係るソート順を示す。エ
ッジは、最初に、降順にy値によりソートされ、つい
で、特定のy値内のx値によりソートされる。エッジを
交差する各走査線に対して、x方向に1つ以上のスパン
が生成される。これは、エッジの「アクティブ」リス
ト、すなわち、現走査線を交差するエッジを常に保持す
ることにより達成される。各走査線に対して、アクティ
ブ・エッジ・リストが作成される。そして、エッジが交
差されると、次の規則、すなわち、奇偶規則(Even−od
d rule)またはワインディング数規則(Winding number
rule)のいずれかにより、走査線に対して適正なスパ
ンが生成される。
奇偶規則:エッジに出会う度に、スパンの開始または
終了のいずれかが行われる。第4図は好ましい実施態様
に係る各エッジ対に対して生成された星型スパンの例で
ある。
ワインディング数規則:エッジが交差されると、その
エッジの符号がワインディング数に付加される。ワイン
ディング数はゼロに初期設定される。ワインディング数
が非ゼロであると、スパンが開始される。このワインデ
ィング数がゼロになると、スパンが終了する。その結
果、多角形の外部境界内の全ての領域が塗り潰される。
第5図は好ましい実施態様に係るワインディグ数規則を
用いる星型多角形の例を示す。
適用される規則は、レンダリングされているプリミテ
ィブに依存する。例えば、多角形の図形オブジェクトを
定義するTGPolygonプリミティブは、どの規則を使用す
るかを指定するパラメータを含む。他方、TGEllipseプ
リミティブはいずれかの規則を用いることができる。と
いうのは、内部に交点を持たない(non−self−interse
cting)幾何学形状に両方の規則が適用されたとき、そ
れらの規則により、同一の結果を生じるからである。2
種類のフレームを、フレーム(ヘヤライン・フレームお
よび太いフレーム)の意図された目的に従って、オブジ
ェクトの周囲にドローイングすることができる。これら
のフレームは次に説明する。
太いフレームは、任意の太さを有することができる。
エンド・キャップ(end cap)と、ジョイント・スタイ
ル(joint style)と、ダッシング(dashing)を、希望
どおり適用することができる。エッジ・エンジン走査に
より、太いフレームおよび塗り潰しが同時に変換され
る。フレームの両側(右側および左側)を表すTGrafEdg
eが生成され、かつ塗り潰しエッジを有するリストに挿
入される。フレーム・エッジの方向、従って、フレーム
・エッジの符号は、フレーム・エッジから作成された塗
り潰しエッジの方向と同一である。プリミティブが走査
変換されると、2つのワインディング数、すなわち、左
フレーム・エッジに対するワインディング数と、右フレ
ーム・エッジに対するワインディング数が保持される。
フレームに対して生成されたスパンは、どの塗り潰し規
則が用いられたかに依存する。
奇偶規則:フレーム・エッジが出合うと、フレーム・
エッジの符号が適正なワインディング数(左側または右
側)に付加される。2つのワインディング数が等しくな
くなると、スパンが開始される。2つのワインディング
数が再び等しくなると、スパンが終了される。
ワインディング数規則:フレーム・エッジが出合う
と、フレーム・エッジの符号が適正なワインディング数
(左側または右側)に付加される。2つのワインディン
グ数の符号が等しくなくなると、スパンが開始される。
符号が再び等しくなると、スパンが終了される。
どのペン・バランスが使用されるかによって、塗り潰
された領域にフレームを重ね合わすことができる。しか
しながら、塗り潰された領域とフレームが一緒にドロー
イングされるので、その領域はどの部分も2度はドロー
イングされない。
有心ペンの場合、フレームの太さは塗り潰された領域
の輪郭に集中する。これは、フレームのために生成され
たスパンが、塗り潰すために生成されたスパンに取って
代わることができる場合に達成される。
第6図は好ましい実施態様に係る有心奇偶規則に従う
星型多角形の有心フレームを示し、第7図は好ましい実
施態様に係る有心ワインディング数規則に従う星型多角
形の有心フレームを示す。インセット・ペン(inset pe
n)の場合、フレームの太さは、塗り潰された領域の輪
郭の完全に内側にある。フレームのために生成されたス
パンは、塗り潰すために生成されたスパンにとって代わ
るが、これらは、充填スパンが生成されたときだけドロ
ーイングされる。言い換えると、そのフレームはクリッ
プされ塗り潰し幾何学形状に付加される。これはアウト
セット・フレーム(outset frame)の逆になる。第8図
は好ましい実施態様に係るインセット奇偶規則に従う星
型多角形のインセット・フレーム(inset frame)を示
す。第9図はワインディング数規則に従う星型多角形の
インセット・フレームを示す。
アウトセット・ペンの場合、フレームの太さは塗り潰
し領域の輪郭の完全に外側にある。フレームのために生
成されたスパンは、塗り潰しスパンがドローイングされ
ないときだけドローイングされる。言い換えると、フレ
ームは塗り潰し幾何学形状の内側には決してドローイン
グされることはない。第10図は好ましい実施態様に係る
アウトセット奇偶規則に従う星型多角形のアウトセット
・フレームを示す。第11図は好ましい実施態様に係るア
ウトセット・ワインディング数規則に従う星型多角形の
アウトセット・フレームを示す。
エッジ・エンジン・エイリアシング・サブクラス 第12図は個別の装置によって使用されるエッジ・エン
ジンを示す。アンチ・エイリアシングされたエッジ・エ
ンジンは図示されていない。TEdgeEngineは抽象クラス
であり、その抽象クラスから全てのエッジ・エンジンが
導出される。TEdgeEngineはTGrafEdgeを受取るpureな仮
想関数を含む。TGrafEdgeはpureな仮想Render関数を含
む。
TFillEdgeEngineは、TGrafEdgeのリストで記載された
幾何学形状に対して、エイリアシングされた塗り潰しを
行う。エッジは任意のタイプが可能である。
TRectilinearFillEdgeEngineは、直線のTGrafEdgeの
リストで記載された幾何学形状のエイリアシングされた
塗り潰しを行う。それは、TFillEdgeEngineの最適化で
ある。各TGrafEdgeが垂直線であるものと仮定する。
TFillAndFrameEdgeEngineは、TGrafEdgeのリストで記
載された幾何学形状のエイリアシングされた塗り潰しを
行い、エイリアシングされたフレーム化を行う。エッジ
は任意のタイプが可能である。
TRectilinearFillAndFrameEdgeEngineは、直線のTGra
fEdgeのリストで記載された幾何学形状に対してエイリ
アシングされた塗り潰しを行い、エイリアシングされた
フレーム化を行う。それはTFillEdgeEngineの最適化で
ある。各TGrafEdgeが垂直線であるものと仮定する。
エッジ・エンジン・アンチ・エイリアシング・サブクラ
ス エッジ・エンジンをサブクラス化するための他の理由
は、アンチ・エイリアシングに適応させることにある。
有効な実装により、フィルタ・カーネル(kernel)によ
りエッジの周りの領域のみを巻き込む共通の最適化が行
なわれる。この最適化により、その形の内部で行われる
多量のフィルタリング演算が回避され、同様に、用いら
れる簡単なnon compositing TSpanPainterメソッド、例
えば、PaintSpanのようなメソッドを使用することもで
きる。アンチ・エイリス・エッジ・エンジンの場合は、
エッジを巻き込む2つのアプローチを行うことができ
る。
スーパ・サンプリング・アプローチ走査は、より高解
像度で、レンダリングを、サブピクセル・レベルで詳細
に表現するサブピクセル・ビットマップに変換する。あ
るいはまた、サブピクセル走査変換を予め計算して、次
のようなテーブルにする。このテーブルは、幾つかの有
意ビットにより、エッジの入口および出口座標の小部分
(fractional)コンポーネントからインデックスされる
ものである。これらのビットマップは典型的には4×8
ピクセルである。ボックス・フィルタが使用されている
場合は、必要とされるものは全てビットマップ母集団の
タリーである。0.5を超える大きさの支持体サイズ(sup
port size)を有するより高品質のフィルタが使用され
た場合は、出力されたピクセルの透過は、それぞれ、そ
れ自身のビットマップと、隣接のビットマップの重み付
け平均値から決定される。
より高品質のフィルタにより、1つの付加的な問題が
課せられる。その寄与しているサブピクセル・ビットマ
スクが、全て、フィルタ・カーネルで巻き込まれ、かつ
加算されるまで、走査線を出力することはできない。こ
れは、エッジ・エンジンがその走査変換より1,2走査線
遅れてスパンを出力することになることを意味する。こ
れらのアプローチは、頂点が整数であるか、あるいは隠
れた面を解明する必要があるときに採られるのが典型的
である。予めフィルタリングするアプローチは、エッジ
を含む各ピクセルで、正確な領域計算を採用している。
これは高価であるようであるが、そのことには、実際に
は、有効なインクリメンタル解法がある。走査線上の所
定のエッジ対の場合は、注目する高々3つの領域、すな
わち、左エッジと、中間かあるいは完全にカバーされた
ピクセルと、右エッジが存在することができる。エッジ
が交差した全てのピクセルは、その領域が計算されてい
なければならない。幾つかの隣接したピクセルが共通エ
ッジによって交差された場合は、引き続き交差するピク
セルに対する領域を、インクリメントに計算することが
できる。所定の傾斜を有するエッジの場合は、ピクセル
からピクセルまでの領域の差は一定である。この仮定に
基づいたアプローチはより魅力的である。
どちらのアルゴリズムが採用されても、2つのエッジ
のケースがかち合うかもしれない。分離されたエッジの
第1のケースは最も普通である。全てのエンジンはこの
ケースに遭遇する。フレーム化のみエッジ・エンジン
か、塗り潰しのみエッジ・エンジンからのエッジは、全
ては、このカテゴリに属する。塗り潰しおよびフレーム
化エッジ・エンジンは、フレームの外部エッジ上でこの
ケースに遭遇する。エッジの不透明性(edge opacity)
が判定された後、不透明でないピクセルは、TSpanPaint
erのCompositeSpanメソッドによってデスティネーショ
ン・ピクセルと合成されなければならない。
第18図は好ましい実施態様に係るロジックのフローチ
ャートである。処理は機能ブロック1800で開始され、所
定の幾何学形状、例えば、矩形か、楕円か、あるいは多
角形のような幾何学形状からエッジを生成する。そし
て、機能ブロック1810にて、エッジのy値を、1次ソー
ト・フィールドとして、昇順でソートし、エッジのx値
を、2次ソート・フィールドとして、昇順でソートす
る。ついで、機能ブロック1820にて、現在の走査線を第
1のエッジのy値に初期設定し、機能ブロック1830に
て、新しいエッジをコレクトしてアクティブ・エッジ・
リストに入れる。(アクティブ・エッジ・リストとは、
現在の走査線を交差するエッジのリストである)。機能
ブロック1840にて、エッジが現在の走査ラインを最早交
差しない場合は、エッジはアクティブ・エッジ・リスト
から除去される。機能ブロック1850にて、ステップ関数
が全アクティブ・エッジに対してコールされ、エッジの
順序が狂っているかどうかを検出する。(エッジのステ
ップ関数は現在の走査線に対応する次のx値を計算す
る)、そして、判定ブロック1860にて、試験を行って、
エッジをx値でソートする必要があるかどうかを判定す
る。新しいエッジが付加される場合か、古いエッジが除
去される場合か、あるいは、エッジが交差した場合は、
x値でソートする必要がある。ソートが必要な場合に
は、機能ブロック1870にて、アクティブ・リストをx値
で昇順でソートし、制御を機能ブロック1880に渡す。ソ
ートする必要がない場合は、制御を機能ブロック1880に
直接渡す。
機能ブロック1880にて、各アクティブ・リストに対し
て、試験を行って、エッジを交差した結果、幾何学形状
の外部に遷移し、しかも、現在の走査線上にピクセルを
ドローイングすることになるかどうかを判定する。エッ
ジ遷移関数を用いて、内部/外部検出を行う機構を一般
化することができる。その論理の検討は第19図、第20図
および第21図を参照して行う。第19図、第20図および第
21図はこの処理の種々の実施態様を示す。ついで、判定
ブロック1890にて、試験を行って全てのエッジが処理さ
れたかどうかを判定する。処理された場合は、終了端子
1891にて、その処理が完了する。処理されない場合は、
機能ブロック1892にて、現在の走査ラインをインクリメ
ントし、上述した論理と一致する処理をさらに行うた
め、制御を機能ブロック1830に渡す。
ワインディング数規則 第19図は第18図の機能ブロック1880で示されたような
本発明に係るエッジ遷移処理の実施態様を示すフローチ
ャートである。処理が機能ブロック1900にて開始され、
機能ブロック1900にて、エッジの符号が現在のラップ・
カウントに付加される。判定ブロック1910にて、試験を
行い、ラップ・カウントがゼロになったかどうかを判定
する。ゼロになった場合は、セーブされたx値から機能
ブロック1940で示されるようなエッジのx値まで、ピク
セルが現在の走査ライン上にドローイングされる。ゼロ
でない場合には、試験を行って、ラップ・カウントが非
ゼロになったか否かを判定する。ラップ・カウントが非
ゼロである場合は、機能ブロック1930にてエッジのx値
をセーブする。
奇偶規則 第20図は第18図の機能ブロックで示されたような本発
明に係るエッジ遷移処理の実施態様を示すフローチャー
トである。処理が機能ブロック2000で開始され、機能ブ
ロック2000にて、エッジの符号が現在のラップ・カウン
トに付加される。判定ブロック2010にて、試験を行っ
て、ラップ・カウントが偶数であるかどうかを判定す
る。エッジ・カウントが偶数である場合は、機能ブロッ
ク2030にて、セーブされたx値からそのエッジのx値ま
で、ピクセルを現在の走査ライン上にドローイングす
る。エッジ・カウントが偶数でない場合には、機能ブロ
ック2020にて、エッジのx値をセーブする。
第21図は本発明に係るエッジ遷移の実施態様を示すブ
ロック図である。このブロック図は矩形と楕円のブール
和を用いて、遷移処理を明確にしている。結果ブロック
2100にて、結果値を記憶する。ブール和オブジェクト21
10は、2つの奇偶値を取り、2つの値の論理和を計算す
る。奇偶オブジェクト2120は、奇偶論理を用いて、各幾
何学形状の内部または外部をトレースする。エッジが交
差されると、ブロック2130を介して、その遷移関数をコ
ールする。矩形および楕円のエッジはブロック2140に示
す。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 カブラル,オーサー,ダブリュ. アメリカ合衆国 94087 カリフォルニ ア州 サニーベイル ロイス アヴェニ ュ 1010 (56)参考文献 特開 平4−250580(JP,A) 特開 平1−166181(JP,A) 特開 平3−6675(JP,A) 特開 平2−176881(JP,A) 特開 平3−176184(JP,A) 特開 平5−54149(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06T 11/40 CSDB(日本国特許庁)

Claims (20)

    (57)【特許請求の範囲】
  1. 【請求項1】複数のエッジを有する閉じた幾何学的形状
    であって前記複数のエッジを記述するデータにより定義
    された幾何学的形状を、複数の走査線ピクセルに走査変
    換する方法であって、メモリを有するコンピュータシス
    テム上でオペレートする方法において、 (a)前記幾何学的形状のエッジデータを前記メモリに
    ロードするステップと、 (b)前記幾何学的形状内及び前記エッジ上における走
    査線ピクセル位置を識別する複数のエッジ遷移機能を有
    するノードオブジェクトを作成するステップと、 (c)前記エッジをそれぞれ表す複数のエッジオブジェ
    クトであって、前記エッジの開始及び高さを指定する情
    報を含み、垂直位置を受け取って前記エッジの対応する
    水平位置を返すステップ関数を含む複数のエッジオブジ
    ェクトを、前記幾何学的形状データから作成するステッ
    プと、 (d)前記走査線を順番に処理し、各走査線に対して、
    当該走査線におけるピクセル位置を試験し、前記エッジ
    オブジェクト及び前記エッジ遷移機能を用いて、各ピク
    セル位置が前記幾何学的形状内にあるかどうかを判定す
    るエッジエンジンオブジェクトに、前記エッジオブジェ
    クトを供給するステップと、 (e)前記幾何学的形状内の各ピクセル位置に走査線ピ
    クセルをドローするステップと を備えたことを特徴とする方法。
  2. 【請求項2】請求項1において、前記ステップ(b)
    は、 (b1)前記幾何学的形状に固有のエッジ遷移機能を有す
    るノードオブジェクトを作成するステップ を備えたことを特徴とする方法。
  3. 【請求項3】請求項2において、前記ステップ(b)
    は、 (b1)奇偶処理規則を利用して、前記ピクセル位置が前
    記幾何学的形状内にあるかどうか判定するノードオブジ
    ェクトを作成するステップ を備えたことを特徴とする方法。
  4. 【請求項4】請求項2において、前記ステップ(b)
    は、 (b1)ワインディング数処理規則を利用して、前記ピク
    セル位置が前記幾何学的形状内にあるかどうかを判定す
    るノードオブジェクトを作成するステップ を備えたことを特徴とする方法。
  5. 【請求項5】請求項1において、前記ステップ(d)
    は、 (d1)走査線処理中において、前記エッジオブジェクト
    を利用して、任意のエッジが前記走査線と交差するかど
    うかを判定するステップと、 (d2)前記ステップ(d1)において判定されたエッジを
    表すエッジオブジェクトを選択するステップと を備えたことを特徴とする方法。
  6. 【請求項6】請求項5において、前記ステップ(d)
    は、 (d3)前記選択されたエッジオブジェクトのステップ関
    数を用いて、エッジが前記走査線と交差するピクセル位
    置を判定するステップと (d4)前記ステップ(d3)において判定されたピクセル
    位置と、前記エッジ遷移機能とを用いて、各ピクセル位
    置が前記幾何学的形状内にあるかどうかを判定するステ
    ップと を備えたことを特徴とする方法。
  7. 【請求項7】請求項6において、前記ステップ(d4)
    は、前記選択されたエッジオブジェクトをソートし、前
    記オブジェクトにより表されたエッジを、ピクセル位置
    の昇順に、走査線に沿って配置するステップを備えたこ
    とを特徴とする方法。
  8. 【請求項8】請求項5において、前記ステップ(d1)
    は、各エッジオブジェクト内の前記エッジ開始及びエッ
    ジ高さ情報と、前記走査ライ垂直位置とを用いて、前記
    各エッジオブジェクトにより表される前記エッジが前記
    走査線と交差するかどうかを判定するステップを備えた
    ことを特徴とする方法。
  9. 【請求項9】請求項1において、前記ステップ(e)
    は、エイリアシングエッジエンジンを使用して、前記幾
    何学的形状内の各ピクセル位置に走査線ピクセルをドロ
    ーするステップを備えたことを特徴とする方法。
  10. 【請求項10】請求項1において、前記ステップ(e)
    は、アンチエイリアシングエッジエンジンを使用して、
    前記幾何学的形状内の各ピクセル位置に、走査線ピクセ
    ルをドローするステップを備えたことを特徴とする方
    法。
  11. 【請求項11】複数のエッジを有する閉じた幾何学的形
    状であって前記複数のエッジを記述するデータにより定
    義された幾何学的形状を、複数の走査線ピクセルに走査
    変換する装置であって、メモリを有するコンピュータシ
    ステム上でオペレートする装置において、 前記幾何学的形状のエッジデータを前記メモリにロード
    する手段と、 前記幾何学的形状内及び前記エッジ上における走査線ピ
    クセル位置を識別する複数のエッジ遷移機能を有するノ
    ードオブジェクトを作成する手段と、 前記エッジをそれぞれ表す複数のエッジオブジェクトで
    あって、前記エッジの開始及び高さを指定する情報を含
    み、垂直位置を受け取り、前記エッジの対応する水平位
    置を返すステップ関数を含む複数のエッジオブジェクト
    を、前記幾何学的形状データから作成する手段と、 前記走査線を順番に処理し、各走査線に対して、当該走
    査線におけるピクセル位置を試験し、前記エッジオブジ
    ェクト及び前記エッジ遷移機能を用いて、各ピクセル位
    置が前記幾何学的形状内にあるかどうかを判定するエッ
    ジエンジンオブジェクトに、前記エッジオブジェクトを
    供給する手段と、 前記幾何学的形状内の各ピクセル位置に走査線ピクセル
    をドローする手段と を備えたことを特徴とする装置。
  12. 【請求項12】請求項11において、前記ノードオブジェ
    クトは、前記幾何学的形状に固有のエッジ遷移機能を備
    えたことを特徴とする装置。
  13. 【請求項13】請求項12において、前記ノードオブジェ
    クトは、ピクセル位置が前記幾何学的形状内にあるかど
    うかを判定するための奇偶処理規則を備えたことを特徴
    とする装置。
  14. 【請求項14】請求項12において、前記ノードオブジェ
    クトは、ピクセル位置が前記幾何学的形状内にあるかど
    うかを判定するためのワインディング数処理規則を備え
    たことを特徴とする装置。
  15. 【請求項15】請求項11において、前記エッジエンジン
    オブジェクトは、 走査線処理中において、前記エッジオブジェクトを用い
    て、任意のエッジが前記走査線と交差するかどうかを判
    定する手段と、 前記走査線と交差するエッジを表すエッジオブジェクト
    を選択する手段と を備えたことを特徴とする装置。
  16. 【請求項16】請求項15において、前記エッジエンジン
    は、前記選択されたエッジオブジェクトのステップ関数
    を用いて、エッジが前記走査線と交差するピクセル位置
    を判定する手段と、 該判定する手段により判定されたピクセル位置と、前記
    エッジ遷移機能とを用いて、各ピクセル位置が前記幾何
    学的形状内にあるかどうかを判定する手段と を備えたことを特徴とする装置。
  17. 【請求項17】請求項16において、前記エッジエンジン
    は、前記選択されたエッジオブジェクトをソートし、前
    記オブジェクトにより表されたエッジを、ピクセル位置
    の昇順に、走査線に沿って配置するステップを備えたこ
    とを特徴とする装置。
  18. 【請求項18】請求項15において、前記エッジエンジン
    は、各エッジオブジェクト内の前記エッジ開始及びエッ
    ジ高さ情報と、前記走査線垂直位置とを用いて、前記各
    エッジオブジェクトにより表される前記エッジが前記走
    査線と交差するかどうかを判定する手段を備えたことを
    特徴とする装置。
  19. 【請求項19】請求項11において、前記ドローする手段
    は、前記幾何学的形状内の各ピクセル位置に、走査線ピ
    クセルをドローするエイリアシングエッジエンジンを備
    えたことを特徴とする装置。
  20. 【請求項20】請求項11において、前記ドローする手段
    は、前記幾何学的形状内の各ピクセル位置に、走査線ピ
    クセルをドローするアンチエイリアシングエッジエンジ
    ンを備えたことを特徴とする装置。
JP50345695A 1993-06-30 1994-01-03 図形エッジ・システム Expired - Lifetime JP3392870B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/085,340 1993-06-30
US08/085,340 US5471568A (en) 1993-06-30 1993-06-30 Object-oriented apparatus and method for scan line conversion of graphic edges
PCT/US1994/000013 WO1995001615A1 (en) 1993-06-30 1994-01-03 Graphic edge system

Publications (2)

Publication Number Publication Date
JPH08512156A JPH08512156A (ja) 1996-12-17
JP3392870B2 true JP3392870B2 (ja) 2003-03-31

Family

ID=22190953

Family Applications (1)

Application Number Title Priority Date Filing Date
JP50345695A Expired - Lifetime JP3392870B2 (ja) 1993-06-30 1994-01-03 図形エッジ・システム

Country Status (8)

Country Link
US (1) US5471568A (ja)
EP (1) EP0691012B1 (ja)
JP (1) JP3392870B2 (ja)
CN (1) CN1113666A (ja)
AU (1) AU6081794A (ja)
CA (1) CA2144870A1 (ja)
DE (1) DE69410458D1 (ja)
WO (1) WO1995001615A1 (ja)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6684261B1 (en) * 1993-07-19 2004-01-27 Object Technology Licensing Corporation Object-oriented operating system
US5379432A (en) 1993-07-19 1995-01-03 Taligent, Inc. Object-oriented interface for a procedural operating system
CN1116009A (zh) * 1993-07-27 1996-01-31 塔里根特公司 面向目标的再现系统
JP3483946B2 (ja) * 1994-08-19 2004-01-06 三菱電機株式会社 フォント処理装置及びフォント処理方法
US5666475A (en) * 1995-01-03 1997-09-09 University Of Washington Method and system for editing multiresolution images at fractional-levels of resolution using a wavelet representation
US5657436A (en) * 1995-06-08 1997-08-12 Hewlett-Packard Company Preprocessing apparatus and method for line scan conversion in a computer graphics system
JP3785700B2 (ja) * 1995-12-18 2006-06-14 ソニー株式会社 近似化方法および装置
US6272555B1 (en) 1996-07-01 2001-08-07 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server-centric interprise computing framework system
US5987245A (en) 1996-07-01 1999-11-16 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture (#12) for a client-server state machine framework
US5999972A (en) 1996-07-01 1999-12-07 Sun Microsystems, Inc. System, method and article of manufacture for a distributed computer system framework
US6424991B1 (en) 1996-07-01 2002-07-23 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server communication framework
US6434598B1 (en) 1996-07-01 2002-08-13 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server graphical user interface (#9) framework in an interprise computing framework system
US6266709B1 (en) 1996-07-01 2001-07-24 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server failure reporting process
US6304893B1 (en) 1996-07-01 2001-10-16 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server event driven message framework in an interprise computing framework system
US6038590A (en) 1996-07-01 2000-03-14 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server state machine in an interprise computing framework system
US5848246A (en) 1996-07-01 1998-12-08 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server session manager in an interprise computing framework system
US6407736B1 (en) 1999-06-18 2002-06-18 Interval Research Corporation Deferred scanline conversion architecture
US6714214B1 (en) * 1999-12-07 2004-03-30 Microsoft Corporation System method and user interface for active reading of electronic content
US7337389B1 (en) 1999-12-07 2008-02-26 Microsoft Corporation System and method for annotating an electronic document independently of its content
US9424240B2 (en) 1999-12-07 2016-08-23 Microsoft Technology Licensing, Llc Annotations for electronic content
US6820111B1 (en) 1999-12-07 2004-11-16 Microsoft Corporation Computer user interface architecture that saves a user's non-linear navigation history and intelligently maintains that history
US6992687B1 (en) 1999-12-07 2006-01-31 Microsoft Corporation Bookmarking and placemarking a displayed document in a computer system
US7458014B1 (en) 1999-12-07 2008-11-25 Microsoft Corporation Computer user interface architecture wherein both content and user interface are composed of documents with links
US7185274B1 (en) 1999-12-07 2007-02-27 Microsoft Corporation Computer user interface architecture wherein users interact with both content and user interface by activating links
US6957233B1 (en) 1999-12-07 2005-10-18 Microsoft Corporation Method and apparatus for capturing and rendering annotations for non-modifiable electronic content
US7028267B1 (en) 1999-12-07 2006-04-11 Microsoft Corporation Method and apparatus for capturing and rendering text annotations for non-modifiable electronic content
AU765466B2 (en) * 1999-12-22 2003-09-18 Canon Kabushiki Kaisha Anti-aliased polygon rendering
AU767108B2 (en) * 2000-03-08 2003-10-30 Canon Kabushiki Kaisha Edge merging via lookup table
AUPQ697100A0 (en) * 2000-04-18 2000-05-11 Canon Kabushiki Kaisha Rendering graphic object based images
US7243299B1 (en) 2000-04-21 2007-07-10 Microsoft Corporation Methods and apparatus for displaying multiple contexts in electronic documents
AU769956B2 (en) * 2000-05-03 2004-02-12 Canon Kabushiki Kaisha Conversion of vectorized paths into a renderable format
US6828983B1 (en) * 2000-05-12 2004-12-07 S3 Graphics Co., Ltd. Selective super-sampling/adaptive anti-aliasing of complex 3D data
US6766281B1 (en) * 2000-05-12 2004-07-20 S3 Graphics Co., Ltd. Matched texture filter design for rendering multi-rate data samples
US6760019B1 (en) 2000-06-01 2004-07-06 Sun Microsystems, Inc. Methods and apparatus for facilitating the sharing of computer graphics operations
US7234108B1 (en) 2000-06-29 2007-06-19 Microsoft Corporation Ink thickness rendering for electronic annotations
US7126600B1 (en) * 2000-08-01 2006-10-24 Ati International Srl Method and apparatus for high speed block mode triangle rendering
AU771813B2 (en) * 2001-04-19 2004-04-01 Canon Kabushiki Kaisha Converting path with non-zero winding fill rule or odd-even winding fill rule to a simple outline path
JP4164272B2 (ja) * 2001-04-24 2008-10-15 キヤノン株式会社 画像処理装置及び画像処理方法
AUPR860901A0 (en) * 2001-10-31 2001-11-29 Canon Kabushiki Kaisha Activating a filling of a graphical object
AUPR970501A0 (en) * 2001-12-21 2002-01-24 Canon Kabushiki Kaisha A method for performing set operations on two or more arbitrary paths to produce a simple outline path
AU2002318793B2 (en) * 2001-12-21 2005-02-17 Canon Kabushiki Kaisha A Method for Performing Set Operations on Two or More Arbitrary Paths to Produce a Simple Outline Path
US20040174364A1 (en) * 2003-03-03 2004-09-09 Shehane Patrick D. Rendering patterned lines in a graphics system
US7864179B1 (en) * 2007-04-13 2011-01-04 Adobe Systems Incorporated Fractional parametric polystar methods and apparatus
CN101685544B (zh) * 2008-09-28 2011-11-23 北大方正集团有限公司 一种简化复杂路径的方法及装置
JP5744574B2 (ja) * 2011-03-07 2015-07-08 キヤノン株式会社 画像処理装置、画像処理方法及びプログラム
EP2701090A1 (en) * 2012-08-22 2014-02-26 Aahlstö OÜ Method and system for enforcing 3D restricted rights in a rapid manufacturing and prototyping environment

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1184305A (en) * 1980-12-08 1985-03-19 Russell J. Campbell Error correcting code decoder
US4704694A (en) * 1985-12-16 1987-11-03 Automation Intelligence, Inc. Learned part system
US4821220A (en) * 1986-07-25 1989-04-11 Tektronix, Inc. System for animating program operation and displaying time-based relationships
US4885717A (en) * 1986-09-25 1989-12-05 Tektronix, Inc. System for graphically representing operation of object-oriented programs
US5063375A (en) * 1987-07-27 1991-11-05 Sun Microsystems, Inc. Method and apparatus for shading images
US4891630A (en) * 1988-04-22 1990-01-02 Friedman Mark B Computer vision system with improved object orientation technique
EP0347162A3 (en) * 1988-06-14 1990-09-12 Tektronix, Inc. Apparatus and methods for controlling data flow processes by generated instruction sequences
US5041992A (en) * 1988-10-24 1991-08-20 University Of Pittsburgh Interactive method of developing software interfaces
US5133075A (en) * 1988-12-19 1992-07-21 Hewlett-Packard Company Method of monitoring changes in attribute values of object in an object-oriented database
US5050090A (en) * 1989-03-30 1991-09-17 R. J. Reynolds Tobacco Company Object placement method and apparatus
DE3916314A1 (de) * 1989-05-19 1990-11-22 Ford Werke Ag Verfahren und vorrichtung zum feststellen der erforderlichen anstellung von waelzlagern in getrieben
US5060276A (en) * 1989-05-31 1991-10-22 At&T Bell Laboratories Technique for object orientation detection using a feed-forward neural network
US5125091A (en) * 1989-06-08 1992-06-23 Hazox Corporation Object oriented control of real-time processing
US5181162A (en) * 1989-12-06 1993-01-19 Eastman Kodak Company Document management and production system
US5093914A (en) * 1989-12-15 1992-03-03 At&T Bell Laboratories Method of controlling the execution of object-oriented programs
US5075848A (en) * 1989-12-22 1991-12-24 Intel Corporation Object lifetime control in an object-oriented memory protection mechanism
US5151987A (en) * 1990-10-23 1992-09-29 International Business Machines Corporation Recovery objects in an object oriented computing environment
US5119475A (en) * 1991-03-13 1992-06-02 Schlumberger Technology Corporation Object-oriented framework for menu definition

Also Published As

Publication number Publication date
US5471568A (en) 1995-11-28
JPH08512156A (ja) 1996-12-17
CA2144870A1 (en) 1995-01-12
EP0691012A1 (en) 1996-01-10
AU6081794A (en) 1995-01-24
CN1113666A (zh) 1995-12-20
WO1995001615A1 (en) 1995-01-12
EP0691012B1 (en) 1998-05-20
DE69410458D1 (de) 1998-06-25

Similar Documents

Publication Publication Date Title
JP3392870B2 (ja) 図形エッジ・システム
US5428744A (en) Object-oriented system for building a graphic image on a display
EP1462998B1 (en) Markup language and object model for vector graphics
Bederson et al. Jazz: an extensible zoomable user interface graphics toolkit in Java
EP0713594B1 (en) Object-oriented rendering system
JP4796499B2 (ja) 映像およびシーングラフインターフェイス
US7126606B2 (en) Visual and scene graph interfaces
US6392651B1 (en) Interactive timeline visualization
WO1995008147A1 (en) Object-oriented audio record/playback system
EP0405496B1 (en) A method of manipulating images larger than a viewport
EP0607136A1 (en) Graphics output system with bounded updating
Willman et al. Graphics and Animation in PyQt
Mena-Quintero et al. The {GNOME} Canvas: A Generic Engine for Structured Graphics
Oswald A generic 2D graphics API with object framework and applications
AU2004279179B8 (en) Visual and scene graph interfaces
LAI et al. Structural Modeling of Flowcharts
White Pro. NET 2.0 Graphics Programming
Juneau et al. Java 2D Graphics
Syme et al. Working with Windows Forms and Controls
Churchill et al. Programming Fresco
Sun Software reengineering system visualizer
JPH08503324A (ja) オブジェクト指向要素シェイディングとカラーリング

Legal Events

Date Code Title Description
R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080124

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090124

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090124

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100124

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110124

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110124

Year of fee payment: 8

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110124

Year of fee payment: 8

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110124

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120124

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120124

Year of fee payment: 9

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D02

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D04

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130124

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130124

Year of fee payment: 10

EXPY Cancellation because of completion of term