JPH08138068A - 図形作成装置および図形作成方法 - Google Patents

図形作成装置および図形作成方法

Info

Publication number
JPH08138068A
JPH08138068A JP30432794A JP30432794A JPH08138068A JP H08138068 A JPH08138068 A JP H08138068A JP 30432794 A JP30432794 A JP 30432794A JP 30432794 A JP30432794 A JP 30432794A JP H08138068 A JPH08138068 A JP H08138068A
Authority
JP
Japan
Prior art keywords
data
curve
graphic
input
curve data
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
Application number
JP30432794A
Other languages
English (en)
Inventor
Takashi Shimooku
隆史 下奥
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.)
Canon Inc
Original Assignee
Canon 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 Canon Inc filed Critical Canon Inc
Priority to JP30432794A priority Critical patent/JPH08138068A/ja
Publication of JPH08138068A publication Critical patent/JPH08138068A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Processing Or Creating Images (AREA)
  • Image Processing (AREA)
  • Image Generation (AREA)

Abstract

(57)【要約】 【目的】 滑らかな曲線や希望するパターンを描画でき
る図形作成装置を提供する。 【構成】 図形表示装置は、ROM21、RAM22、
ポインタ操作装置23、データ入力装置24、表示装置
25、印刷装置26、ハードディスクドライブ27、フ
ロッピーディスクドライブ28、CPU29などを有す
る。入力された曲線データの座標値を16倍にする。1
6倍にされた曲線データに対して曲線の直線近似処理を
行なうことによって多角形の座標データを求める。デー
タバッファに格納された点列データの連続した2点を順
次抽出し、抽出された2点を点START、点ENDと
する。点STARTおよび直線START−ENDの傾
きからp[1]、p[2]、…p[n]のそれぞれのx
座標に対応するy座標の値を求める。p[i]のそれぞ
れがどのピクセルに含まれるかを求め、そのピクセルの
座標値をデータバッファに格納し、点ENDを含むピク
セルの座標値をデータバッファに格納する。格納された
ピクセルの座標値を用いて、滑らかな曲線の描画を行な
う。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は図形の表示や印刷を行な
うための図形作成装置に関する。
【0002】
【従来の技術】従来、多角形は描画可能であるが曲線は
描画不可能である図形作成装置では、フレームメモリに
展開されたビットマップを表示したりあるいは印刷した
りする際に、自由曲線やベジェ曲線などの曲線を直線に
近似してから描画していた。即ち、曲線の特性を考慮し
た方程式と与えられた曲線の制御点とを基に形成された
ショートベクタを求めることによって直線近似が行なわ
れ、直線近似によって得られた多角形図形を描画するこ
とで曲線の描画は実現されていた。
【0003】また、ダッシュパターンなどの線属性を有
する図形を表示したりおよび印刷したりする図形作成装
置では、図形の線属性として予め用意されたいくつかの
ダッシュパターンの中から希望するパターンを選んで表
示や印刷を行なっていた。
【0004】
【発明が解決しようとする課題】しかしながら、前者の
場合、求められたショートベクタはそれが如何に精度高
く求められたものであっても、最終的にデバイスピクセ
ル単位の座標系にマッピングされるので、この座標系が
整数の座標値しか扱えない場合、数値の中で表現されて
いたショートベクタの微妙な傾きは丸めによって情報と
して消失してしまい、これによって計算通りの滑らかな
曲線を描画できない場合がある。図8は計算通りに滑ら
かな曲線を描画できない場合を示す説明図である。
【0005】また、後者の場合、希望するパターンが予
め用意されていないときには、そのパターンに最も近い
パターンで代替えを行なうか、短い線分を並べて描画す
るしかなかった。
【0006】そこで、本発明は滑らかな曲線や希望する
パターンを描画できる図形作成装置を提供することを目
的とする。
【0007】
【課題を解決するための手段】本発明の請求項1に係る
図形作成装置は、曲線データを入力する入力手段と、該
入力された曲線データの座標値を拡大する拡大手段と、
該拡大された曲線データの座標値間を直線で近似する近
似手段と、該直線で近似された曲線データをビットマッ
プに展開する展開手段と、該展開されたビットマップを
用いて前記曲線データの多角形を出力する出力手段とを
備える。
【0008】請求項2に係る図形作成方法は、曲線デー
タを入力し、該入力された曲線データの座標値を拡大
し、該拡大された曲線データの座標値間を直線で近似
し、該直線で近似された曲線データをビットマップに展
開し、該展開されたビットマップを用いて前記曲線デー
タの多角形を出力する。
【0009】本発明の請求項3に係る図形作成装置は、
図形を入力する入力手段と、該入力された図形の属性を
設定する設定手段と、該設定された属性に応じた前記図
形の形状を生成する生成手段と、該生成された図形の形
状を出力する出力手段とを備える。
【0010】請求項4に係る図形作成装置は、請求項3
に係る図形作成装置において前記図形の属性はダッシュ
パターンであることを特徴とする。
【0011】請求項5に係る図形作成方法は、図形を入
力し、該入力された図形の属性を設定し、該設定された
属性に応じた前記図形の形状を生成し、該生成された図
形の形状を出力する。
【0012】
【作用】本発明の請求項1に係る図形作成装置では、入
力手段により曲線データを入力し、拡大手段により該入
力された曲線データの座標値を拡大し、近似手段により
該拡大された曲線データの座標値間を直線で近似し、展
開手段により該直線で近似された曲線データをビットマ
ップに展開し、出力手段により該展開されたビットマッ
プを用いて前記曲線データの多角形を出力する。
【0013】本発明の請求項3に係る図形作成装置で
は、入力手段により図形を入力し、設定手段により該入
力された図形の属性を設定し、生成手段により該設定さ
れた属性に応じた前記図形の形状を生成し、出力手段に
より該生成された図形の形状を出力する。
【0014】
【実施例】本発明の図形作成装置の実施例について説明
する。
【0015】[第1実施例]図1は図形作成装置として
適用された図形表示装置の構成を示すブロック図であ
る。図において、21はROMであり、制御プログラム
を格納する。22はRAMであり、ワークエリアとして
用いられる。25は表示装置であり、描画ウィンドウ、
メニューパネルなどを表示する。
【0016】23はポインタ操作装置であり、描画ウィ
ンドウ上の位置を入力する。ポインタ操作装置23とし
ては、例えばマウスが挙げられる。24はデータ入力装
置であり、データの入力を行なう。データ入力装置24
としては、例えばキーボードが挙げられる。26は印刷
装置、27はハードディスクドライブ(HDD)、28
はフロッピーディスクドライブ(FDD)である。29
はCPUであり、各部の制御を行なう。
【0017】図2は表示装置25に表示された描画ウィ
ンドウ、メニューパネルの表示レイアウトを示す説明図
である。図において、31は作業エリアである。32は
メニューパネルであり、マウスカーソルをメニューパネ
ル32の機能項目上に移動し、マウスボタンでシングル
クリックを行なうことで機能項目が選択される。33は
描画ウィンドウである。34はキャンバスで、描画エリ
アの一部または全体を表示する。キャンバス34上でマ
ウス操作を行なうことにより図形の座標データが入力さ
れる。35はマウスカーソルで、マウスの操作に連動し
て作業エリア内を移動する。
【0018】図3は図形データのフォーマットを示す説
明図である。同図(a)は内部データの各レコードの共
通フォーマットを示す。ここで、41はレコードのサイ
ズrecord_size、42は図形種別番号fig
no、43は面種(id)brush、44は線種類
(id)pen、45は点列の数npoints、46
は点列の配列points[npoints]である。
【0019】同図(b)はデータ作成時に利用する可変
長データバッファのフォーマットを示す。ここで、47
は可変長データバッファのカレントの大きさmax_n
points、42〜44は同図(a)と同じである。
また、48は可変長データバッファに登録されている点
列の数cur_npoints、49は可変長バッファ
の点列データ部points[max_points]
である。
【0020】図4はCPU29によって実行される制御
プログラムを示すフローチャートである。ポインタ操作
装置23によって、表示レイアウト上のマウスカーソル
35を動かしてメニューパネル32の「曲線」の上に移
動し、マウスボタンのシングルクリックを行なうことで
曲線描画モードが選択される(ステップS0、S1、S
2)。この後、CPU29はRAM22に図3(b)に
示す可変長データバッファを確保すると(ステップS
3)、ステップ0に戻って次のイベント待ち状態にな
る。曲線描画モードでは、次にキャンバス34上で発生
するマウスイベントが曲線の入力データとして扱われ
る。
【0021】つぎに、ポインタ操作装置23によって、
マウスカーソル35をキャンバス34に移動し、曲線の
制御点位置でマウスボタンのシングルクリックを行なう
と、それによって曲線データが入力される(ステップS
0、S1、S4)。
【0022】入力された曲線データをRAM22に確保
された可変長データバッファに登録し(ステップS
5)、ステップS0に戻ってつぎのイベント待ち状態に
なる。キャンバス34上でシングルクリックを行なう動
作の繰り返し回数によって曲線の長さは決定される。
【0023】つぎに、図3(b)に示した可変長データ
バッファ確保の内部手続きとデータバッファに対するデ
ータの登録内部手続きについて説明する。
【0024】[可変長データバッファ確保の内部手続
き]可変長データバッファの確保は、可変長バッファの
点列データ部points[max_npoints]
49が256個になるようにメモリを配置する。データ
バッファを確保したら、可変長データバッファのカレン
トの大きさmax_points47に256を代入す
る。また、図形種別を表す番号を図形種別番号fign
o42に、面種を表すidを面種(id)brush4
3に、線種を表すidを線種類(id)pen44にそ
れぞれ格納し、可変長データバッファに登録されている
点列の数cur_npoints48を値0に初期化す
る。
【0025】[可変長データバッファへのデータ登録内
部手続き]データを登録する関数の入力は、可変長デー
タバッファの先頭アドレスと入力データ(座標値)であ
る。図7は登録される関数の処理ルーチンを示すフロー
チャートである。
【0026】今回登録しようとしているデータをバッフ
ァに格納できるか否かを調べる(ステップS31)。バ
ッファに空きがない場合はデータバッファの最大数を増
やし(ステップS32)、データバッファを拡張する
(ステップS33)。つまり、本実施例ではデータバッ
ファが256個単位で拡張されるが、この数を256に
限定することなく他の数でもよい。
【0027】ステップS31でバッファに空きがある場
合、あるいはデータバッファが拡張された場合には、可
変長データバッファpoints[cur_npoin
ts]に入力データを代入する(ステップS34)。可
変長データバッファに登録されている点列の数cur_
npoints48に対して値1だけカウントアップを
行なって(ステップS35)本ルーチンを終了する。
【0028】再び、図4の処理に戻って説明する。ポイ
ンタ操作装置23によって、マウスカーソル35をキャ
ンバス34に移動し、曲線の制御点位置でマウスボタン
のダブルクリックを行なうと、ステップS0の判断でス
テップS6に移行する。
【0029】ステップS6では、CPU29は図3
(a)に示した内部データ形式の領域をRAM22に確
保し、ここに可変長データバッファの内容を複写する。
複写されるデータは図形種別番号figno42〜線種
類(id)pen44、可変長データバッファに登録さ
れている点列の数cur_npoints48および可
変長バッファの点列データ部points[max_p
oints]49であり、可変長データバッファに登録
されている点列の数cur_npoints48に相当
する分の座標データである。レコードのサイズreco
rd_size41は計算によって求めることができ
る。
【0030】ステップS7では、CPU29は曲線の直
線近似(ステップS8)で使用される図3(c)の多角
形格納データバッファをRAM22に確保する。
【0031】図5はステップS8における曲線の直線近
似処理ルーチンを示すフローチャートである。まず、入
力された曲線データの座標値を16倍にする(ステップ
S21)。16倍にされた曲線データはRAM22に一
時的に確保されたバッファに格納される。格納された曲
線データに対して曲線の直線近似の処理を行なう(ステ
ップS22)。直線近似の処理が行なわれた多角形の座
標データはRAM22に一時的に確保されたバッファに
格納される。直線近似の処理では、16倍の精度の計算
を行なっているので、計算誤差は1/16に抑えられ
る。このとき、16倍にされた曲線データを格納したバ
ッファは解放される。
【0032】データバッファに格納された点列データの
連続した2点を順次抽出する(ステップS23)。図6
は曲線の直線近似処理を示す説明図である。ステップS
23で抽出された2点を、図6に示す点START、点
ENDとする。
【0033】点START、直線START−ENDの
傾きからp[1]、p[2]、…p[n]のそれぞれの
x座標に対応するy座標値を求める(ステップS2
4)。p[i]のそれぞれがどのピクセルに含まれるか
を求め、そのピクセルの座標値をステップS7で確保し
たデータバッファに格納する(ステップS25)。
【0034】この後、多角形から連続した2点の抽出を
全て終了したか否かを判別し(ステップS25A)、ま
だ抽出が残っているときにはステップS23に戻って処
理を繰り返し、終了したときはつぎのステップS26に
移行する。
【0035】ステップS26では、点ENDを含むピク
セルの座標値をステップS7で確保したデータバッファ
に格納する。このとき、多角形の座標データが格納され
ているRAM22に一時的に確保したバッファを解放す
る。
【0036】ステップS9では、ステップS7で確保し
たデータバッファのデータが示す多角形図形を多角形描
画関数で描画し、印刷装置26あるいは表示装置25に
出力する。さらに、ステップS10ではステップS7で
確保したデータバッファを解放し、ステップS11では
ステップS3で確保したデータバッファを解放する。
【0037】[第1実施例の変形例]前記第1実施例で
は、固定小数点演算によってp[i]のY座標値を求め
たが、これを浮動小数点演算に変えても、同様の効果を
得ることができる。また、前記第1実施例では、自由曲
線について述べているが、ベジェ曲線、B−splin
e曲線などあらゆる曲線に対して適用することができ
る。さらに、前記第1実施例では、直線近似を行なった
データを描画した直後に多角形格納データバッファを解
放しているが、このバッファを管理することで再度同じ
曲線を描画する際に行われる同じ処理を省力化でき、処
理スピードの向上を図ることができる。
【0038】[第2実施例]つぎに、第2実施例の図形
作成装置としての図形表示装置について説明する。本実
施例の図形表示装置は前記第1実施例と同一のハードウ
ェアの構成を有する。
【0039】図9は表示装置25に表示された表示レイ
アウトを示す説明図である。図において、11は作業エ
リアである。12は描画メニューパネルであり、マウス
カーソルを描画メニューパネル12の機能項目上に移動
し、マウスボタンのシングルクリックを行なうとその機
能項目が選択される。13は描画ウィンドウである。1
4はキャンバスであり、描画エリアの一部または全体を
表示する。キャンバス14上でマウス操作を行なうこと
により図形の座標データが入力される。15はマウスカ
ーソルであり、マウスの操作に連動して作業エリア11
内を移動する。
【0040】16は線種メニューパネルであり、マウス
カーソル15を線種メニューパネル16の機能項目上に
移動し、マウスボタンのシングルクリックを行なうと線
種が選択される。
【0041】ここで、線種としてパターンを選択したと
き、パターン設定パネル17が表示され、パターンの個
数とパターンの入力を要求する。パターンを入力した
後、パターン設定パネル17の確認ボタンを押すことに
よりパターンの設定が完了する。取消ボタンを押すと、
今回の線種設定の操作は無視され、以前の線種が適用さ
れる。
【0042】図10は図形データに付属する線種レコー
ドのフォーマットを示す説明図である。このフォーマッ
トにおいて、31は線のスタイルstyle(実線とパ
ターン線のいずれかを判別する番号)、32は論理的な
線幅width、33は線のキャップスタイルcap
(Butt Cap、Round Cap、Proje
cting Capを判別する番号)、34は線のジョ
インスタイルjoin(Bevel Join、Rou
nd Join、Miter Joinを判別する番
号)、35は曲線の直線近似を行なう際の許容誤差fl
atness、36はMiterJoinの最大Mit
er長さの制限値miter_limit、37はパタ
ーンの要素dash_count(実線の場合0)、3
8はdash_count分の要素を持つ配列dash
[dash_count]である。
【0043】図11はダッシュパターンを生成する際の
情報バッファおよび変数格納領域を示す説明図である。
情報バッファを示す同図(a)において、41は線分の
長さline_length、42は線分の区切り目で
中断されたパターンのインデックスinterupt_
index、43は線分の区切り目で中断されたパター
ンの残りの長さremained_length、44
はパターンの要素dash_count(実線の場合は
0)、45はdash_count分の要素を持つ配列
dash[dash_count]である。
【0044】また、変数格納領域を示す同図(b)にお
いて、46は処理カウンタi、47は処理カウンタj、
48はON部分の長さon_length、49はOF
F部分の長さoff_length、50は開始点x座
標値start_x、51は開始点y座標値start
_y、52は終了点x座標値end_x、53は終了点
y座標値end_yである。
【0045】図15は図形データのフォーマットを示す
説明図である。図形データのフォーマットは前記第1実
施例と同じである。即ち、内部データの各レコードの共
通フォーマットを示す同図(a)において、81はレコ
ードのサイズrecord_size、82は図形種別
番号figno、83は面種(id)brush、84
は線種類(id)pen、85は点列の数npoint
s、76は点列の配列(points[npoint
s])である。
【0046】また、可変長データバッファのフォーマッ
トを示す同図(b)において、87は可変長データバッ
ファのカレントの大きさmax_npoints、82
〜84は同図(a)と同じである。また、88は可変長
データバッファに登録されている点列の数cur_np
oints、89は可変長バッファの点列データ部po
ints[max_points]である。
【0047】図12はCPU29によって実行される第
2実施例の制御プログラムを示すフローチャートであ
る。ポインタ操作装置23によって、表示レイアウト上
のマウスカーソル15を描画メニュー12の「多角形」
の上に移動し、マウスボタンのシングルクリックを行な
うことによりステップS40、ステップS41、ステッ
プS42を経て多角形の描画モードが選択される。CP
U29はRAM22に図15(b)に示す可変長データ
バッファを確保すると(ステップS43)、ステップS
40に戻ってつぎのイベント待ち状態となる。多角形描
画モードでは、つぎにキャンバス14上で発生するマウ
スイベントがそのための入力データとして扱われる。
【0048】ポインタ操作装置23によって、表示レイ
アウト上のマウスカーソル15を線種メニューパネル1
6の「パターン」の上に移動し、マウスボタンのシング
ルクリックを行なうと、ステップS40、ステップS4
1、ステップS44を経てステップS45においてパタ
ーン設定パネル17が表示される。パターン設定パネル
17に対して、パターンの個数(偶数)を入力し、その
個数分のパターンの要素を「,」で区切って入力し確認
ボタンを押すと、図10に示す線種レコードの領域を確
保し、その線のスタイルstyle31にパターン線種
の番号を代入し、更に入力されたパターン情報をパター
ンの要素dash_count37とdash_cou
nt分の要素を持つ配列dash[dash_coun
t]38に設定する。この後、再び、ステップS40に
戻ってつぎのイベント待ち状態となる。
【0049】ポインタ操作装置23によってポインタ1
5をキャンバス14に移動し、曲線の制御点位置でマウ
スボタンのシングルクリックを行なうことによってステ
ップS40、ステップS41、ステップS46を経て曲
線データが入力される。入力されたデータをRAM22
に確保された図15(b)の可変長データバッファに登
録し(ステップS47)、ステップS40に戻ってつぎ
のイベント待ち状態になる。このキャンバス上でのシン
グルクリック動作の繰り返し回数で曲線の長さは決定さ
れる。ここで、図15(b)の可変長データバッファ確
保の内部手続きとデータバッファに対するデータの登録
内部手続きについて説明しておく。
【0050】[可変長データバッファ確保の内部手続
き]可変長データバッファの確保は、可変長バッファの
点列データ部points[max_npoints]
89が256個になるようにメモリを配置する。データ
バッファを確保したら、可変長データバッファのカレン
トの大きさmax_points87に256を代入す
る。また、図形種別を表す番号を図形種別番号fign
o82に、面種を表すidを面種(id)brush8
3に、線種を表すidを線種類(id)pen84にそ
れぞれ格納し、可変長データバッファに登録されている
点列の数cur_npoints88を値0に初期化す
る。
【0051】[可変長データバッファへのデータ登録内
部手続き]データを登録する関数の入力は、可変長デー
タバッファの先頭アドレスと入力データ(座標値)であ
る。前記第1実施例と同様に、今回登録しようとしてい
るデータをバッファに格納できるか否かを調べる。バッ
ファに空きがない場合はデータバッファの最大数を増や
し、データバッファを拡張する。つまり、本実施例では
データバッファが256個単位で拡張されるが、この数
を256に限定することなく他の数でもよい。
【0052】再び、図12の処理に戻って説明する。ポ
インタ操作装置23によって、ポインタ15をキャンバ
ス14に移動し、曲線の制御点位置でマウスボタンのダ
ブルクリックを行なうと、ステップS40の判断でステ
ップS48に移行する。
【0053】ステップS48では、図15(a)の内部
データ形式の領域をRAM22に確保して、ここに可変
長データバッファの内容を複写する。複写されるデータ
は図形種別番号figno82〜線種類(id)pen
84、可変長データバッファに登録されている点列の数
cur_npoints88および可変長バッファの点
列データ部points[max_points]89
であり、可変長データバッファに登録されている点列の
数cur_npoints88に相当する分の座標デー
タである。レコードのサイズrecord_size8
1は計算によって求めることができる。
【0054】ステップS49では、ダッシュパターンを
格納する可変長データバッファをRAM22に確保す
る。つづく、ステップS50でパターン線の生成を行な
う。
【0055】図13はパターン線を生成する処理ルーチ
ンを示すフローチャートである。まず、図11に示す作
業用情報バッファをRAM22に確保し(ステップS6
1)、この情報バッファを初期化する(ステップS6
2)。初期化に際して、パターンのインデックスint
erupt_index42を値0にし、線分の区切り
目で中断されたパターンの残りの長さremained
_length43を線種レコード中のdash[0]
にし、パターンの要素dash_count44に線種
レコード中のdash_countを複写し、dash
_count分の要素を持つ配列dash[dash_
count]45に線種レコード中のdash[das
h_count]を複写する。
【0056】つづく、ステップS63、ステップS64
でデータバッファに格納された点列情報から連続した2
点を抽出し、ステップS65で2点間の長さを求めて作
業用情報バッファの線分の長さline_length
41に格納する。ステップS66で2点間のダッシュパ
ターンを生成し、ダッシュパターン格納用可変長データ
バッファに格納する。つぎに、2点間のダッシュパター
ンを生成するステップS66の詳細について説明する。
【0057】図14は2点間のダッシュパターンを生成
する処理ルーチンを示すフローチャートである。まず、
処理カウンタj47を値0に初期化し、開始点X座標値
start_x50、開始点Y座標値start_y5
1を2点間の線分の開始点の座標値で初期化する(ステ
ップS71)。その線分に対しての処理が終了するまで
ループを発生させ(ステップS72)、その度毎に処理
カウンタj47のカウントアップを行なう。
【0058】また、ステップS72における線分のルー
プの内側にダッシュパターン分のループを発生させる
(ステップS73)。このループでは、処理カウンタi
46に初回のみ初期値としてパターンのインデックスi
nterupt_index42の値を代入する(ステ
ップS75)。それ以外の場合は処理カウンタiには値
0を代入する(ステップS76)。処理カウンタi46
が偶数か奇数かを判定し(ステップS77)、偶数であ
ればダッシュパターンのうち塗りつぶし部分であるON
部分からダッシュパターンの生成を開始する。
【0059】従って、ON部分の長さON_lengt
h48に残りの長さremained_length4
3の値を代入し(ステップS78)、OFF部分の長さ
OFF_length49に値0を代入する。
【0060】奇数であれば塗りつぶしを行なわない空白
部分であるOFF部分からダッシュパターンの生成を開
始する。したがって、ON部分の長さON_lengt
h48に値0を代入し(ステップS79)、OFF部分
の長さOFF_length49に残りの長さrema
ined_length43の値を代入する。
【0061】つづいて、ON部分の長さON_leng
th48が値0より大きいか否かを評価し(ステップS
80)、真ならばステップS81に偽ならばステップS
86に分岐する。
【0062】真の場合、開始点X座標値start_x
50、開始点Y座標値start_y51をダッシュパ
ターン格納用可変長データバッファに登録する。図16
はダッシュパターンの生成を示す説明図である。初回の
処理では、開始点X座標値start_x50、開始点
Y座標値start_y51は図16のA点で示す座標
値に相当する。
【0063】ON部分の長さON_length48を
満たすベクトルを算出し、終了点x座標値end_x5
2、終了点y座標値end_y53を求める(ステップ
S82)。このとき、線分の終端に達し、パターンの一
部を残している場合にはその残している長さを残りの長
さremained_length43に格納する。残
していない場合には値−1を残りの長さremaine
d_length43に格納する。
【0064】終了点x座標値end_x52、終了点y
座標値end_y53をダッシュパターン格納用可変長
データバッファに登録する(ステップS83)。初回の
処理では、終了点x座標値(end_x)52、終了点
y座標値(end_y)53は図16のB点の座標値に
相当する。
【0065】ステップS84では、残りの長さrema
ined_length43が負であるか否かを評価
し、これが真の場合にステップS86に移行し、偽の場
合にステップS85に移行する。ステップS85では、
残りの長さremained_length43が値0
の場合、処理カウンタiの値に1を足した値をインデッ
クスinterupt_index42に代入し、値0
でない場合に処理カウンタiの値を代入してステップS
63に戻る。図16(c)は残りの長さremaine
d_length43が正である場合を示す。
【0066】ステップS86では、OFF部分の長さを
考慮し、新しい開始点X座標値start_x50、開
始点Y座標値start_y51を算出する。初回の処
理では開始点X座標値start_x50、開始点Y座
標値start_y51は図16のC点である。このと
き、線分の終端に達し、パターンの一部を残している場
合は、その残りの長さremained_length
43に格納する。
【0067】ステップS87では、残りの長さrema
ined_length43が負であるか否かを評価
し、これが真の場合にステップS89に移行し、偽の場
合にステップS88に移行する。ステップS88では、
残りの長さremained_length43が値0
の場合はインデックスinterupt_index4
2に処理カウンタiの値を代入し、値0でない場合は処
理カウンタiに値1を足した値をインデックスinte
rupt_index42に代入してステップS63に
戻る。
【0068】ステップS89では、ダッシュパターン分
のループが終了したか否かを判別し、終了していないと
きはステップS73に移行し、終了しているときはステ
ップS72に移行する。
【0069】以上示した処理を繰り返し行なうと、必ず
ステップS85あるいはステップS88に達し、一直線
分のパターン生成が終了する。
【0070】ステップS66の処理が終了すると、ステ
ップS63に戻る。ステップS64〜ステップS66の
処理は直線の数だけ繰り返し行なわれ、それが終了する
とステップS51に戻る。
【0071】ステップS51では短い線分の集合を表示
装置25あるいは印刷装置26に描画する。ステップS
52では、ステップS49で確保したダッシュパターン
格納用可変長データバッファを解放し、ステップS53
ではステップS43で確保したデータバッファを解放し
て再びステップS40に戻る。
【0072】
【発明の効果】本発明の請求項1に係る図形作成装置
は、入力手段により曲線データを入力し、拡大手段によ
り該入力された曲線データの座標値を拡大し、近似手段
により該拡大された曲線データの座標値間を直線で近似
し、展開手段により該直線で近似された曲線データをビ
ットマップに展開し、出力手段により該展開されたビッ
トマップを用いて前記曲線データの多角形を出力するの
で、曲線の直線近似の結果を滑らかな多角形に変換する
ことができ、より滑らかな曲線図形を描画できる。
【0073】請求項2に係る図形作成方法は、曲線デー
タを入力し、該入力された曲線データの座標値を拡大
し、該拡大された曲線データの座標値間を直線で近似
し、該直線で近似された曲線データをビットマップに展
開し、該展開されたビットマップを用いて前記曲線デー
タの多角形を出力するので、曲線の直線近似の結果を滑
らかな多角形に変換することができ、より滑らかな曲線
図形を描画できる。
【0074】本発明の請求項3に係る図形作成装置は、
入力手段により図形を入力し、設定手段により該入力さ
れた図形の属性を設定し、生成手段により該設定された
属性に応じた前記図形の形状を生成し、出力手段により
該生成された図形の形状を出力するので、ユーザが任意
に図形の属性を定義でき、容易に所望の図形を描画でき
る。
【0075】請求項4に係る図形作成装置は、前記図形
の属性はダッシュパターンであるので、ユーザが任意に
ダッシュパターンの線描画を定義できる。
【0076】請求項5に係る図形作成方法は、図形を入
力し、該入力された図形の属性を設定し、該設定された
属性に応じた前記図形の形状を生成し、該生成された図
形の形状を出力するので、ユーザが任意に図形の属性を
定義でき、容易に所望の図形を描画できる。
【図面の簡単な説明】
【図1】図形作成装置として適用された図形表示装置の
構成を示すブロック図である。
【図2】表示装置25に表示された描画ウィンドウ、メ
ニューパネルの表示レイアウトを示す説明図である。
【図3】図形データのフォーマットを示す説明図であ
る。
【図4】CPU29によって実行される制御プログラム
を示すフローチャートである。
【図5】ステップS8における曲線の直線近似処理ルー
チンを示すフローチャートである。
【図6】曲線の直線近似処理を示す説明図である。
【図7】登録される関数の処理ルーチンを示すフローチ
ャートである。
【図8】計算通りに滑らかな曲線を描画できない場合を
示す説明図である。
【図9】表示装置25に表示された表示レイアウトを示
す説明図である。
【図10】図形データに付属する線種レコードのフォー
マットを示す説明図である。
【図11】ダッシュパターンを生成する際の情報バッフ
ァおよび変数格納領域を示す説明図である。
【図12】CPU29によって実行される第2実施例の
制御プログラムを示すフローチャートである。
【図13】パターン線を生成する処理ルーチンを示すフ
ローチャートである。
【図14】2点間のダッシュパターンを生成する処理ル
ーチンを示すフローチャートである。
【図15】図形データのフォーマットを示す説明図であ
る。
【図16】ダッシュパターンの生成を示す説明図であ
る。
【符号の説明】
22 RAM 23 ポインタ操作装置 24 データ入力装置 25 表示装置 26 印刷装置 29 CPU 11、31 作業エリア 12 描画メニューパネル 13、33 描画ウィンドウ 17 パターン設定パネル 32 メニューパネル
───────────────────────────────────────────────────── フロントページの続き (51)Int.Cl.6 識別記号 庁内整理番号 FI 技術表示箇所 G06F 15/66 410

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】 曲線データを入力する入力手段と、 該入力された曲線データの座標値を拡大する拡大手段
    と、 該拡大された曲線データの座標値間を直線で近似する近
    似手段と、 該直線で近似された曲線データをビットマップに展開す
    る展開手段と、 該展開されたビットマップを用いて前記曲線データの多
    角形を出力する出力手段とを備えた図形作成装置。
  2. 【請求項2】 曲線データを入力し、 該入力された曲線データの座標値を拡大し、 該拡大された曲線データの座標値間を直線で近似し、 該直線で近似された曲線データをビットマップに展開
    し、 該展開されたビットマップを用いて前記曲線データの多
    角形を出力することを特徴とする図形作成方法。
  3. 【請求項3】 図形を入力する入力手段と、 該入力された図形の属性を設定する設定手段と、 該設定された属性に応じた前記図形の形状を生成する生
    成手段と、 該生成された図形の形状を出力する出力手段とを備えた
    図形作成装置。
  4. 【請求項4】 前記図形の属性はダッシュパターンであ
    ることを特徴とする請求項3記載の図形作成装置。
  5. 【請求項5】 図形を入力し、 該入力された図形の属性を設定し、 該設定された属性に応じた前記図形の形状を生成し、 該生成された図形の形状を出力することを特徴とする図
    形作成方法。
