JP4699480B2 - 3d描画アルゴリズムを利用する2d/3d線描画 - Google Patents

3d描画アルゴリズムを利用する2d/3d線描画 Download PDF

Info

Publication number
JP4699480B2
JP4699480B2 JP2007548521A JP2007548521A JP4699480B2 JP 4699480 B2 JP4699480 B2 JP 4699480B2 JP 2007548521 A JP2007548521 A JP 2007548521A JP 2007548521 A JP2007548521 A JP 2007548521A JP 4699480 B2 JP4699480 B2 JP 4699480B2
Authority
JP
Japan
Prior art keywords
coordinates
point
straight line
computer
attribute
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 - Fee Related
Application number
JP2007548521A
Other languages
English (en)
Other versions
JP2008524756A (ja
Inventor
アンダーソン、マイケル・ヒュー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2008524756A publication Critical patent/JP2008524756A/ja
Application granted granted Critical
Publication of JP4699480B2 publication Critical patent/JP4699480B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • 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
    • G06T11/002D [Two Dimensional] image generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/203Drawing of straight lines or curves

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)

Description

本分野は、コンピュータグラフィック処理を一般的に含み、より具体的には、表示点の組が3次元描画アルゴリズムを使用する直線グラフィックオブジェクトの2次元表現を定義する場合の主題を含む。
今日、アニメーションの生成からワードプロセッシング、e-mailのような単純なタスクまで、コンピューティングの各観点は多くのグラフィックスを使用し、ユーザにとってより直感的な仕事環境を生成している。ビデオアダプタはグラフィックカードであり、パーソナルコンピュータに差し込まれ、コンピュータに表示グラフィカルイメージに対する機能を与える。その所有するグラフィックプロセッサを含むビデオアダプタは、しばしばグラフィックアクセレータと呼ばれる。
自身のメモリ及びプロセッサを有するので、グラフィックアクセレータはコンピュータに表示画面上に複雑な画像を早く表示させることができる。グラフィックアクセレータは、コンピュータに使用されている汎用目的中央処理ユニット(CPU)よりも良い結果を得ることができる。グラフィックアクセレータのプロセッサはグラフィック変換の計算に特化されているからである。加えて、グラフィックアクセレータは、グラフィックアクセレータがグラフィック計算をハンドリングしている間に他のコマンドを実行するコンピュータのCPUから解放されている。
初期のコンピュータにおいては、グラフィックは、2次元(2−D)イメージ、すなわち、2次元(2−D)グラフィックアクセレータのみによって必要とされる点、線及び正方形で構成されていた。深さ及び他の属性を見せる必要性が3次元(3−D)グラフィックアクセレータの開発を駆り立てる。表示画面に取り付けられる装置は、一般的に、2−Dグラフィックアクセレータ及び3−Dグラフィックアクセレータを有し、システムは、必要に応じて2つの間を切り替える。しかしながら、現在マーケットにおいて売られている売れ筋の装置は、コスト節約の観点から2−Dグラフィックアクセレータを削除し、3−Dグラフィックアクセレータに、以前は2−Dグラフィックアクセレータ及び3−Dグラフィックアクセレータの組み合わせで行なっていた線の描画を含む全てのタスクを実行させる。
従来の3−Dグラフィックアクセレータによって描画される線は、一般的に、1つの三角形が、そのベースで他に対して間隔を空け、及び隣り合うように位置する2つの同一延長三角形を有し、非常に長く、薄い矩形を形成する。しばしば、三角形クワド(quadrilaterals)線と呼ばれ、このような直線が多く使用される。例えば、ワードプロセッシングプログラムのプルダウンメニュー及びインターネットウェブブラウザプログラムは、一般的に、直線によって囲まれたテキストから構成される。セルフォン画面に表示されるメニューオプションは、直線によって囲まれ、分けられたテキストを含む。角度をなす直線は、多くのグラフィカルアプリケーションを有し、装置表示画面に呈示されたハウス或いは積み上げられた棚のワイヤーフレーム図面に深さを与える。
3−Dグラフィックアクセレータを有し直線を描画する装置については、コンピュータ画面上の画面空間において、デジタル的にアナログ線セグメントを示しているときに、三角形クアッド線の使用が問題を生成する。例えば、6つの頂点の合計については、三角形クアッド線を補填する2つの三角形それぞれが3つの頂点を有する。これら6つの頂点は記憶のための複数のメモリ及び6つの全ての頂点を描画するために多くの処理時間を必要とする。デジタル的に表現された三角形クアッド線は深さを有するのに対し、それに対応するアナログ線は深さは必要とされない。加えて、多くの処理時間が三角形クアッド線の一部として描画されることのない画素を描画するのに費やされる。したがって、この分野においては、既存の3−Dグラフィックアクセレータを利用する直線セグメントを描画する効率的な技術が必要とされている。
ここに開示された実施の形態は、三角形基本要素の描画が、3次元描画アルゴリズムを使用する直線グラフィックオブジェクトの2次元表現を定義する表示点の組を生成するように、特定の三角形基本要素の部分として、直線データを使用することによって、上述のニーズに取り組む。
ある実施の形態においては、3次元(3D)グラフィックアクセレータはデータを受信可能である。このデータは三角形要素の3つの頂点(x0,y0,k0),(x1,y1,k1)及び(x2,y2,k2)を定義する。属性K2=(K0+K1)/2及び座標(x0,y0,k0),(x1,y1,k1)及び(x2,y2,k2)は二等辺三角形要素を形成する。この二等辺三角形要素は、三次元描画アルゴリズムを使用して描画され、二等辺三角形のベースの2次元表現を定義する表示点の組を得る。
図1は、内部においていくつかの実施の形態が実現されたシステム100である。システム100は、システムプロセッサ102、システムメモリ104、キーボード、マウスのような入力装置106及び3Dグラフィックアクセレータ108を有する。それぞれは、バス110を通して通信を行なう。
システムプロセッサ102はホストコンピュータの中央処理ユニット(CPU)であり、ホストコンピュータは、デスクトップ或いはラップトップコンピュータ、サーバ、ゲームコンソール、セルラー電話のようなものである。システムメモリ104はメモリリソースの種々のフォームを含み、永久格納装置、大容量格納装置、リムーバブル格納装置及びランダムアクセスメモリ(RAM)のような揮発性読み出し及び書き込みメモリのようなものである。システムメモリ104とともに、システムプロセッサ102はプログラムされた命令を処理し、タスクを実行する。
3Dグラフィックアクセレータ108は、システム100にグラフィックイメージをすばやく効率的に表示する能力を与える。例えば、3Dグラフィックアクセレータ108は、3Dグラフィックアクセレータ108がグラフィック計算をハンドリングしている間に、システムプロセッサ102を他のコマンドを実行するために解放する。図面メモリ112、図面プロセッサ114及びフレームバッファ116は3Dグラフィックアクセレータ108に含まれ、表示装置118は3Dグラフィックアクセレータ108に接続されている。
図面メモリ112はデータ及びシステムプロセッサからの命令を受信し、図面プロセッサ114によって使用されるデータ及び命令を格納する。図面プロセッサ112は、加算器、乗算器及びマルチプレクサのようなコンポーネントを含み、図面メモリ112内のデータ及び命令を処理する。この処理の間、図面プロセッサ114は格納された命令に従ったデータを描画する。ある実施の形態においては、図面メモリ112は色、深さ、ステンシルなどの種類のスクラッチパッドのように働く。
セル電話上で使用されているようなコンピュータ画面及び他の表示画面はピクセルのグリッド(アレイ)を選択的に明るくすることにより、イメージを表示する。これらビットマップ或いは描画イメージは、特定の表示装置画面におけるピクセル位置についての強度の組によって完全に特定される。描画処理は、各ビットが特定の強度で表示装置118上でピクセルが光るように設計され、ビットマップイメージへの形で構成されるオブジェクト指向イメージを含む。データを描画するために、ビットマップがフレームバッファ116に格納されている場合に、図面プロセッサ114はビットマップを生成するためにデータをロードし解析する。ビットマップはファイル或いは表示装置118上に表示されるべきビット対ビットのイメージ構造である。さらに、フレームバッファ116はバス110に直接取り付けられている。
図2は、表示装置118上の画面空間において直線として描画されるモデル空間直線200を示す。直線200は、始点202から終点204まで伸びる。始点202は座標(x0,y0,z0)で示されており、終点204は座標(x1,y1,z1)で示されている。本例の直線200は表示装置118上の画面空間に平行な平面にあるので、始点202は座標(x0,y0)で示され、終点204は座標(x1,y1)で示されている。
図3は、直線200から三角形要素を構築するための方法300のフローチャートである。ステップ302では、システムプロセッサ102は直線を生成し、位置づけることに関する入力を受信する。この入力は、人間であるユーザか行なわれ、このユーザは、航空機の翼のワイヤフレームモデルを描くために計算機援用図面パッケージを使用するような人や、セルラー電話の画面上に現れる封筒の背景画面、コンピュータゲームにおいて現れる1つ以上の線を描く人などである。いずれにしろ、図1の入力装置106は、入力をシステムプロセッサ102に送るのに使用される。ここで、入力は直線200を生成し、位置づけることに関する情報を含む。
ステップ304では、システムプロセッサ102は受信した入力を命令304に変換する。この命令は、コマンドを含む。コマンドは、例えば、直線200の2つの終点のx,y座標の次に、draw_lineのようなものである。線の始点は、(x0,y0)におけるゼロ(”0”)と指定され、線の終点は、(x1,y1)における1つ(x1,y1)と指定されることが可能である。三角形は、一般的に左頂点ピクセルから、左から右に移動し、そして、頂点から底辺へ移動することにより描画される。描画処理が提案された三角形内の他のピクセルに到達する前に始点(x0,y0)を含むピクセルに届く場合、処理は直線200の位置を決定する。
提案された三角形内の第1のピクセルが始点(x0,y0)であることを保証するために、直線200の始点(x0,y0)は直線200のその終わりである。この場合において、y0≧y1であり、x0はx軸に最も近い座標(x0≦x1)である。言い換えれば、始点は、yモデル空間座標の最も小さい値を有する終点であり、2つのyモデル空間座標は等しい場合、始点はxモデル空間座標の最小値を有するその終点である。
その位置に加えて、直線200の各終点は、他の属性によって定義される。この属性は、例えば、拡散色(アルファ(”α”),R,G,B)(例えば、α、赤、緑、青)、鏡色(RS、GS,BS)、テキスチャー色(u,v)及び霧などである。したがって、システムプロセッサ102の一般的な命令は、以下のコマンドストリング(1)で示される。
draw_line (x0, y0, K0, x1, y1 K1) (1)
又は
draw_line(x0, y0, n0α, n0R, n0G, n0B, n0RS, n0GS, n0BS, n0u, n0v,x1, y1, n1α, n1R, n1G, n1B, n1RS, n1GS, n1BS, n1u, n1v) (1)
最後の数字或いはキャラクタは特定の属性を認識する。x,yの位置の数値はどんな番号であってもよく、残りの属性についての数値は0から255まで(例えば、0から2まで)であってもよい。数値例として、命令はコマンドストリング(2)として以下のように示される。
draw_line(1.51, 2.21, 8α, 240R, 0G, 56B, 23RS, 0GS, 0BS, 4u, 256v,
3.15, 4.48, 45α, 210R, 0G, 7B, 99RS, 180GS, 45BS, 0u, 16v) (2)
コマンドストリング(2)から描かれる直線は、始点(x0,y0)=(1.51,2.21)から終点(x1,y1)=(3.15,4.48)までの直線であり、指定された属性の数値を有する。
2Dグラフィックスアクセレータは、ベクトルグラフィックを通してコマンドストリング(2)を処理するように設計されている。しかしながら、3Dグラフィックアクセレータは、しばしば要素とよばれているごく小さな少ない地理的オブジェクトを処理する。線は要素ではないのに対して、四角形、三角形、n角形は要素の例である。現存の3Dグラフィックアクセレータは、コマンドストリング(2)を直接処理するようには設計されていない。
装置が2Dグラフィックアクセレータを欠き、3Dグラフィックアクセレータを含む場合、装置の画面上で見られる全てのオブジェクトは実際に要素で作られている。要素の境界は、直線セグメントを構成する。要素境界の唯一の線セグメントを描画することは、直線を生成する。したがって、情報はコマンドストリング(2)に含まれ、要素を形成し、次に、3Dグラフィックアクセレータは要素を処理し、直線をコマンドストリング(2)の直線にフィットするように直線を引き出す。
種々の要素のレビューの後、三角形要素が3Dグラフィックアクセレータ108によって直線に処理されるための公的な候補として表われる。各3Dオブジェクトは三角形に分割されるが、三角形は三角形以外の何にも分割されない。3D空間における三角形は、また、2D空間における三角形である。扱われることは少ないので、三角形の描画は、より高次元のポリゴンの描画によりも、大変簡単である。コンピュータグラフィックスにおいて三角形が共通に使用されるいくつかの理由がある。
三角形は、3辺を有し、したがって、3つの点或いは3つの頂点で構成されている。色の値(あるいはインデックス)或いはテクスチャインデックスのような他の情報は別として、三角形の各頂点は三角形点の座標を含む。3D空間において定義された三角形を2D(画面)空間に変換するために、三角形の頂点が3Dから2D空間に投影され、次に、描画される。
3Dグラフィックアクセレータが要素のみを処理することができる場合に、第3の点が、3つの点が三角形要素を形成するように、例示である始点(1.51,2.21)及び終点(3.15,4.48)とともに提供される。ステップ306では、システムプロセッサ102は、3つの点が三角形要素を形成するように、第3の点を選択することを開始し、ステップ304の命令に加える。
三角形内に位置するピクセルを描画する際に、三角形の頂点に与えられた値は、本質的に重み付けされた平均を各描画されたピクセルに与える。例えば、与えられたピクセルでの計算された赤色(及び表示された)は、各3つの頂点からの与えられたピクセルの距離及び各頂点での拡散赤色(R)の属性値によって影響される。ピクセルが頂点に近づくほど、頂点の赤色属性が大きくなり、そのピクセルに影響を与える。
好ましくは、第3の点の属性値は直線200に沿ったピクセルの計算された属性値にあまり影響がないように選択される。例えば、第3の点の属性値が直線200の始点及び終点の属性値の平均となるように選択された場合には、第3の点の属性値は直線200に沿ったピクセルの計算された属性値にあまり影響がない値をとる。
二等辺三角形は長さの等しい少なくとも2つの脚を持つ三角形である。2つの脚によって形成された頂点は、ベースに向きあう。二等辺三角形の頂点の座標(x2,y2)は、二等辺三角形のベースの始点(x0,y0)及び終点(x1、y1)から等距離である。さらに、この頂点がベースの中点を二等分する線はベースに対して直交する。このような線はベースの中点から始まり、垂直に延び、同時に三角形の外周及びエリアを二等分し、”B−線”として参照される。
直線200を二等辺三角形要素に組み込み、頂点(x0,y0)及び頂点(x1,y1)における属性値の平均となる頂点(x2,y2)における属性値における属性値を選択することにより、頂点(x2,y2)における座標及び属性値が直線200に沿ったピクセルの計算された属性値にあまり影響を与えない。もし、真であれば、コマンドストリング(2)を着目された二等辺三角形に組み込むことにより、コマンドストリング(2)に基づいて、直線が3Dグラフィックアクセレータ108によって描かれる。この真実は、数学的に次のように示される。
図4は、二等辺三角形400の平面図を示す。二等辺三角形400はベース402、脚404、406を含み、脚404の長さ”b”は脚406の長さ”b”に等しい。二等辺三角形400は、さらに、頂点408、頂点410及び頂点412を有し、頂点412は長さ”a”を有するベース402に向かってオープンする。中点(xm,ym)は、頂点408及び頂点410の間の長さ”a”に沿って正確に半分の位置に存在する。さらに、B−線416は中点414から高さ”h”にそって頂点412に延びる。図4の例においては、ベース402は3Dグラフィックアクセレータ108によって描画され、表示装置118に表示される直線セグメントである。
二等辺三角形400内に配置された各ピクセルは、属性Kを有し、属性α、R,G、B、RS、GS、BS、u及びvを有する。各頂点408、410、412の属性値の値は、それぞれ、K0、K1、K2によって表わされる。したがって、二等辺三角形400の内部で、画面空間におけるx,y位置のリニア二変数関数Kは下記のようになる。
K(x, y) = (Ak)(x) + (Bk)(y) + Ck (3)
ここで、
K=α,R,G,B,RS、GS、BS、u及びv
(x、y)は1つの画面ピクセルについての画面空間座標
Ak,Bk及びCkはリニア係数を示している。
所与のx,y画面空間座標のリニア係数Ak,Bk及びCkは頂点408、410、412に関連付けられた式によって得られる。描画アルゴリズムを採用し、所与のx,y画面空間座標のリニア係数Ak、Bk及びCkを決定することにより、特定のピクセル属性値が式(3)に従った対応するx,y画面空間座標で得られる。
リニア係数Ak,Bk及びCkの頂点408、410、412に関連付けられた式は、下記を含む。
Ak = [(A0)(K0) + (A1)(K1) + (A2)(K2)]/Area (4)
Bk = [(B0)(K0) + (B1)(K1) + (B2)(K2)]/Area (5)
Ck = [(C0)(K0) + (C1)(K1) + (C2)(K2)]/Area (6)
ここで、二等辺三角形のエリアは、
エリア = (1/2)(a)(h) = (1/2)(a)[(b^2)-(1/4)(a^2)]^(1/2) (7)
リニア係数は、以下のように示される。
A0 = y1-y2 A1 = y2-y0 A2 = y0-y1 (8)
B0 = x2-x1 B1 = x0-x2 B2 = x1-x0 (9)
C0 = (x1)(y2)-(x2)(y1) C1 = (x2)(y0)-(x0)(y2) C2 = (x0)(y1)-(x1)(y0) (10)
3次元描画アルゴリズムは、式(3)、(4)、(5)、(6)を含む。上述のように、K2の属性値(例えば、第3番目の点の属性値)がK0及びK1の属性値の平均となるように選択された場合、K2の属性は、ベース402に沿ったピクセルの計算された属性値K(x,y)にあまり影響を与えない。数学的に、このことは以下のように表わされる。
K2 = (K0 + K1)/2 (11)
描画のために選択される三角形は二等辺三角形であるので、式(8)、(9)、(10)におけるy2の値はy0及びy1の観点から表現される。図4のようにx0=x1となるように、二等辺三角形400の位置を定めることによって、y2は単純に以下のように表わされる。
y2 = (y0 + y1)/2 (12)
ここで、
Ak = [(A0)(K0) + (A1)(K1) + (A2)(K2)]/エリア (4)
式(8)を式(4)に代入して、
Ak = [(y1-y2)(K0) + (y2-y0)(K1) + (y0-y1)(K2)]/エリア (13)
式(11)を式(13)に代入して、
Ak = [(y1-y2)(K0) + (y2-y0)(K1) + (y0-y1)((K0 + K1)/2)]/エリア (14)
式(12)を式(14)に代入して、
Ak = [(y1-(y0 + y1)/2)(K0) + ((y0 + y1)/2-y0)(K1) +
(y0-y1)((K0 + K1)/2)]/エリア (15)
乗除算をすると、
Ak = [(K0)(y1)-.5(K0)(y0)-.5(K0)(y1) + .5(K1)(y0) + .5(K1)(y1) -(K1)(y0) +
.5(K0)(y0)-.5(K0)(y1)+.5(K1)(y0)-.5(K1)(y1)]/エリア (16)
並べ替えて、
Ak = [-.5(K0)(y0)+.5(K0)(y0) + (K0)(y1)-.5(K0)(y1)-.5(K0)(y1)+
.5(K1)(y0)-(K1)(y0)+.5(K1)(y0)+ .5(K1)(y1)-.5(K1)(y1)]/エリア (17)
或いは
Ak = [0]/エリア = 0 (18)
上述のように、
K(x, y) = (Ak)(x) + (Bk)(y) + Ck (3)
式(18)を式(3)に代入して、
K(x, y) = (0)(x) + (Bk)(y) + Ck (19)
或いは
K(x, y) = (Bk)(y) + Ck (20)
二等辺三角形を利用し、K2をK0及びK1の平均値に等しくなるように設定することにより、A(k)量は式(3)からドロップアウトし、式(20)に示すようなyのみの一変量関数であるK(x,y)の値を生成する。これは望まれるべき結果であり、(x0,y0)或いは(x1,y1)から(x2,y2)の距離或いは、K2の属性値がベース402に沿った属性値、描かれるために選択された直線セグメントに影響を与えるものでもない。
上述のように、システムプロセッサ102はステップ306において第3の点を選択することを始め、3つの点が三角形を形成するようにステップ304の命令に加える。
直線200の開始点(x0,y0)=(1.51,2.21)及び終点(x1,y1)=(3.15,4.48)では、コマンドストリング(2)から、直線200の中点(xm,ym)は
(xm, ym) = ((x1+x0)/2, (y1+y0)/2) (21)
(xm, ym) = (2.33, 3.35) = ((1.51+3.15)/2, (2.21+4.48)/2)
線方程式の傾斜、始点(1.51,2.21)及び終点(3.15,4.48)を使用することにより、直線200の傾斜は、
m = (y1-y0)/(x1-x0) (22)
1.38= (2.21-4.48)/(1.51-3.15)
直線200のy−交点”b”を求めるために、一般線方程式が使用される。
y = mx + b or b = y - mx (23)
b = 2.21 - 1.38(1.51)
b = 0.12
傾斜m=1.38とすると、直線200の線方程式は、
y = 1.38x + 0.12 (24)
直線200(ベースの距離)の長さは、
距離 = [(x1-x0)^2+(y1-y0)^2)]^(1/2) (25)
2.80 = ((1.51-3.15)^2 + (2.21-4.48)^2))^(1/2))
直線200の中点を通過する垂線の傾斜mは、直線200の傾斜の負の逆であり、ここではm=1.38である。したがって、直線200の中点を通過する垂線の傾斜mは、−0.72(=(1/1.38))である。直線200の中点を通過する垂線のy−交点は、3.35(−.072)(2.33)+b、或いはb=5.03のように式(23)から得られる。したがって、第3の点(x2,y2)は下記式の線に沿った点である。
y2 = -0.72(x2) + 5.03 (26)
図5は、直線500として再度描かれた直線200の平面図である。直線500は、始点502と終点504との間に存在し、中点506(xm,ym)を含む。線508は、中点504を通る直線200の垂直二等分線として位置する。上述のように、第3の点(x2,y2)は式26:y2=−0.72(x2)+5.03に従った線に沿った点である。加えて、図1の表示装置118の左上コーナから描画が右から左に、そしてトップからボトムの方向へ開始し、描画処理が直線500の位置を決定することを可能にすることが望ましい。直線500の始点502がどこに存在するかを決定する1つの方法は、計画された二等辺三角形内の描画処理によって認識される第1のピクセルが直線500の(x0,y0)始点に関連付けられたピクセル、すなわち、点502となるように第3の点が選択される。
図6A、6B、6C及び6Dは、4つのレンダリングされる直線が位置することができる4つの配置を示す図である。図6Aは、垂直位置における直線602の平面図である。図6Bは、水平位置における直線606の平面図である。図6Cha、右下がりの傾斜位置における直線610の平面図である。図6Dは、左下がりの傾斜位置における直線612の平面図である。
図6Aにおいて、始点(x0、y0)の座標x及び直線602の終点(x1,y1)の座標xは等しい(すなわち、x0=x=1)。ここでは、仮に、y2が垂直に直線602を二等分する線に沿って位置する場合、すなわち、y2=(y1+y0)/2の場合、二等辺三角形が形成される。さらに、x2が直線602の始点(x0,y0)の座標xの値よりも大きい場合、左から右、トップからボトムまで描画処理が、提案された二等辺三角形内の他のピクセルに届く前に、始点(x0,y0)(図6Aにおける点604)に関連付けられたピクセルに最初に届く。
何故ならば、描画処理は作業するためのエリア、x2≠x0を必要とし、以下が成立する。図6Aにおいて、x0=x1である。x2=x0の場合、x0=x1=x2であり、これにより、直線を3Dグラフィックアクセレータ108に処理のために呈示する。3Dグラフィックアクセレータ108は、三角形を処理するものであり、以下の理由からこのような直線を処理しない。x2=x0の場合、X0=x1=x2であり、三角形要素のエリアはゼロと等しい(すなわち、h=0)。エリアがゼロの場合、式(4)、(5)、(6)のゼロエラーによって分割される結果となり、したがって、どんな直線の描画も防がれる。したがって、x2≠x0である。
x2が直線602の始点(x0,y0)のx座標の値よりも小さい場合がある。直線602は描画処理が、提案された二等辺三角形内の他のピクセルに届く前に始点(x0,y0)(図6Aの始点604)に関連付けられたピクセルに最初に届くことを許可する。しかしながら、x2<x0の場合の許可しうるx2の決定はさらなる計算時間及びプロセッサ時間を必要とする。したがって、図6Aのような直線を有するシナリオにおける第3の点の選択の一部としての好ましいx2は、x0よりも大きい(すなわち、x2>x0)。
図6Aのような直線を有するシナリオにおける第3の点の選択がさらに詳細に論じられる。仮に、第3の点の座標x2が選択され、比較的簡単な式(4)、(5)及び(6)のエリア計算が行なわれ、このことは処理時間を節約し、その結果、電力消費を節約する。上述の式(7)から、二等辺三角形のエリアは、
エリア = (1/2)(a)(h) (7)
ここで、”a”は直線602の長さであり、hは直線602の中点から第3の点に延びるB−線の長さである。hは、2/aに等しく設定され、エリア=1.00となる。したがって、電力を節約する一つの方法は、実際にエリアを計算することなくエリアを1に等しく設定することである。
図6Aの直線602の長さ”a”はy1−y0に等しい。さらに、図6Aの提案された二等辺三角形の高さ”h”はx2−x0に等しい。言い換えれば、
h = 2/a (27)
そのため、
x2 - x0 = 2/(y1-y0) (28)
或いは
x2 = x0 + 2/(y1-y0) (29)
上記の要約は、
x0=x1の場合に、
If x0 = x1, then let x2 = x0 + 2/(y1-y0) and y2 = (y1+y0)/2 (30)
図6Bでは、始点(x0,y0)の座標y及び直線602の終点(x1,y1)のy座標は等しい(或いは、y0=y1)。ここで、直線602を垂直に等分する線、すなわち、x2=(x1+x0)/2に沿ってx2が位置する場合に、二等辺三角形が形成される。さらに、y2が直線602の始点(x0,y0)のy座標の値よりも大きい場合、左から右、トップからボトムまで描画処理が、提案された二等辺三角形内の他のピクセルに届く前に、始点(x0,y0)(図6Bにおける点608)に関連付けられたピクセルに最初に届く。図6Aにおいて適用されたものと同じロジックである。
If y0 = y1, then let y2 = y0 + 2/(x1-x0) and x2 = (x1+x0)/2 (31)
図6Cにおいて、直線610の始点(x0,y0)のy座標及び終点(x1,y1)のy座標が等しくない(或いは、y0≠1)。加えて、x0<x1である。図6A及び図6Bにおいても同様に、第3の点(x2,y2)が、直線610を垂直に二等分する線に沿って位置する線に位置する場合に二等辺三角形が形成される。図6Cの点612を含むピクセルが他のピクセルの前に最初に描画されることを保証するために、y2はy0よりも小さくないべきであり、x2はx0よりも小さいべきである。言い換えれば、
If y0 ≠ y1 & x0 < x1, let y2 ≧ y0 and x2 ≧ x0 (32)
電力省力化方法を計算するために、比較的シンプルな図6Cにおいて配置されているような直線について提案されている二等辺三角形のエリアを形成することが望ましい。式(27)から、このことは、
h = 2/a (27)
図5の直線500は図6Cの直線シナリオにフィットし、この提案を調査するための良い例として取り扱う。
直線200(直線500)の長さ”a”は式(25)から2.8として計算されたことをリコールする。h=2/(2.80)である場合に、このような二等辺三角形のエリアはある値を有する。さらに、式(24)から、直線500は式(26)から線方程式y2=-0.72(x2)+5.03によって定義される。
h=2/(2.80)であり、線方程式y2=-0.72(x2)+5.03及び直線500の中点を通る垂線上のある点、すなわち、(2.33,3.35)=(xm,ym)(図5)では、(x2,y2)が式(25)によって見つけられ、以下のように書き直される。
h = [(x2-xm)^2+(y2-ym)^2)]^(1/2) (33)
2/(2.80) = [(x2-2.33)^2+(y2-3.35) ^2)]^(1/2) (34)
ここで、
y2 = -0.72x2 + 5.03
式(34)に代入して、
(2/(2.80))^2 = (x2-2.33) ^2+((-0.72x2 + 5.03)-3.35)^2
0.51 = (x2-2.33)^2 + ((-0.72x2 + 1.68)^2
0.51 = [(x2)^2-4.66x2+5.43] + [0.52(x2)^2-2.42x2+2.82]
0.51 = 1.52(x2)^2-7.08x2+8.25
0 = 1.52(x2)^2-7.08x2+7.74
両辺を1.52で除すると、
0 = (x2)^2-4.66x2+5.09
この多項式を整数で因数分解すると、以下の式が得られる。
0 = (x2-2.91)(x2-1.75)
x2 = 2.91 or x2 = 1.75
図6Cにおいて配置された直線についてx2≧x0であることをリコールする。図5の直線500について、x0=1.51である。従って、この場合においては、x2は2.91或いは1.75のいずれか一方である。x2が2.91(x2=2.91)に設定された場合,y2=2.93=-0.72(2.91)+5.03であるので、
(x2, y2) = (2.33, 2.93) (35)
計算電力を省力化する他の方法は、図6Cにおける配置について、x2=x0 或いはy2=y0とすることである。y2=y=0の図5における直線200について、x2は、単に線508の式から以下のように計算される。
y2 = 2.21 = -0.72x2 + 5.03
x2 = 3.90 = (2.21 − 5.03)/(-0.72)
故に、
(x2, y2) = (3.90, 2.21)
図6Cにおける配置についての第3の点の座標(x2,y2)の単純な計算のトレードオフは、図6Cの二等辺三角形のエリアを決定するために必要とされるより大きな計算である。図6Cに関しては、上述のことは以下のように要約される。
If y0 ≠ y1 and x0 < x1, let y2 ≧ y0 and x2 ≧ x0 and
let (エリア = 1 or y2 = y0 or x2 = x0) (36)
図7は、上記式(35)において(x2,y2)=(3.90,2.21)に設定された第3の点704とともに描かれた二等辺三角形702の平面図である。二等辺三角形702は、始点502及び終点504との間の直線500を含む。
図6Dにおいて、始点(x0,y0)のy座標及び直線610の終点(x1,y1)のy座標は等しくない(すなわち、y0≠y1)。加えて、x0>x1である。図6Cも同様に、第3の点(x2,y2)が直線614を垂直に二等分する線に沿って位置する場合に、二等辺三角形が形成される。図6Dの点616を含むピクセルが他のピクセルよりも前に最初に描画されることを保証するために、y2はymよりも大きいべきであり、x2はxmよりも大きいべきである。言い換えれば、
If y0 ≠ y1 and x0 > x1, let y2 > (y1+y0)/2 and x2 > (x1+x0)/2 (37)
図6Cの直線において、計算電力を省力化するための同様の選択が図6Dの直線の処理のために行なわれる。式(37)に加えて、エリアを1(エリア=1)に設定することは、エリアを計算するプロセッサの計算負荷を緩和する。しかし、第3の点(x2,y2)の座標を決定するプロセッサの計算負荷を増大する。このことは、以下のように要約される。
If y0 ≠ y1 and x0 > x1, let y2 > (y1+y0)/2 and x2 > (x1+x0)/2 and
let (エリア = 1 or y2 = y1 or x2 = x0) (38)
一般的に、図1のシステムプロセッサ102は、その三角形要素の第3の点(x2,y2)の座標及び三角形要素のエリアの双方を決定する。1つのシステムプロセッサは、三角形要素の第3の点の座標を計算することよりも三角形要素エリアを計算するほうがより効率的であり、このような効率性はエリア=1を式(38)のデフォルトとすることにより活かされる。ステップ302においてシステムプロセッサ102が入力を受信し、3つの線、y0≠y1及びx0>x1を生成し、配置する場合に、システムプロセッサ102は第1の線についてエリア=1とし、第2の線についてy2=y1とし、第3の線についてx2=x0とする。このような方法で、システムプロセッサ102は、全ての3つの線についてエリア=1である場合に、より多くの処理回路を利用することができる。
図6A乃至図6Dを通しての式は、第3の点(x2,y2)の選択のための以下の式を含むように要約される。
If x0 = x1, then let x2 = x0 + 2/(y1-y0) and y2 = (y1+y0)/2 (30)
If y0 = y1, then let y2 = y0 + 2/(x1-x0) and x2 = (x1+x0)/2 (31)
If y0 ≠ y1 and x0 < x1, let y2 ≧ y0 and x2 ≧ x0 and
let (area = 1 or y2 = y0 or x2 = x0) (36)
If y0 ≠ y1 and x0 > x1, let y2 > (y1+y0)/2 and x2 > (x1+x0)/2 and
let (area = 1 or y2 = y1 or x2 = x0) (38)
システムプロセッサ102が図3の方法300におけるステップ306での第3の点の選択を開始し、3つの点が三角形を形成するようにステップ304の命令を追加することをリコールする。ステップ308では、方法300は第3の点(x2,y2)の座標の選択を開始する。
式(30),(31),(36)及び(38)は第3の点(x2,y2)の座標の選択に使用される。ステップ310では、方法300がx0=x1であるかを決定する。x0=x1である場合には、方法300は、ステップ312でx2=x0+2/(y1-y0)及びy2=(y1+y0)/2とする。x0≠x1である場合には、方法300はy0=y1であるかをステップ314で決定する。y0=y1である場合には、方法300はステップ318に進み、直線500の垂直二等分線の式を得る。方法300は、さらに、ステップ314からステップ320へ進む。
ステップ320では、y0≠y1及び方法300はx0<x1であるか否かを決定する。ステップ320でx0<x1でないと判断された場合には、方法300はステップ322でy2≧y0及びx2≧x0とする。ステップ324では、方法300はさらにエリア=1 或いはy2=y0 或いはx2=x0とする。ステップ320でx0がx1よりも小さくないと判断された場合、方法300はステップ326に移る。ステップ326では、y0≠y1 及びx0>x1である。ステップ328では、方法300はy2>(y1+y0)/2及びx2>(x1+x0)/2とする。ステップ330では、方法300はエリア=1或いはy2=y1或いはx2=x0である。
ステップ318、ステップ324及びステップ330から、方法300はステップ332に進む。ステップ332では、第3の点の座標値(x2,y2)を引き出すために方法300はステップ318において取得された線方程式、ステップ324或いはステップ330からの適切な入力を採用する。ステップ312、316及びステップ332から方法300はステップ334に移行する。ステップ334では、方法300は第3の点の座標値(x2,y2)を格納する。
ステップ308における第3の点(x2,y2)の座標の選択を開始するためのステップ306からの処理に加えて、方法300はさらにステップ306からステップ336にすすむ。ステップ336では、方法300は第3の点(x2,y2,K2)についての属性値K2を選択する。方法300は、選択された属性値が直線200に沿ったピクセルの計算された属性値に影響を与えないように、第3の点(x2,y2,K2)についての属性値K2を選択する。例えば、頂点(x2,y2)に割り当てられる属性K2を決定するために、コマンドストリング(2)及び式(11)の各属性の平均値が利用される。
draw_line (x0, y0, K0, x1, y1 K1) (1)
draw_line (1.51, 2.21, 8α, 240R, 0G, 56B, 23RS, 0GS, 0BS, 4u, 256v,
3.15, 4.48, 45α, 210R, 0G, 7B, 99RS, 180GS, 45BS, 0u, 16v) (2)
K2 = (K0 + K1)/2 (11)
コマンドストリング(2)の拡散色アルファ(”α”)平均値は26.5(=(8+45)/2)である。コマンドストリング(2)の拡散色の赤(”R”)は275(=(240+210)/2)である。コマンドストリング(2)の拡散色の緑(”G”)は0(=(0+0)/2)である。式(35)の座標を利用し、残存する属性を計算することにより、第3の点(K2)についての頂点コマンドストリングは、
vertex_K2(3.90, 2.21, 26.5α, 275R, 0G, 31.5B, 61RS, 90GS, 22.5BS, 2u, 136v) (39)
代替的な実施の形態においては、システムプロセッサが、ステップ302で三角形(x0,y0,k0),(x1,y1,k1),(x2’,y2’,k2’)を定義した情報及び三角形のエッジを直線で描画するための要求を受信した場合に、K2’の属性値がK2=(K0+K1)/2のようなK2を引き出すように調整されることが可能である。
ステップ338では、方法300はステップ336で引き出された属性K2を有するステップ334での(x2,y2)座標を頂点_K2コマンドストリングに結合する。同時に、コマンドストリング(2)及びコマンドストリング(39)は、図7の二等辺三角形702を補償する。ステップ340では、方法300はステップ304での命令及び頂点_K2コマンドストリングを組み合わせ、二等辺三角形要素を補償する。ステップ342では、図面プロセッサ114が二等辺三角形要素702を受信する。
図8は、二等辺三角形要素702を発展するための方法800である。境界ボックスアルゴリズムが図7の二等辺三角形要素702を描くのに使用される。境界ボックス902は、直線500について設置される。境界ボックス902が直線500の始点502及び終点504の位置に基づいて(Xmin,Ymin)及び(Xmax,Ymax)を得ることによって設置される。(Xmin,Ymin)及び(Xmax,Ymax)は(x0,y0)及び(x1,y1)のラウンドされたスケールの整数である。ステップ802では、方法800は(Xmin,Ymin)及び(Xmax,Ymax)を得る。ステップ804では、境界ボックス902は(Xmin,Ymin)及び(Xmax,Ymax)を利用する直線500について配置される。
図9は直線500について配置される境界ボックス902を有する三角形702の平面図である。x及びyについての最小値及び最大値をラウンドし、画面空間座標に対するモデル空間座標をスケーリングし、その結果、境界ボックス902が(Xmin,Ymin)(=(15,22))904及び(Xmax,Ymax)(=(32,45))906に配置される。
図9の直線500を描画することは、本質的に、直線500が通過するこれらピクセルを照明する補間処理である。しかしながら、画面空間整数に対するモデル空間座標値をラウンドすることが、特に、比較的少ないピクセルを有するセル電話のような低解像度表示画面では、直線が階段状外観(stair steps appearance)(しばしば、”ジャギー”と呼ばれる。)で表示される。従って、このジャギーを最小化するシェーディング或いはブレンディング提供するために直線500が通過するピクセルの近くのピクセルを照明することは重要である。
図9の二等辺三角形の内部では、画面空間における(x,y)位置のリニア関数Kは、
K(x, y) = (Ak)(x) + (Bk)(y) + Ck (3)
ここで、
K = α, R, G, B, RS, GS, BS, u, 及び v;
(x, y)は、1つの画面ピクセルの画面空間座標を示しており、
Ak, Bk, 及び Ckは、リニア係数を示している。
リニア係数A,B,Cは式(4),(5),(6)によって取得され、これらは3つの頂点502、504及び704に関連付けられている。係数A,B,Cを得ることによって、式(3)に従ったいずれの所望の画面空間(x、y)位置での属性値を得ることができる。
式(3)に基づいて、ピクセル毎に各属性値を直接評価することは、2つの乗算器及び2つの加算器を必要とし、このことは、非常に高価なソリューションである。望ましくは、アルゴリズムベースの境界ボックスが、加算(”+”)動作のみで直線500近傍のピクセルを描画するために使用される。加算動作のみを利用するアルゴリズムベースの1つの境界ボックスはエッジ式を利用する。三角形の3つのエッジは、プレーナー(アフィン)関数によって表現される。このプレーナー関数は、エッジの左に対して負であり、エッジの右に対して正であり、エッジ上ではゼロである。
E0(x,y) = (A0)(x) + (B0)(y) + C0 (39)
E1(x,y) = (A1)(x) + (B1)(y) + C1 (40)
E2(x,y) = (A2)(x) + (B2)(y) + C2 (41)
上記3つの式(39),(40),(41)は、6つの乗算及び6つの加算動作を必要とし、これらはかなり高価である。各式(39),(40)及び(41)の点(x+1,y)から点(x,y)を減算し、結果式は単に加算演算を使用する。例えば、式(39)について、
E0(x+1,y) = (A0)(x) + (A0) + (B0)(y) + C0
-E0(x,y) = -(A0)(x) - (B0)(y) - C0
E0(x+1, y) - E0(x,y) = A0 (42)
同様に、B0についての式が得られる。
E0(x, y+1) - E0(x,y) = B0 (43)
言い換えれば、一度、最初のエッジ関数E0,E1,E2がピクセル(Xmin,Ymin)について決定される。そして、+x方向の同じ水平スキャン線上の右に対して次のピクセルについてのエッジ関数が、A0を加えることによって得られ、+y方向の同じ垂直線上より下の次のピクセルについてのエッジ関数がB0を加えることによって得られる。
Ei(Xmin, Ymin) = (Ai)(Xmin) + (Bi)(Ymin) + C0, where (i = 0, 1, 2) (44)
及び
Ei(Xmin + 1, Ymin) = Ei + A0, where (i = 0, 1, 2) (45)
Ei(Xmin, Ymin +1) = Ei + B0, where (i = 0, 1, 2) (46)
描画処理は、さらに追加的な式を通して左或いは上へ移動する。
Ei(Xmin - 1, Ymin) = Ei - A0, where (i = 0, 1, 2) (47)
Ei(Xmin, Ymin -1) = Ei - B0, where (i = 0, 1, 2) (48)
方法800に戻る。方法800は、ステップ806で境界ボックス902の左上ピクセルでの3つのエッジ式についての初期値を計算する。本例において、境界ボックス902の左上ピクセルがピクセル904である。式(44)はピクセル904の3つのエッジ式の初期値を計算するために用いられる。
ステップ808では、方法800は境界ボックス902の左上ピクセル904から次のピクセル908へ右へ向かって動く。ステップ810では、方法800は、ピクセルについてのE0がゼロであるか否かについて決定する。ピクセルについてのE0がゼロでない場合には、次に、方法800が、ステップ812で、右のピクセルへ移動し、ステップ810へ戻る。
三角形のE0エッジがエッジ上の0であるプレーナー(アフィン)関数によって表わされることをリコールする。E0=0である場合、方法800は(x0,y0)を含むピクセルに到達する。そのピクセルのE0がゼロに等しい場合、方法800はピクセルが直線500の始点502(x0,y0)を含むステップ814を終了する。ステップ816で、方法800はピクセルを描画するかを決定する。
全てのピクセルが直線500を照明するわけではない。いくつかのピクセルはシェーディング或いはブレンディングを提供し、他のピクセルは直線500の直接指示を提供する。しかしながら、境界ボックス902内の大部分のピクセルは、おそらく直線500を照明せず、したがって、描画されることもない。境界ボックス902内のピクセルをスキップすることによって、直線500が描画される速度が増大する。
図10は二等辺三角形702の平面図である。三角形の3つのエッジがプレーナー(アフィン)関数によって表わされることをリコールする。プレーナー関数は、エッジの左では負であり、エッジの右では正であり、エッジ上ではゼロである。二等辺三角形702の外側のピクセルが負符号”−”とともに示されており、直線500(エッジE0)に対して二等辺三角形702の内側のピクセルがプラス符号”+”とともに示されている。二等辺三角形702の周辺のエッジE0上のピクセルがゼロ”0”とともに示されている。式(39)、(40)、及び(41)が各ピクセルの−,+,0を決定するために使用される。
与えられた水平或いは垂直のスキャン線のために、ゼロ(”0”)ピクセルのすぐ隣の負ピクセル或いは正ピクセルのみが直線500を照明する。さらに、図10内に含まれているものは境界1002である。境界1002内は、直線500の表示に本質的に影響を有する全てのピクセルである。境界1002の外側は、直線500の表示に影響を及ぼさない全てのピクセルである。直線500の効率的な描画は境界1002内に位置するピクセルのみの描画を評価する。
ステップ814で位置する始点(x0,y0)については、方法800はゼロ(”0”)ピクセルのすぐ隣の負ピクセル及び/又は正ピクセルの描画を評価する。ステップ818では、方法800はEi((x0)−1,y0)の3つのエッジ式の値を計算し、ピクセルを描画するかどうかを決定する。ステップ822では、方法800はEi((x0)+1,y0)の3つのエッジ式の値を計算し、そのピクセルを描画するかどうかを決定する。
ステップ824では、方法800は水平増加値f=0及び垂直増加値g=1をセットする。水平増加値f=0及び垂直増加値g=1をセットすることにより、そのピクセルを評価するために、方法800は垂直方向下に1ピクセル分移動する。ステップ826では、方法800は(x0+f,y0+g)=(x1,y1)であるか否かを決定する。(x0+f,y0+g)が(x1,y1)と等しい場合、次に、方法800は直線500の終点504を含むピクセルに到達し、ステップ854に進む。(x0+f,y0+g)が(x1,y1)と等しくない場合、方法800は直線500の終点504を含むピクセルに到達しない。
(x0+f,y0+g)が(x1,y1)と等しくない場合、方法800は、ステップ828で、エッジ式Ei(x0+f, y0+g)の値が負、0、正であるかを決定する。
エッジ式Ei(x0+f, y0+g)の値が負の場合、ステップ830で、方法800はエッジ式Ei(x0+f, y0+g)の値を計算し、ピクセルを描画するか否かを決定する。ステップ832では、方法800はエッジ式Ei(x0+f+1, y0+g)の値を計算し、そのピクセルを描画するかを決定する。ステップ834では、方法800は、エッジ式Ei(x0+f+2, y0+g)についての値を計算し、ピクセルを描画するか否かを決定する。
ステップ836では、f=f+1及びg=g+1に設定し、方法800はステップ826に戻る。
エッジ式Ei(x0+f+1, y0+g)の値がゼロである場合には、方法800は、ステップ838で、エッジ式Ei(x0+f-1, y0+g)についての値を計算し、ピクセルを描画するか否かを決定する。ステップ840では、エッジ式Ei(x0+f, y0+g)についての値を計算し、ピクセルを描画するか否かを決定する。ステップ842では、方法800はエッジ式Ei(x0+f+1, y0+g)についての値を計算し、ピクセルを描画するか否かを決定する。
ステップ844では、g=g+1を設定し、方法800はステップ826に戻る。
エッジ式Ei(x0+f+1, y0+g)の値が正である場合、方法800はステップ846でエッジ式Ei(x0+f, y0+g)についての値を計算し、ピクセルを描画するか否かを決定する。ステップ848では、エッジ式Ei(x0+f-1, y0+g)についての値を計算し、ピクセルを描画するか否かを決定する。ステップ850では、方法800は、エッジ式Ei(x0+f-2, y0+g)についての値を計算し、ピクセルを描画するか否かを決定する。
ステップ852では、f=f-1及びg=g+1を設定し、方法800はステップ826に戻る。
ステップ826において、(x0+f,y0+g)=(x1,y1)であると判断された場合、描画処理は直線500の終点504を含むピクセルに到達し、方法800は、ピクセルが直線500の終点504(x1,y1)を含むステップ854で終了する。
ステップ856では、方法800は3つのエッジ式Ei(x1, y1)についての値を計算し、ピクセルを描画するか否かを決定する。ステップ858では、方法800は3つのエッジ式Ei((x1)-1, y0)についての値を計算し、ピクセルを描画するか否かを決定する。ステップ860では、方法800は3つのエッジ式Ei(x1, (y0)+1)についての値を計算し、ピクセルを描画するか否かを決定する。ステップ862では、方法800は、3つのエッジ式Ei((x1)+1, y0)についての値を計算し、ピクセルを描画するか否かを決定する。
方法800は、与えられたピクセルについて描画しないことを決定した場合、その与えられたピクセルについての描画情報は図面メモリ112にはない。格納された描画情報は、直線グラフィックオブジェクトの2次元表現を定義する表示点のコンパイルされたセットを含む。本例においては、直線グラフィックオブジェクトは、図7のベース500である。
十分に描画された関連するピクセル及び図面メモリ112に格納されたビットマップ情報について、方法800は、ステップ864で、ビットマップ情報を図1のフレームバッファ116に渡す。ステップ866では、フレームバッファ116は、モデル空間線500の画面空間直線が表示される場合に、フレームバッファ116はビットマップ情報を表示画面118に渡す。
上記に加えて、方法800は、描画直線セグメントの階段状外観を平滑化するためのデジタル差分解析器(DDA)アルゴリズム及びBresenahm's線アルゴリズムのような追加的な装置レベルテクニックを利用する。デジタル差分解析器(DDA)アルゴリズム及びBresenahm's線アルゴリズムの双方は、線経路に沿ってピクセルの強さを調整することに基づく。
三角形702の全ての3つのエッジをテストする必要はない。テストに先立ち、エッジE0が三角形702のベースであることが既知であり、したがって、所望の線である。残りの2つのエッジは予め定められており、したがって、この情報は三角形702の残りの2つのエッジについて既知である。エッジE0をテストする際には、処理はまさにストラドル(またがり)の線であり、処理が残りの2つのエッジをクロスするか否かは処理において小さな差異を作る。残りの2つのエッジのうちの1つをクロスすることは、プロセスに線の終わりに到達したことを知らせるが、境界ボックスはすでにそのような決定を行なうような技術を提供する。したがって、エッジE0をテストすることのみが、線を描画するのに必要とされる。
図11は、いくつかの実施の形態が実現されたコンピュータシステム1100である。いくつかの実施の形態においては、開示された技術は、ハードコードされて、グラフィック製品専用のハードウェア製品及び/又はコンピュータ読み出し可能な媒体に格納されたコンピュータ読み取り可能な命令(ソフトウェア)で実現される。
コンピュータシステム1100は、バス1105、プロセッサ1110、システムメモリ1115、読み出し専用メモリ1120、永久記憶装置1123、入力装置1130、出力装置1135及び代替プロセッサ1140を有している。
バス1105は、全てのシステムバス、周辺バス及びチップセットバスをまとめて示しており、コンピュータシステム1100の多くの内部装置と通信化可能に接続する。例えば、バス1105はプロセッサ1110を呼び出し専用メモリ1120、システムメモリ1115及び永久記憶装置1125に通信可能に接続する。
呼び出し専用メモリ(ROM)1120は固定データ及び命令を格納し、これらはプロセッサ1110及びコンピュータシステムの他のモジュールによって必要とされる。永久記憶装置1125は、一方、読み出し及び書き込み可能なメモリであっても良い。この装置は、不揮発性メモリユニットであり、コンピュータシステム1100がオフの場合でああても命令及びデータを格納する。ある実施の形態は大容量記憶装置(磁気或いは光ディスク及びその対応するドライブなど)を永久記憶装置1125として使用しても良い。他の実施の形態は、リムーバブル格納装置(フロッピー(登録商標)ディスク或いはジップ(登録商標)ディスク及びその対応するドライブなど)を永久記憶装置1125として使用しても良い。
永久記憶装置1125と同様に、システムメモリ1115は読み出し及び書き込み装置であっても良い。しかしながら、記憶装置1125と異なり、システムメモリは、ランダムアクセスメモリ(RAM)のように揮発性読み出し及び書き込みメモリであっても良い。システムメモリは、プロセッサがランタイム時に必要とするいくつかの命令及びデータを格納する。
ある実施の形態においては、ここで述べられた方法を実行するのに必要とされる命令及び/又はデータは、システムメモリ1115、永久記憶装置1125、読み出し専用メモリ1120或いはこれら3つのどんな組み合わせに格納されても良い。例えば、種々のメモリユニットはアプリケーションの命令及び/又はアプリケーションによって生成されたグラフィックデータを含む。ある実施の形態においては、システムメモリ1115及び/又は永久記憶装置1125はキャッシュ及び/又はバッファを有する。
これら種々のメモリユニットから、プロセッサ1110は実行する命令及び、ここで述べられたプロセスを実行するためのプロセスのためのデータを検索する。ある実施の形態においては、プロセッサ1110は、オンーチップキャッシュ1112を利用し、プロセッサ1110によって最近アクセスされ、或いは生成されたデータを保持する。ある実施の形態においては、代替プロセッサ1140は、ここで述べられたプロセスを実行するための命令及びプロセスを実行する。
バス1105は、さらに入力装置1130及び出力装置1135へ接続する。入力装置1130はユーザに情報を通信することを可能とし、コンピュータシステム1100へのコマンドを選択することを可能とする。入力装置1130は、英数字キーボード及びカーソルコントローラを含む。出力装置1135はコンピュータシステム1100によって生成されたイメージをプリントし、表示することができる。出力装置はプリンタ及び陰極管(CRT)或いは液晶装置(LCD)のような表示装置を含む。
最後に、図11に示すように、バス1105はさらにコンピュータシステム1100を、例えば、ネットワークアダプタ(図示せず)を通してネットワーク1165に接続する。同様に、コンピュータシステム1100はコンピュータのネットワーク(ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(”WAN”)或いはインターネットなど)の一部であっても良く、ネットワーク(インターネットなど)のネットワークであっても良い。コンピュータシステム1100のコンポーネントの全て或いはいずれかが使用される。しかしながら、当業者であれば他のシステム構成もさらに使用することができることは明らかである。
現存する3Dグラフィックアクセレータルーチンの使用は線を生成するのに必要とされる電力を最小化する。このことは、セル電話及び時計のような低電力資源システムにおいて特に重要である。
多くの特定の詳細を参照しながら詳細が述べられている一方、当業者は、開示の精神を離れることなく詳細が特定のフォームに埋め込まれることが可能であることを認識するであろう。したがって、当業者であれば、開示された詳細が前述の図示した詳細に限定されるものではなく、むしろ添付した請求の範囲によって定義されるべきであることを理解できるであろう。
当業者は情報及び信号が種々の異なる技術及び技能のいずれかを利用することにより表わされることを理解するであろう。例えば、上述の記述を通して参照されるデータ、命令、コマンド、情報、信号、ビット、シンボル及びチップが電圧、電流、電磁波、磁界、磁粒子、光学フィールド、光学粒子、これらの組み合わせによって表現される。
当業者は、さらに、ここにおいて述べられた実施の形態に関連付けて述べられた種々の図示した論理ブロック、モジュール、回路及びアルゴリズムステップが電子ハードウェア、コンピュータソフトウェア或いはこれの組み合わせとして実現されることを認識するであろう。ハードウェア及びソフトウェアの交換可能性を図示するために、種々の実例となるコンポーネント、ブロック、モジュール、回路及びステップが、上述の一般的なそれらの機能の観点から述べられてきた。このような機能性がハードウェアとして、或いはソフトウェアとして実現されるか否かは特定のアプリケーション及び全体のシステムに課された設計条件に依存する。設計の当業者は各特定のアプリケーションについて種々の方法で述べられた機能性を実現することができるか、このような実現性の決定は開示された精神から離れることを引き起こすものとして解釈されるべきではない。さらに、方法ステップは開示の精神を離れることなく交換可能である。
ここにおいて述べられた実施の形態に関連して説明された種々の実例となる論理的なブロック、モジュール及び回路が、ここにおいて述べられた機能を実行するために設計された汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)或いは他のプログラマブル論理装置、個別ゲート或いはトランジスタロジック、個別ハードウェアコンポーネント、或いはこれらのいずれの組み合わせで実現され、或いは実行される。汎用目的プロセッサは、マイクロプロセッサでも良いが、代替的に、プロセッサはどんな通常のプロセッサ、コントローラ、マイクロコントローラ或いはステートマシーンであっても良い。プロセッサは、さらに、計算装置、例えば、DSP及びマイクロプロセッサの組み合わせ、複数のマイクロプロセッサ、DSPコアに関連する1つ以上のマイクロプロセッサ或いは他の構成でも実現される。
ここにおいて述べられた実施の形態に関連して述べられた方法或いはアルゴリズムのステップは、直接、プロセッサによって実行されるハードウェア或いはソフトウェアモジュール、或いはこれらの組み合わせに埋め込まれる。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD−ROM或いはこの分野において知られている他のいずれかの形式の記憶媒体に存在する。例示的な記憶媒体は、プロセッサに接続され、プロセッサは情報を記憶媒体から読み出し、記憶媒体へ書き込む。また、記憶媒体はプロセッサにとって必要なものである。プロセッサ及び記憶媒体はASIC内に存在する。ASICは、ユーザ端末内に存在する。また、プロセッサ及び記憶媒体はユーザ端末内における個別コンポーネントとして存在する。
開示された実施の形態の前述の記述は、当業者に与えられ、この記述を作成し、利用することを可能にする、これら実施の形態に対する種々の改良は、当業者にとって明らかに容易であり、ここにおいて述べられた一般的な原則は本開示の精神を離れることなく他の実施の形態に適用可能である。従って、本開示は、ここにおいて示された実施の形態に限定されることを意図するものではなく、ここにおいて述べられた原則及び新規な特徴と一致する最も広い観点に従うものである。
図1は、いくつかの実施の形態が改良されたシステム100である。 図2は、表示装置118上の画面空間において直線として描かれたモデル空間直線200を示す。 図3は、直線200から三角形要素を構築するための方法300のフローチャートである。 図4は、二等辺三角形400の平面図である。 図5は、直線500として再度描かれた直線200の平面図である。 図6Aは、垂直位置における直線602の平面図である。 図6Bは、水平位置における直線606の平面図である。 図6Cは、右斜下位置における直線610の平面図である。 図6Dは、左斜下位置における直線612の平面図である。 図7は、上述の式(35)における(x2,y2)=(3.90,2.21)にセットされた第3点704で描かれた二等辺三角形702の平面図である。 図8は、二等辺三角形要素702を展開する方法800である。 図9は、直線500について位置された境界ボックス902を有する三角形702の平面図である。 図10は、二等辺三角形702の平面図である。 図11は、いくつかの実施の形態が改良されたコンピュータシステム1100である。

