JPH01193979A - 線分描画方法 - Google Patents
線分描画方法Info
- Publication number
- JPH01193979A JPH01193979A JP1702788A JP1702788A JPH01193979A JP H01193979 A JPH01193979 A JP H01193979A JP 1702788 A JP1702788 A JP 1702788A JP 1702788 A JP1702788 A JP 1702788A JP H01193979 A JPH01193979 A JP H01193979A
- Authority
- JP
- Japan
- Prior art keywords
- line segment
- coordinates
- segment
- coordinate
- register
- 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.)
- Pending
Links
Landscapes
- Image Generation (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔産業上の利用分野〕
本発明は、コンピュータ・グラフィックス等の分野にお
ける線分の描画方法に係り、特に、線分を高速fこ描画
する方法に関する。
ける線分の描画方法に係り、特に、線分を高速fこ描画
する方法に関する。
従来の線分描画方法は、特開昭60〜149084号公
報に記載のように、描画下べき線分を構成するすべての
画素のX、Y座標を計算するようになっていた。
報に記載のように、描画下べき線分を構成するすべての
画素のX、Y座標を計算するようになっていた。
上記従来技術は、描画すべき線分の対称性に層目した高
速化について配慮がされていなかった。
速化について配慮がされていなかった。
すなわち、線分P1P2は、その中点Qに関して点対称
であるという特性を利用していなかったため、線分P
I P zを構成する各画素のX、Y座標を計算する必
要があり、線分描画ζこ多くの時間を費やす必要があっ
た。
であるという特性を利用していなかったため、線分P
I P zを構成する各画素のX、Y座標を計算する必
要があり、線分描画ζこ多くの時間を費やす必要があっ
た。
本発明の目的は、上記従来技術の欠点を解消し、線分の
対称性を利用した高速描画方法を提供することζこある
。
対称性を利用した高速描画方法を提供することζこある
。
上記目的は、線分P1P2の中点をQとした時虜分P+
Qを構成する各画素のX、Y座標を計算する座標計算手
段と、上記各画素力中点Qiこ関して点対称な点に位置
する各画素の座標X’、 Y’を求める座標変換手段と
を設けることにより達成される。
Qを構成する各画素のX、Y座標を計算する座標計算手
段と、上記各画素力中点Qiこ関して点対称な点に位置
する各画素の座標X’、 Y’を求める座標変換手段と
を設けることにより達成される。
上記座標計算手段は、線OPτを構成する各画素のX、
Y座標を計算し、上記座標変換手段は、線分QP2を構
成する各画素の座標X’、 Y’を、上記X、Y座標を
もとlこ、求める。従って、線分P1P2を構成する各
画素のX、Y座標を計算する必要はなく、その半分の線
分P>Qについて座標計算を行なうだけであり、残りの
線分顧については、上記P1Qの座標変換により求める
ので、高速な線分描画ができる。
Y座標を計算し、上記座標変換手段は、線分QP2を構
成する各画素の座標X’、 Y’を、上記X、Y座標を
もとlこ、求める。従って、線分P1P2を構成する各
画素のX、Y座標を計算する必要はなく、その半分の線
分P>Qについて座標計算を行なうだけであり、残りの
線分顧については、上記P1Qの座標変換により求める
ので、高速な線分描画ができる。
以下、本発明の一実施例を説明する。第1図は、本発明
の全体構成を示すブロック図である。第1図において、
RA M 800は、線分描画部のメモリであり、通常
は、画面表示用のフレーム・バッファであるが、これに
限定されるものではなく、メイン・メモリであってもよ
い。点描画部700は、RAMaoo上の指定された位
置に、点を描画する部分である。点の位置は、Xレジス
タ610.Yレジスfi62otこより指定されるので
、所定のアドレス計算を行ない、そのアドレス(こ−点
書き込む。
の全体構成を示すブロック図である。第1図において、
RA M 800は、線分描画部のメモリであり、通常
は、画面表示用のフレーム・バッファであるが、これに
限定されるものではなく、メイン・メモリであってもよ
い。点描画部700は、RAMaoo上の指定された位
置に、点を描画する部分である。点の位置は、Xレジス
タ610.Yレジスfi62otこより指定されるので
、所定のアドレス計算を行ない、そのアドレス(こ−点
書き込む。
初期設定部200は、線分発生に必要な各穐定数。
変数の初期値をレジスタ310 、 320 、 31
、340゜350 、360 、370 、 380
、 390に設定する部分である。線分描画部400
は、線分を構成する各画素のX、Y座標を計算し、上記
点描画部700を起動して、RA M 800上ζこ各
画素を書き込む部分である。座標計算には、公知のBr
eseuhawのアルゴリズムを用いる。終了処理部5
00は、線分描画(/J終了処理を行なう。制御部10
0は、上記各処理部(/J全全体絶佳を制御する部分で
ある。
、340゜350 、360 、370 、 380
、 390に設定する部分である。線分描画部400
は、線分を構成する各画素のX、Y座標を計算し、上記
点描画部700を起動して、RA M 800上ζこ各
画素を書き込む部分である。座標計算には、公知のBr
eseuhawのアルゴリズムを用いる。終了処理部5
00は、線分描画(/J終了処理を行なう。制御部10
0は、上記各処理部(/J全全体絶佳を制御する部分で
ある。
さて、−例おして、第2図1こ示したような始点Pi
(Xl、 Yl)〜終点P2 (X2 、 Y2 XX
I = 4 、 Y1=5゜X2=14. Y2= 7
)の線分を描画する場合の動作を説明する。制御部1
00は、まず初期設定部200を起動し、次に、線分描
画部400を起動する。そして最後に終了処理部500
を起動する(第5図)。
(Xl、 Yl)〜終点P2 (X2 、 Y2 XX
I = 4 、 Y1=5゜X2=14. Y2= 7
)の線分を描画する場合の動作を説明する。制御部1
00は、まず初期設定部200を起動し、次に、線分描
画部400を起動する。そして最後に終了処理部500
を起動する(第5図)。
初期設定部200の処理フローを第4図に示す。
ブロック210〜260で、定数C1,02および変数
Eの初期値を、次式により計算し、それぞれ、Cルジス
3’ 320 、 C2L/シフ、タ370.El/ジ
スタ340 tこ設定する。
Eの初期値を、次式により計算し、それぞれ、Cルジス
3’ 320 、 C2L/シフ、タ370.El/ジ
スタ340 tこ設定する。
CI” 2 X (dydX) = 12
・・・(1)C2= 2 X dy= 8
・・・(2)E = 2 xdy −dx
=−2・・(3)ここに、 d’1=Vz 7t = 4
・・・(4)dx ””x2− XI = 1
0 ・・・(5)である
。
・・・(1)C2= 2 X dy= 8
・・・(2)E = 2 xdy −dx
=−2・・(3)ここに、 d’1=Vz 7t = 4
・・・(4)dx ””x2− XI = 1
0 ・・・(5)である
。
つぎlこブ07り240 、250 、で定数Cx、C
yG’J値を次式Fこより計算し、それぞれ、Cxレジ
スタ33o。
yG’J値を次式Fこより計算し、それぞれ、Cxレジ
スタ33o。
Cxレジスタ38o1こ設定する。
Cx=xt +X2=18 ・−
(6)C’f=Vx +y2=10
・・・(7)つぎにブロック260 、270 、
で定数XE、Fの値を次式により計算し、それぞれ、X
Eレジスタ560、F レジスタ310に設定する。
(6)C’f=Vx +y2=10
・・・(7)つぎにブロック260 、270 、
で定数XE、Fの値を次式により計算し、それぞれ、X
Eレジスタ560、F レジスタ310に設定する。
XE=x1+ (X2 X1+ 1 ) / 2−1
= 8 ・・・(8)(端数切捨て) F== (X2−X1+ 1 )%2−1
・・・(9)Fは、(X2 X1+ 1 )を
2で割った剰余であり、X2−x1+1が偶数ならF=
0 、 X2 X1+ 1が奇数ならF=1である
。最後lこ、ブロック280 、 290゜で変数X、
Yの値を、 X=xH= 4 、 Y=Vs= 3 (!:Ltて、
それぞれ、Xレジスタ390.Yレジスタろ5oに設定
する。
= 8 ・・・(8)(端数切捨て) F== (X2−X1+ 1 )%2−1
・・・(9)Fは、(X2 X1+ 1 )を
2で割った剰余であり、X2−x1+1が偶数ならF=
0 、 X2 X1+ 1が奇数ならF=1である
。最後lこ、ブロック280 、 290゜で変数X、
Yの値を、 X=xH= 4 、 Y=Vs= 3 (!:Ltて、
それぞれ、Xレジスタ390.Yレジスタろ5oに設定
する。
次lこ線分描画部400の処理フローを第5図ζこ示す
。7’CI7り410で、X、Yl/ジスタ390 、
350゜の内容を、それぞれ、x+7レジスタ610
、620゜へ送出し、点描画部700を起動して、始
点PIに一画素描画する。つぎにブロック420で、次
式により座標変換を行なう。
。7’CI7り410で、X、Yl/ジスタ390 、
350゜の内容を、それぞれ、x+7レジスタ610
、620゜へ送出し、点描画部700を起動して、始
点PIに一画素描画する。つぎにブロック420で、次
式により座標変換を行なう。
X’=Cx−X=14 −(
10)Y’=α−Y=7 ・・(
11)これは、点P(X、Y)の線分P1P2の中点Q
に関して点対称な点p’ (x’、 y’ ) 4求め
る処理である。
10)Y’=α−Y=7 ・・(
11)これは、点P(X、Y)の線分P1P2の中点Q
に関して点対称な点p’ (x’、 y’ ) 4求め
る処理である。
つぎlこ、ブロック430で、さきlこ求めたx’、y
’zそれぞれ、x、Xレジスタ610 、620へ送出
し、点描画部700を起動して、終点P21こ一画素描
画する。つぎにブロック440で、X座標を1インクリ
メントする(X=5)。つぎにブロック450で変数E
の正負を判定し、E>Ofiらブロック460へ進んで
、X座標を1インクリメントする(Y=4)とともに、
Eを更新する( E ”= E+Ci = −14)。
’zそれぞれ、x、Xレジスタ610 、620へ送出
し、点描画部700を起動して、終点P21こ一画素描
画する。つぎにブロック440で、X座標を1インクリ
メントする(X=5)。つぎにブロック450で変数E
の正負を判定し、E>Ofiらブロック460へ進んで
、X座標を1インクリメントする(Y=4)とともに、
Eを更新する( E ”= E+Ci = −14)。
また、E≦0なら、ブロック470へ進んで、X座標を
インクリメントすることなく、Eのみを更新する( E
=E+C2=6 )。Eの現在値は−2<Oであるから
ブロック470へ進みE=6に更新されてブロック48
0へ進む。ブロック480は線分描画の終了判定を行な
うブロックであり、X≦XEなら未終了と判定し、再び
ブロック410へ進み、X>XEなら終了と判定し、処
理終了となる。従って、4≦X≦8の間はループを繰り
返し、X=9.、!:なった時、処理終了おなる。ここ
菫での計算の過程を第6図(a)にまた、画素描画の過
程を第6図(b)に示す。第6図(b)における円内の
数字は、画素描画の順序を示す。
インクリメントすることなく、Eのみを更新する( E
=E+C2=6 )。Eの現在値は−2<Oであるから
ブロック470へ進みE=6に更新されてブロック48
0へ進む。ブロック480は線分描画の終了判定を行な
うブロックであり、X≦XEなら未終了と判定し、再び
ブロック410へ進み、X>XEなら終了と判定し、処
理終了となる。従って、4≦X≦8の間はループを繰り
返し、X=9.、!:なった時、処理終了おなる。ここ
菫での計算の過程を第6図(a)にまた、画素描画の過
程を第6図(b)に示す。第6図(b)における円内の
数字は、画素描画の順序を示す。
最後に、終了処理部500の処理フローを第7図に示す
。フロック510でFレジスタ610の内容を参照し、
F=Oすなわち、線分P I P 2のX成分の大きさ
(X2−xl”1)が偶数ならば、処理終了とし、F=
1すなわち、線分P1P20Jx成分の大きさが奇数な
らば、ブロック520でXレジスタ390.Yレジスタ
650の内容を、それぞれXレジスタ610゜Xレジス
タ620.へ送出し、線分PIF2の中点に画素を一つ
描画する。
。フロック510でFレジスタ610の内容を参照し、
F=Oすなわち、線分P I P 2のX成分の大きさ
(X2−xl”1)が偶数ならば、処理終了とし、F=
1すなわち、線分P1P20Jx成分の大きさが奇数な
らば、ブロック520でXレジスタ390.Yレジスタ
650の内容を、それぞれXレジスタ610゜Xレジス
タ620.へ送出し、線分PIF2の中点に画素を一つ
描画する。
以上が、本発明の詳細な説明である。不実施例では、線
分の傾きが45°以内、すなわち、X軸寄りの線分につ
いて説明したが、線分の傾きが45°を越えるような場
合、すなわち、y軸寄りの線分についても、y軸とy軸
とを入れ替えるこaにより実現できることは明ら力)で
ある。
分の傾きが45°以内、すなわち、X軸寄りの線分につ
いて説明したが、線分の傾きが45°を越えるような場
合、すなわち、y軸寄りの線分についても、y軸とy軸
とを入れ替えるこaにより実現できることは明ら力)で
ある。
本発明ζこよれば、W3画すべき線分PtP2cz、)
中点をQとした時、線分P+Qを構成する各画素のX、
X座標を計算するだけで、残りのQP2については、P
1Qとの対称性を利用して、座標変換により求めるので
、昼速に線分描画が行なえるという効果がある。
中点をQとした時、線分P+Qを構成する各画素のX、
X座標を計算するだけで、残りのQP2については、P
1Qとの対称性を利用して、座標変換により求めるので
、昼速に線分描画が行なえるという効果がある。
・ 7 ・
第1図は、本発明の全体構成を示すフロック図、第2図
は、描画すべき線分の一例を示す図、第6図は、制御部
100(/J処理フロー、第4図は、初期設定部200
の処理フロー、第5図は、線分描画部400(/J処理
フロー、第6図は、線分描画の過程を示す図、第7図は
、終了処理部500の処理フロー、である。 100・・・制御部 200・・・初期設定部6
10・・・Fレジスタ 320・・・Cルジスタ63
0・・・CXレジスタ 340・・・Eレジスタ35
0・・Xレジスタ ′560・・・XEレジスタ37
0・・・C2レジスタ 380・・CXレジスタ39
0・・・Xレジスタ 400・・・線分描画部500
・・・終了処理部 610・・・Xレジスタ620・
・・Xレジスタ 700・・点描画部800・・・R
AM 代理人 弁理士 小 川 勝 男 ・ 8 ・ 第2図 第3図 第4図 第5図 第6図 オ (b) 第7図
は、描画すべき線分の一例を示す図、第6図は、制御部
100(/J処理フロー、第4図は、初期設定部200
の処理フロー、第5図は、線分描画部400(/J処理
フロー、第6図は、線分描画の過程を示す図、第7図は
、終了処理部500の処理フロー、である。 100・・・制御部 200・・・初期設定部6
10・・・Fレジスタ 320・・・Cルジスタ63
0・・・CXレジスタ 340・・・Eレジスタ35
0・・Xレジスタ ′560・・・XEレジスタ37
0・・・C2レジスタ 380・・CXレジスタ39
0・・・Xレジスタ 400・・・線分描画部500
・・・終了処理部 610・・・Xレジスタ620・
・・Xレジスタ 700・・点描画部800・・・R
AM 代理人 弁理士 小 川 勝 男 ・ 8 ・ 第2図 第3図 第4図 第5図 第6図 オ (b) 第7図
Claims (1)
- 1、線分@P_1P_2@(その中点をQとする)を描
画する線分描画方法において、線分@P_1Q@(また
は@P_2Q@)を構成する各画素のX、Y座標を計算
する座標計算手段と、線分@QP_2@(または@QP
_1@)を構成する各画素のX、Y座標を、上記座標計
算手段によつて得たX、Y座標の座標変換により求める
座標変換手段とを備え、線分@P_1Q@(または@P
_2Q@)は上記座標計算手段により、また、線分@Q
P_2@または@QP_1@)は、線分@P_1Q@(
または@P_2Q@)との対称性を利用して上記座標変
換手段により、各画素のX、Y座標を求めることを特徴
とする線分描画方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP1702788A JPH01193979A (ja) | 1988-01-29 | 1988-01-29 | 線分描画方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP1702788A JPH01193979A (ja) | 1988-01-29 | 1988-01-29 | 線分描画方法 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH01193979A true JPH01193979A (ja) | 1989-08-03 |
Family
ID=11932513
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP1702788A Pending JPH01193979A (ja) | 1988-01-29 | 1988-01-29 | 線分描画方法 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH01193979A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH0668268A (ja) * | 1992-08-21 | 1994-03-11 | Mutoh Ind Ltd | ベクタ・ラスタ変換方式 |
-
1988
- 1988-01-29 JP JP1702788A patent/JPH01193979A/ja active Pending
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH0668268A (ja) * | 1992-08-21 | 1994-03-11 | Mutoh Ind Ltd | ベクタ・ラスタ変換方式 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP2793466B2 (ja) | 画像の可変拡大方法及びその装置 | |
| US6507348B1 (en) | Method and apparatus for clipping an object element in accordance with a clip volume | |
| JPH0628438A (ja) | 図面処理システム | |
| JPH0660173A (ja) | 画像を縮小する方法および装置 | |
| US7221368B1 (en) | Stippled lines using direct distance evaluation | |
| JPH01193979A (ja) | 線分描画方法 | |
| JP2001283242A (ja) | 画像処理装置および画像処理方法 | |
| JP2888270B2 (ja) | 図形処理装置及びその方法 | |
| JPH0350686A (ja) | 図形処理方式 | |
| JPH01116889A (ja) | クリップ領域内における直線描画方法 | |
| JP2768370B2 (ja) | 図形描画方法 | |
| JP2991591B2 (ja) | マルチウィンドウ表示装置及び方法 | |
| JP2006302127A (ja) | 画面高速描画装置およびその描画処理方法 | |
| JPH02183877A (ja) | 図形表示装置 | |
| JP2908194B2 (ja) | 文字の変形制御方式 | |
| JPH0210476A (ja) | 曲線の折線近似装置 | |
| JP2780496B2 (ja) | 描画装置のクリッピング処理方式 | |
| JPS62285188A (ja) | 線分の表示方法 | |
| JPH02163885A (ja) | 画像表示装置 | |
| JP2002269576A (ja) | 線分描画方法および線分描画装置 | |
| JPS62271187A (ja) | ベクトル描画方式 | |
| JPS63234368A (ja) | 自由線幅の円/円弧生成方式 | |
| JPH06162212A (ja) | 多角形塗りつぶし装置 | |
| JP2002073001A (ja) | 四角形描画方法および装置 | |
| JPS61256483A (ja) | 扇形図形のぬりつぶし回路 |