JP30432794A 1994-11-14 1994-11-14 図形作成装置および図形作成方法 Pending JPH08138068A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP30432794A JPH08138068A (ja) 1994-11-14 1994-11-14 図形作成装置および図形作成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP30432794A JPH08138068A (ja) 1994-11-14 1994-11-14 図形作成装置および図形作成方法

Publications (1)

Publication Number Publication Date
JPH08138068A true JPH08138068A (ja) 1996-05-31

Family

ID=17931683

Family Applications (1)

Application Number Title Priority Date Filing Date
JP30432794A Pending JPH08138068A (ja) 1994-11-14 1994-11-14 図形作成装置および図形作成方法

Country Status (1)

Country Link
JP (1) JPH08138068A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011210164A (ja) * 2010-03-30 2011-10-20 Fujifilm Corp ページ記述データ処理装置、方法及びプログラム
US8941878B2 (en) 2010-03-30 2015-01-27 Fujifilm Corporation Page description data processing apparatus, page description data processing method, and recording medium

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011210164A (ja) * 2010-03-30 2011-10-20 Fujifilm Corp ページ記述データ処理装置、方法及びプログラム
US8941878B2 (en) 2010-03-30 2015-01-27 Fujifilm Corporation Page description data processing apparatus, page description data processing method, and recording medium