Claims (22)

  1. 3次元描画アルゴリズムを使用し、直線グラフィックオブジェクトの2次元表現を定義する表示点の組をコンパイルするプログラムを有するコンピュータ読み取り可能な記録媒体であって、前記プログラムは、コンピュータに、
    直線を定義するデータを受信させ、ここで、前記データは座標(x0, y0)及び属性K0を有する始点、及び座標(x1, y1)及び属性K1を有する終点を含み、
    座標(x2, y2)を有する第3の点の属性K2を選択させ、ここで、K2 = (K0 + K1)/2であり、
    第3の点についての座標(x2, y2)を選択させ、二等辺三角形要素を形成し、
    ここで、属性K2=(K0+K1)/2であり、座標(x0, y0), (x1, y1)及び(x2, y2)は二等辺三角形要素を形成し、座標(x0, y0), (x1, y1)は二等辺三角形要素のベースを定義するものであり、
    3次元描画アルゴリズムを使用して二等辺三角形要素を描画させ、前記二等辺三角形要素のベースの二次元表現を定義する表示点の組を取得させるコンピュータ読み取り可能な記録媒体。
  2. y0 ≠ y1でない場合に、第3の点についての座標(x2, y2)を前記コンピュータに選択させることは、前記ベースの垂直二等分線の式を前記コンピュータに取得させることを含む請求項1記載のコンピュータ読み取り可能な記録媒体。
  3. x0 = x1の場合に、x2及びy2がx2 = x0 + 2/(y1-y0) 及び y2 = (y1+y0)/2として定義される請求項1記載のコンピュータ読み取り可能な記録媒体。
  4. y0 = y1の場合に、x2及びy2がy2 = y0 + 2/(x1-x0) 及び x2 = (x1+x0)/2として定義される請求項1記載のコンピュータ読み取り可能な記録媒体。
  5. 前記二等辺三角形要素は領域を定義し、y0 ≠ y1 及び x0 < x1である場合に、x2及びy2がy2 ≧ y0 及び x2 ≧ x0として定義され、前記領域のうちの1つ、x2及びy2は、前記領域のうちの1つ=1、y2 = y0及び x2 = x0として定義される請求項1記載のコンピュータ読み取り可能な記録媒体。
  6. 前記二等辺三角形要素は領域を定義し、y0 ≠ y1 及び x0 > x1である場合に、x2 及び y2 がy2 > (y1+y0)/2 及び x2 > (x1+x0)/2 として定義され、前記領域のうちの1つ、x2及びy2は、前記領域のうちの1つ=1、y2 = y1及び x2 = x0として定義される請求項1記載のコンピュータ読み取り可能な記録媒体。
  7. 前記二等辺三角形要素を描画させることは、
    前記コンピュータに、
    始点(x0, y0)を含むピクセルを位置させ
    水平増加値f=0及び垂直増加値g=1を設定させ
    (x0+f, y0+g) = (x1, y1)であるかを決定させる請求項1記載のコンピュータ読み取り可能な記録媒体。
  8. (x0+f, y0+g) ≠ (x1, y1)である場合に、前記二等辺三角形要素を描画させることは、さらに、前記コンピュータに、エッジ関数E0=0であるピクセル、エッジ関数E0=0である前記ピクセルのすぐ左に位置するピクセル、エッジ関数E0=0である前記ピクセルのすぐ右に位置するピクセルのエッジ関数E0=0の値を計算させることをさらに具備する請求項7記載のコンピュータ読み取り可能な記録媒体。
  9. 前記二等辺三角形要素を描画することは、さらに、前記コンピュータに、エッジ関数E0=0であるピクセル、エッジ関数E0=0である前記ピクセルのすぐ左に位置するピクセル、エッジ関数E0=0である前記ピクセルのすぐ右に位置するピクセルを描画するか否かを決定させることをさらに具備する請求項8記載のコンピュータ読み取り可能な記録媒体。
  10. 3次元描画アルゴリズムを使用し、直線グラフィックオブジェクトの2次元表現を定義する表示点の組をコンパイルする装置において、
    直線を定義するデータを受信し、ここで、前記データは座標(x0, y0)及び属性K0を有する始点、及び座標(x1, y1)及び属性K1を有する終点を含み、座標(x2, y2)を有する第3の点の属性K2を選択し、ここで、K2 = (K0 + K1)/2であり、第3の点についての座標(x2, y2)を選択し、二等辺三角形要素を形成するシステムプロセッサと、
    三角形要素の3つの頂点(x0, y0, K0), (x1, y1, K1)及び(x2, y2, K2)を定義するデータを受信する図面メモリを有する3次元グラフィックアクセレータと、ここで、座標(x0, y0), (x1, y1)及び(x2, y2)は二等辺三角形要素を形成し、座標(x0, y0), (x1, y1)は二等辺三角形要素のベースを定義するものであり、
    前記グラフィックアクセレータは、さらに、3次元描画アルゴリズムを使用して二等辺三角形要素を描画し、前記二等辺三角形要素のベースの二次元表現を定義する表示点の組を得る図面プロセッサを有する装置。
  11. 直線グラフィックオブジェクトとしてのベースを表示する表示装置をさらに具備する請求項10記載の装置。
  12. x0 = x1の場合に、x2及びy2がx2 = x0 + 2/(y1-y0) 及び y2 = (y1+y0)/2として定義される請求項10記載の装置。
  13. y0 = y1の場合に、x2及びy2がy2 = y0 + 2/(x1-x0) 及び x2 = (x1+x0)/2として定義される請求項10記載の装置。
  14. 前記二等辺三角形要素は領域を定義し、y0 ≠ y1 及び x0 < x1である場合に、x2及びy2がy2 ≧ y0 及び x2 ≧ x0として定義され、前記領域のうちの1つ、x2及びy2は、前記領域のうちの1つ=1、y2 = y0及び x2 = x0として定義される請求項10記載の装置。
  15. 前記二等辺三角形要素は領域を定義し、y0 ≠ y1 及び x0 > x1である場合に、x2 及び y2 がy2 > (y1+y0)/2 及び x2 > (x1+x0)/2 として定義され、前記領域のうちの1つ、x2及びy2は、前記領域のうちの1つ=1、y2 = y1及び x2 = x0として定義される請求項10記載の装置。
  16. 3次元描画アルゴリズムを使用し、直線グラフィックオブジェクトの2次元表現を定義する表示点の組をコンパイルする装置において、
    直線を定義するデータを受信し、ここで、前記データは座標(x0, y0)及び属性K0を有する始点、及び座標(x1, y1)及び属性K1を有する終点を含み、座標(x2, y2)を有する第3の点の属性K2を選択し、ここで、K2 = (K0 + K1)/2であり、第3の点についての座標(x2, y2)を選択し、二等辺三角形要素を形成するシステムプロセッサと、
    三角形要素の3つの頂点(x0, y0, K0), (x1, y1, K1)及び(x2, y2, K2)を定義するデータを受信する手段と、ここで、座標(x0, y0), (x1, y1)及び(x2, y2)は二等辺三角形要素を形成し、座標(x0, y0), (x1, y1)は二等辺三角形要素のベースを定義するものであり、
    3次元描画アルゴリズムを使用して二等辺三角形要素を描画し、前記二等辺三角形要素のベースの二次元表現を定義する表示点の組を得る手段とを有する装置。
  17. 前記受信手段は図面メモリである請求項16記載の装置。
  18. 前記描画手段は図面プロセッサである請求項16記載の装置。
  19. (i) x0 = x1の場合に、x2及びy2がx2 = x0 + 2/(y1-y0) 及び y2 = (y1+y0)/2として定義され、
    (ii) y0 = y1の場合に、x2及びy2がy2 = y0 + 2/(x1-x0) 及び x2 = (x1+x0)/2として定義され、
    (iii) y0 ≠ y1 及び x0 < x1である場合に、前記二等辺三角形要素は領域を定義し、x2及びy2がy2 ≧ y0 及び x2 ≧ x0として定義され、前記領域のうちの1つ、x2及びy2は、前記領域のうちの1つ=1、y2 = y0及び x2 = x0として定義され、
    (iv) y0 ≠ y1 及び x0 > x1である場合に、前記二等辺三角形要素は領域を定義し、x2 及び y2 がy2 > (y1+y0)/2 及び x2 > (x1+x0)/2 として定義され、前記領域のうちの1つ、x2及びy2は、前記領域のうちの1つ=1、y2 = y1及び x2 = x0として定義される請求項11記載の装置。
  20. プロセッサ及びメモリを有する装置において3次元描画アルゴリズムを使用し、直線グラフィックオブジェクトの2次元表現を定義する表示点の組をコンパイルする方法であって、前記方法は、
    前記プロセッサによって、直線を定義するデータを受信し、ここで、前記データは座標(x0, y0)及び属性K0を有する始点、及び座標(x1, y1)及び属性K1を有する終点を含み、前記受信したデータを前記メモリに格納し、
    前記プロセッサによって、座標(x2, y2)を有する第3の点の属性K2を前記メモリに格納された受信したデータに基づいて選択し、ここで、K2 = (K0 + K1)/2であり、前記選択された属性K2を前記メモリに格納し、
    前記プロセッサによって、前記メモリに格納されたデータに基づいて、第3の点についての座標(x2, y2)を選択し、二等辺三角形要素を形成し、前記選択された座標(x2, y2)を格納し、
    y0 ≠ y1でない場合に、第3の点についての座標(x2, y2)を選択することは、前記ベースの垂直二等分線の式を得ることを含み、
    ここで、属性K2=(K0+K1)/2であり、座標(x0, y0), (x1, y1)及び(x2, y2)は二等辺三角形要素を形成し、座標(x0, y0), (x1, y1)は二等辺三角形要素のベースを定義するものであり、
    3次元描画アルゴリズムを使用して二等辺三角形要素を描画し、前記二等辺三角形要素のベースの二次元表現を定義する表示点の組を得る方法。
  21. x0 = x1の場合に、x2及びy2がx2 = x0 + 2/(y1-y0) 及び y2 = (y1+y0)/2として定義される請求項20記載の方法。
  22. (i) x0 = x1の場合に、x2及びy2がx2 = x0 + 2/(y1-y0) 及び y2 = (y1+y0)/2として定義され、
    (ii) y0 = y1の場合に、x2及びy2がy2 = y0 + 2/(x1-x0) 及び x2 = (x1+x0)/2として定義され、
    (iii) y0 ≠ y1 及び x0 < x1である場合に、前記二等辺三角形要素は領域を定義し、x2及びy2がy2 ≧ y0 及び x2 ≧ x0として定義され、前記領域のうちの1つ、x2及びy2は、前記領域のうちの1つ=1、y2 = y0及び x2 = x0として定義され、
    (iv) y0 ≠ y1 及び x0 > x1である場合に、前記二等辺三角形要素は領域を定義し、x2 及び y2 がy2 > (y1+y0)/2 及び x2 > (x1+x0)/2 として定義され、前記領域のうちの1つ、x2及びy2は、前記領域のうちの1つ=1、y2 = y1及び x2 = x0として定義される請求項20記載の方法。