Similar Documents

Publication Publication Date Title
JP2000155859A (ja) 数値解析用メッシュ生成方法およびメッシュ生成装置
JPH06309395A (ja) 画像作成装置
JPH08138068A (ja) 図形作成装置および図形作成方法
JPH03233689A (ja) アウトラインデータ描画装置
JP2875135B2 (ja) プログラマブルコントローラ用プログラム装置
CN113220375B (zh) 基于Allegro软件生成镂空文丝印的方法及***
JPS63217394A (ja) 文字輪郭線生成方式
JP2000067258A (ja) 図面作図装置
JPH11102177A (ja) 書体データ作成装置と書体データの作成方法、及び記憶媒体
JP3269686B2 (ja) 画像作成装置
JP3378662B2 (ja) 文書処理装置
JP2753015B2 (ja) 属性入力方法
JP2971486B2 (ja) 作画システム
JPH04177294A (ja) ベクトルフオント展開装置
JPH06110442A (ja) 文字図形処理装置、及び文字または図形の変形処理方法
JP3302455B2 (ja) 情報処理装置
JPH0695642A (ja) 文字・記号パターンの生成装置
JPH08147463A (ja) 図形作成装置
JPH05143053A (ja) 拡大・スムージング機能付き文書処理装置
JPH04131973A (ja) 図形出力装置
JPS58208864A (ja) ディスプレイの作画方法
JPH0675817A (ja) 状態遷移ルールの動作履歴表示方法
JP2001306056A (ja) フォント編集方法及びフォント編集装置
JPH03105573A (ja) 画像処理装置及び画像処理方法
JPH05314237A (ja) 図形作成装置