JP2007548521A 2004-12-21 2005-12-20 3d描画アルゴリズムを利用する2d/3d線描画 Expired - Fee Related JP4699480B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/019,719 US7362325B2 (en) 2004-12-21 2004-12-21 2D/3D line rendering using 3D rasterization algorithms
US11/019,719 2004-12-21
PCT/US2005/046789 WO2006069310A2 (en) 2004-12-21 2005-12-20 2d/3d line rendering using 3d rasterization algorithms

Publications (2)

Publication Number Publication Date
JP2008524756A JP2008524756A (ja) 2008-07-10
JP4699480B2 true JP4699480B2 (ja) 2011-06-08

Family

ID=36499404

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007548521A Expired - Fee Related JP4699480B2 (ja) 2004-12-21 2005-12-20 3d描画アルゴリズムを利用する2d/3d線描画

Country Status (8)

Country Link
US (1) US7362325B2 (ja)
EP (1) EP1828988A2 (ja)
JP (1) JP4699480B2 (ja)
KR (1) KR100897724B1 (ja)
CN (1) CN101116111B (ja)
CA (1) CA2590658A1 (ja)
TW (1) TW200634663A (ja)
WO (1) WO2006069310A2 (ja)

Families Citing this family (104)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003058483A1 (en) 2002-01-08 2003-07-17 Seven Networks, Inc. Connection architecture for a mobile network
US8468126B2 (en) 2005-08-01 2013-06-18 Seven Networks, Inc. Publishing data in an information community
US7853563B2 (en) 2005-08-01 2010-12-14 Seven Networks, Inc. Universal data aggregation
US7917468B2 (en) 2005-08-01 2011-03-29 Seven Networks, Inc. Linking of personal information management data
US8732644B1 (en) 2003-09-15 2014-05-20 Nvidia Corporation Micro electro mechanical switch system and method for testing and configuring semiconductor functional circuits
US8775997B2 (en) * 2003-09-15 2014-07-08 Nvidia Corporation System and method for testing and configuring semiconductor functional circuits
US8872833B2 (en) 2003-09-15 2014-10-28 Nvidia Corporation Integrated circuit configuration system and method
US8711161B1 (en) 2003-12-18 2014-04-29 Nvidia Corporation Functional component compensation reconfiguration system and method
US8723231B1 (en) 2004-09-15 2014-05-13 Nvidia Corporation Semiconductor die micro electro-mechanical switch management system and method
US8711156B1 (en) 2004-09-30 2014-04-29 Nvidia Corporation Method and system for remapping processing elements in a pipeline of a graphics processing unit
US8010082B2 (en) 2004-10-20 2011-08-30 Seven Networks, Inc. Flexible billing architecture
US7441271B2 (en) 2004-10-20 2008-10-21 Seven Networks Method and apparatus for intercepting events in a communication system
US7706781B2 (en) 2004-11-22 2010-04-27 Seven Networks International Oy Data security in a mobile e-mail service
FI117152B (fi) 2004-12-03 2006-06-30 Seven Networks Internat Oy Sähköpostiasetusten käyttöönotto matkaviestimelle
US7752633B1 (en) 2005-03-14 2010-07-06 Seven Networks, Inc. Cross-platform event engine
US7796742B1 (en) 2005-04-21 2010-09-14 Seven Networks, Inc. Systems and methods for simplified provisioning
US8438633B1 (en) 2005-04-21 2013-05-07 Seven Networks, Inc. Flexible real-time inbox access
WO2006136660A1 (en) 2005-06-21 2006-12-28 Seven Networks International Oy Maintaining an ip connection in a mobile network
US8069166B2 (en) 2005-08-01 2011-11-29 Seven Networks, Inc. Managing user-to-user contact with inferred presence information
US7769395B2 (en) 2006-06-20 2010-08-03 Seven Networks, Inc. Location-based operations and messaging
US8482567B1 (en) * 2006-11-03 2013-07-09 Nvidia Corporation Line rasterization techniques
US8805425B2 (en) 2007-06-01 2014-08-12 Seven Networks, Inc. Integrated messaging
US8693494B2 (en) 2007-06-01 2014-04-08 Seven Networks, Inc. Polling
KR100917887B1 (ko) * 2007-06-11 2009-09-16 삼성전자주식회사 라인 가속 기능을 지원하는 그래픽 처리 방법 및 장치
US8325184B2 (en) 2007-09-14 2012-12-04 Qualcomm Incorporated Fragment shader bypass in a graphics processing unit, and apparatus and method thereof
US8724483B2 (en) 2007-10-22 2014-05-13 Nvidia Corporation Loopback configuration for bi-directional interfaces
US8364181B2 (en) 2007-12-10 2013-01-29 Seven Networks, Inc. Electronic-mail filtering for mobile devices
US8793305B2 (en) 2007-12-13 2014-07-29 Seven Networks, Inc. Content delivery to a mobile device from a content service
US9002828B2 (en) 2007-12-13 2015-04-07 Seven Networks, Inc. Predictive content delivery
US8107921B2 (en) 2008-01-11 2012-01-31 Seven Networks, Inc. Mobile virtual network operator
US8862657B2 (en) 2008-01-25 2014-10-14 Seven Networks, Inc. Policy based content service
US20090193338A1 (en) 2008-01-28 2009-07-30 Trevor Fiatal Reducing network and battery consumption during content delivery and playback
FR2927449B1 (fr) * 2008-02-11 2010-03-26 Newscape Technology Trace de lignes polygonales
KR100941029B1 (ko) * 2008-02-27 2010-02-05 에이치기술(주) 그래픽 가속기 및 그래픽 가속 방법
US8787947B2 (en) 2008-06-18 2014-07-22 Seven Networks, Inc. Application discovery on mobile devices
US8078158B2 (en) 2008-06-26 2011-12-13 Seven Networks, Inc. Provisioning applications for a mobile device
US8909759B2 (en) 2008-10-10 2014-12-09 Seven Networks, Inc. Bandwidth measurement
US8269775B2 (en) * 2008-12-09 2012-09-18 Qualcomm Incorporated Discarding of vertex points during two-dimensional graphics rendering using three-dimensional graphics hardware
JP5151946B2 (ja) * 2008-12-09 2013-02-27 富士通株式会社 描画装置
CN101753767B (zh) * 2008-12-15 2013-02-27 富士通株式会社 用在图形光栅扫描中的凸多边形遍历方法和***
WO2010078277A1 (en) * 2008-12-29 2010-07-08 Celio Technology Corporation Graphics processor
US8217962B2 (en) * 2009-01-29 2012-07-10 Microsoft Corporation Single-pass bounding box calculation
CN102004710A (zh) * 2009-09-01 2011-04-06 辉达公司 用于扩展便携式多媒体设备功能的方法和装置
US9331869B2 (en) 2010-03-04 2016-05-03 Nvidia Corporation Input/output request packet handling techniques by a device specific kernel mode driver
US9043731B2 (en) 2010-03-30 2015-05-26 Seven Networks, Inc. 3D mobile user interface with configurable workspace management
GB2495066B (en) 2010-07-26 2013-12-18 Seven Networks Inc Mobile application traffic optimization
CA2806548C (en) 2010-07-26 2015-03-31 Seven Networks, Inc. Distributed implementation of dynamic wireless traffic policy
US8838783B2 (en) 2010-07-26 2014-09-16 Seven Networks, Inc. Distributed caching for resource and mobile network traffic management
CA2806527A1 (en) 2010-07-26 2012-02-09 Seven Networks, Inc. Mobile network traffic coordination across multiple applications
CN102024247B (zh) * 2010-10-09 2012-07-18 宁波新然电子信息科技发展有限公司 用于实现新老显示界面切换的控制方法
CN101968713B (zh) * 2010-10-09 2012-07-25 宁波新然电子信息科技发展有限公司 显示界面三维切换控制方法
EP2635973A4 (en) 2010-11-01 2014-01-15 Seven Networks Inc TO THE BEHAVIOR OF A MOBILE APPLICATION AND INTERMEDIATE STORAGE TAILORED TO NETWORK CONDITIONS
US9060032B2 (en) 2010-11-01 2015-06-16 Seven Networks, Inc. Selective data compression by a distributed traffic management system to reduce mobile data traffic and signaling traffic
WO2012060997A2 (en) 2010-11-01 2012-05-10 Michael Luna Application and network-based long poll request detection and cacheability assessment therefor
WO2012060995A2 (en) 2010-11-01 2012-05-10 Michael Luna Distributed caching in a wireless network of content delivered for a mobile application over a long-held request
US8484314B2 (en) 2010-11-01 2013-07-09 Seven Networks, Inc. Distributed caching in a wireless network of content delivered for a mobile application over a long-held request
US8843153B2 (en) 2010-11-01 2014-09-23 Seven Networks, Inc. Mobile traffic categorization and policy for network use optimization while preserving user experience
US9330196B2 (en) 2010-11-01 2016-05-03 Seven Networks, Llc Wireless traffic management system cache optimization using http headers
US8204953B2 (en) 2010-11-01 2012-06-19 Seven Networks, Inc. Distributed system for cache defeat detection and caching of content addressed by identifiers intended to defeat cache
WO2012061430A2 (en) 2010-11-01 2012-05-10 Michael Luna Distributed management of keep-alive message signaling for mobile network resource conservation and optimization
CA2798523C (en) 2010-11-22 2015-02-24 Seven Networks, Inc. Aligning data transfer to optimize connections established for transmission over a wireless network
WO2012071384A2 (en) 2010-11-22 2012-05-31 Michael Luna Optimization of resource polling intervals to satisfy mobile device requests
WO2012094675A2 (en) 2011-01-07 2012-07-12 Seven Networks, Inc. System and method for reduction of mobile network traffic used for domain name system (dns) queries
GB2517815A (en) 2011-04-19 2015-03-04 Seven Networks Inc Shared resource and virtual resource management in a networked environment
WO2012149221A2 (en) 2011-04-27 2012-11-01 Seven Networks, Inc. System and method for making requests on behalf of a mobile device based on atomic processes for mobile network traffic relief
WO2012149434A2 (en) 2011-04-27 2012-11-01 Seven Networks, Inc. Detecting and preserving state for satisfying application requests in a distributed proxy and cache system
CN102737410B (zh) * 2011-05-06 2017-09-12 新奥特(北京)视频技术有限公司 一种三维图元在二维图文编播***中的显示方法和装置
WO2013015995A1 (en) 2011-07-27 2013-01-31 Seven Networks, Inc. Automatic generation and distribution of policy information regarding malicious mobile traffic in a wireless network
EP2789137A4 (en) 2011-12-06 2015-12-02 Seven Networks Inc SYSTEM OF REDUNDANTLY CLUSTERED MACHINES FOR PROVIDING TILTING MECHANISMS IN MOBILE TRAFFIC MANAGEMENT AND NETWORK RESOURCE PRESERVATION
US8934414B2 (en) 2011-12-06 2015-01-13 Seven Networks, Inc. Cellular or WiFi mobile traffic optimization based on public or private network destination
US9569878B2 (en) * 2011-12-07 2017-02-14 Intel Corporation Sample culling based on linearized 5D edge equations
WO2013086455A1 (en) 2011-12-07 2013-06-13 Seven Networks, Inc. Flexible and dynamic integration schemas of a traffic management system with various network operators for network traffic alleviation
US9277443B2 (en) 2011-12-07 2016-03-01 Seven Networks, Llc Radio-awareness of mobile device for sending server-side control signals using a wireless network optimized transport protocol
EP2792188B1 (en) 2011-12-14 2019-03-20 Seven Networks, LLC Mobile network reporting and usage analytics system and method using aggregation of data in a distributed traffic optimization system
US8861354B2 (en) 2011-12-14 2014-10-14 Seven Networks, Inc. Hierarchies and categories for management and deployment of policies for distributed wireless traffic optimization
WO2013090834A1 (en) 2011-12-14 2013-06-20 Seven Networks, Inc. Operation modes for mobile traffic optimization and concurrent management of optimized and non-optimized traffic
WO2013103988A1 (en) 2012-01-05 2013-07-11 Seven Networks, Inc. Detection and management of user interactions with foreground applications on a mobile device in distributed caching
WO2013116856A1 (en) 2012-02-02 2013-08-08 Seven Networks, Inc. Dynamic categorization of applications for network access in a mobile network
WO2013116852A1 (en) 2012-02-03 2013-08-08 Seven Networks, Inc. User as an end point for profiling and optimizing the delivery of content and data in a wireless network
US8812695B2 (en) 2012-04-09 2014-08-19 Seven Networks, Inc. Method and system for management of a virtual network connection without heartbeat messages
US10263899B2 (en) 2012-04-10 2019-04-16 Seven Networks, Llc Enhanced customer service for mobile carriers using real-time and historical mobile application and traffic or optimization data associated with mobile devices in a mobile network
WO2014011216A1 (en) 2012-07-13 2014-01-16 Seven Networks, Inc. Dynamic bandwidth adjustment for browsing or streaming activity in a wireless network based on prediction of user behavior when interacting with mobile applications
US9218679B2 (en) * 2012-10-08 2015-12-22 Intel Corporation Reduced bitcount polygon rasterization
US9161258B2 (en) 2012-10-24 2015-10-13 Seven Networks, Llc Optimized and selective management of policy deployment to mobile clients in a congested network to prevent further aggravation of network congestion
US20140177497A1 (en) 2012-12-20 2014-06-26 Seven Networks, Inc. Management of mobile device radio state promotion and demotion
US9271238B2 (en) 2013-01-23 2016-02-23 Seven Networks, Llc Application or context aware fast dormancy
US8874761B2 (en) 2013-01-25 2014-10-28 Seven Networks, Inc. Signaling optimization in a wireless network for traffic utilizing proprietary and non-proprietary protocols
CN103150133B (zh) * 2013-03-06 2016-03-23 天脉聚源(北京)传媒科技有限公司 一种资源展示方法及装置
US8750123B1 (en) 2013-03-11 2014-06-10 Seven Networks, Inc. Mobile device equipped with mobile network congestion recognition to make intelligent decisions regarding connecting to an operator network
US9065765B2 (en) 2013-07-22 2015-06-23 Seven Networks, Inc. Proxy server associated with a mobile carrier for enhancing mobile traffic management in a mobile network
US9547918B2 (en) 2014-05-30 2017-01-17 Intel Corporation Techniques for deferred decoupled shading
CN106371780B (zh) * 2015-07-22 2019-08-13 龙芯中科技术有限公司 矢量图形处理方法和装置
CN105488261B (zh) * 2015-11-25 2019-12-27 天脉聚源(北京)科技有限公司 实时模拟线段的方法和装置
KR102608466B1 (ko) 2016-11-22 2023-12-01 삼성전자주식회사 영상 처리 방법 및 영상 처리 장치
US10627910B2 (en) 2017-02-21 2020-04-21 Adobe Inc. Stroke operation prediction for three-dimensional digital content
US10657682B2 (en) 2017-04-12 2020-05-19 Adobe Inc. Drawing curves in space guided by 3-D objects
WO2019043564A1 (en) * 2017-08-28 2019-03-07 Will Dobbie SYSTEM AND METHOD FOR RENDERING A GRAPHIC FORM
CN108734760A (zh) * 2017-09-12 2018-11-02 武汉天际航信息科技股份有限公司 三维网格线条拉直***及三维网格线条拉直方法
CN109345607B (zh) * 2018-10-11 2023-02-28 广州前实网络科技有限公司 一种自动标记epc图片方法
CN109658324B (zh) * 2018-11-14 2023-04-07 西安翔腾微电子科技有限公司 一种三角形光栅化扫描方法
CN109584334B (zh) * 2018-11-14 2023-04-07 西安翔腾微电子科技有限公司 一种基于uml的三角形光栅化扫描结构及光栅化扫描方法
CN111223142B (zh) * 2019-12-31 2023-09-08 西安翔腾微电子科技有限公司 一种gpu点光栅化点大小奇偶配置的顶点坐标映射方法
CN112581352B (zh) * 2020-12-05 2024-03-01 西安翔腾微电子科技有限公司 一种面向多gpu的高性能图元分屏光栅方法
CN117726774B (zh) * 2024-02-07 2024-04-30 芯瑞微(上海)电子科技有限公司 基于线产生算法的三角形光栅化方法、装置以及相关设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5528737A (en) * 1993-12-14 1996-06-18 Silicon Graphics, Inc. Processor-based method for rasterizing polygons at an arbitrary precision
WO2004084143A1 (en) * 2003-03-18 2004-09-30 Qualcomm Incorporated Triangle rendering using direct evaluation

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5381519A (en) * 1987-12-04 1995-01-10 Evans & Sutherland Computer Corp. System for line interpolation for computer graphics displays
US5446836A (en) * 1992-10-30 1995-08-29 Seiko Epson Corporation Polygon rasterization
JP3865427B2 (ja) * 1996-04-11 2007-01-10 三菱プレシジョン株式会社 地形模擬モデルの生成方法及び表示の方法
US5905500A (en) * 1997-02-19 1999-05-18 Seiko Epson Corporation Method and apparatus for adaptive nonlinear projective rendering
US6636218B1 (en) 2000-06-30 2003-10-21 Intel Corporation Title-based digital differential analyzer rasterization
DE60205856D1 (de) 2002-03-11 2005-10-06 Sgs Thomson Microelectronics Verfahren und Vorrichtung zur Auswertung, ob ein Bildpunkt innerhalb eines Dreiecks liegt

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5528737A (en) * 1993-12-14 1996-06-18 Silicon Graphics, Inc. Processor-based method for rasterizing polygons at an arbitrary precision
WO2004084143A1 (en) * 2003-03-18 2004-09-30 Qualcomm Incorporated Triangle rendering using direct evaluation

Also Published As

Publication number Publication date
TW200634663A (en) 2006-10-01
US20060132495A1 (en) 2006-06-22
CN101116111B (zh) 2011-09-07
CN101116111A (zh) 2008-01-30
CA2590658A1 (en) 2006-06-29
JP2008524756A (ja) 2008-07-10
US7362325B2 (en) 2008-04-22
WO2006069310A3 (en) 2006-09-08
WO2006069310A2 (en) 2006-06-29
KR20070088791A (ko) 2007-08-29
EP1828988A2 (en) 2007-09-05
KR100897724B1 (ko) 2009-05-18

Similar Documents

Publication Publication Date Title
JP4699480B2 (ja) 3d描画アルゴリズムを利用する2d/3d線描画
US11954803B2 (en) Generation of a control stream for a tile
TWI584223B (zh) 藉由追蹤物件及/或基元識別符的圖形處理增強之方法及系統,圖形處理單元及非暫時性電腦可讀媒體
US20230394750A1 (en) Graphics processing using directional representations of lighting at probe positions within a scene
JP5232358B2 (ja) アウトラインフォントのレンダリング
US6160557A (en) Method and apparatus providing efficient rasterization with data dependent adaptations
TW201816724A (zh) 用於高解析度顯示緩衝器之有效構造之方法
US10592242B2 (en) Systems and methods for rendering vector data on static and dynamic-surfaces using screen space decals and a depth texture
US11257181B2 (en) Tiling a primitive in a graphics processing system by edge-specific testing of a subset of tiles in a rendering space
KR20060052042A (ko) 3d에서의 하드웨어 가속화된 안티-엘리어싱 방법 및시스템
US5684941A (en) Interpolation rendering of polygons into a pixel grid
US10242482B2 (en) Tiling a primitive in a graphics processing system
JP4311877B2 (ja) 副標本化テクスチャ端縁部のアンチエイリアシング
Kim et al. An efficient fragment processing technique in A-buffer implementation

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100518

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100817

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100907

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20101207

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20101214

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110104

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110201

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110302

R150 Certificate of patent or registration of utility model

Ref document number: 4699480

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees