• 検索結果がありません。

2次元コンピュータ・グラフィックスのための学習用プログラムの作成 : 基本命令から図形描写まで

N/A
N/A
Protected

Academic year: 2021

シェア "2次元コンピュータ・グラフィックスのための学習用プログラムの作成 : 基本命令から図形描写まで"

Copied!
33
0
0

読み込み中.... (全文を見る)

全文

(1)

2次 元 コン ピュー タ ・グ ラ フ ィ ックス の た めの 学 習用 プ ログ ラあ の

作成

基 本命 令 か ら図形描 写 まで

哲 夫

How to Make

a Program

of 2-Dimentional

Computer

Graphics

for Learnning

-Rang

from Programming Basic Routines to Drawing a Picture

Tetsuo

HIROUCHI

A raster

scan type of display

is suitable

for the begginers'

learning

computer

graphics(CG). This type of display generates a many dots on the screen, what are called"

picsels". As a result of assembling picsels, a picture or graph is formed on the screen.

But the biginners hardly know the theory of raster scan graphics. It is reported

in

this paper that the two-dimensional

CG4 program

is developed to help the beginners

understand

easily this theory.

Both using and understanding

the program will give them a knowlegde of process of

transforming

a picture

into a set of picsels by function such as difinition of picture,

geometry

transformation,

window-viewport

transformation,

clipping, generation

of line

and so on.

1.は じ め に

現 在,初 心 者 向 きの コ ン ピ ュー タ ・グ ラ フ

ィ ック ス(CG)と

い え ば,ラ ス タ ー ス キ ャ ン

型 グ ラ フ ィ ック ス で あ る。 この グ ラ フ ィ ッ ク

ス は デ ィス プ レ イ画 面 の ピ クセ ル と呼 ばれ る

点 を1つ づ つ発 光 させ て,全 体 で 図 形 ・画 像

を創 り出 す もの で あ る。 これ は新 聞 の写 真 と

同 じで,近

くで見 る と点 が 多 数 集 ま っ て見 え

るが,遠

く離 れ た 所 か ら見 る と,1つ

の 図形

や絵 と して 見 え る とい う原 理 を採 用 して い る。

簡便 な ラ ス ター ス キ ャ ン型 デ ィス プ レイ で

も,'一 画 面 に25万6千

個 もの ピク セ ル が存 在

す る。しか し なが ら,CGの

初 心者 は この ピ ク

セ ル の存 在 に余 り気 が つ か な い よ うで あ る。

点(ピ

ク セ ル)の 集 ま りか ら1つ の 線 分 が 描

か れ,ま た 線 分 の 集 ま りか ら1つ の面 の色 塗

りが な され る とい うラ ス タ ー グ ラ フ ィ ッ クス

の原 理 を教 え る と,初 め て そ の存 在 を理解 す

る。 そ して グ ラ フ ィ ッ ク ・エ デ ィ ター 等 を使

っ て 図形 を作 成 す る初 心 者 は,最 終 的 に そ の

CGソ

フ トウ ェア に よ っ て コ ン トロ ー ル さ れ

た1つ

ユつ の ピ ク セル の発 光 か ら図形 が 形 成

され る こ とを知 る と,そ の ソ フ トウ ェア の作

画 ア ル ゴ リズ ム の精 巧 さ に驚 くもの で あ る。

筆 者 は大 学 の文 科 系 の学 生 の た め に初 等 的

な ラ ス タ ー グ ラ フ ィ ッ クス を教 えて い る。 そ

の 経 験 か らす る と,一 般 に学 生 が 興 味 を示 す

(2)

3次 元 の 物 体 表 示 や そ の 質 感 を表 現 す る レ イ

トレー シ ン グ な どの技 術 だ け を教 え るの は,

賢 明 な や り方 で な い と考 え る。 コ ン ピ ュー タ

に よ る作 画 は,画 面 とい う2次 元 平 面 が 基 礎

で あ り,2次

元 の理 論 的 取 り扱 い が 理 解 で き

な くて は,CG教

育 の 基 礎 は ぐ らつ い て し ま

う。

2次 元 図 形 は コ ン ピ ュー タで どの よ うに定

義 され る の か,そ の 図 形 デー タ は どの よ うな

ア ル ゴ リズ ム に よ っ て 処 理 さ れ る の か,そ

し て最 終 的 に どの よ うに して画 面 上 の1つ1

つ の ピク セ ル の 発 光 とし て図 形 が 再 現 され る

の か,等 の 基 本 的 な原 理 を学 ぶ こ とは,初 心

者 に と って 非 常 に重 要 な テ ー マ で あ る。

筆 者 は教 育 の場 で この よ うな こ と を理 解 さ

せ る初 心 者 用 の2次 元CGプ

ロ グ ラ ム を開 発

した の で 報 告 す る。 使 用 言語 は,現 在 の と こ

ろ ラ ス タ ー グ ラ フ ィ ッ ク スの 学 習 に は最 適 な

日本 電 気 製 のN88-BASIC(86)(以

降BASIC

と略 記 す る)を 用 い る。第2章 でBASICの

ラ フ ィ ツク機 能 お よ び一 般 のCGソ

フ トウ ェ

ア の持 つ必 要 最 小 限 の機 能 を示 す。 第3章

は そ れ ら と同 様 な機 能 の基 礎 作 画 ル ー チ ン を

ソ フ トウ ェ ア命 令 と して 実現 す る方 法 を示 す 。

そ して 第4章

で,ピ

クセ ル の 発 光 を統 合 化 さ

れ た 図 形 描 画 プ ロ グ ラム に よ りコ ン トロー ル

す る こ とに よっ て,図 形 をデ ィス プ レ イ画 面

上 に描 き出 す 方 法 を紹 介 す る。

2.コ ン ピ ュ ー タ ・グ ラ フ ィ ッ ク ス の ・一般 機 能

本 稿 は一 般 のCGソ

フ トウ ェア の 持 つ 基 礎

作 画 ル ー チ ン を ソ フ トウ ェ ア命 令 と して作 成

す る こ と を 目的 と して い る。 そ こ で本 章 で は,

第3章 以 降 の 基 本 作 画 ル ー チ ン を作 成 す る う

え で必 要 とな る機 能 の 概 略 を,BASICの

能 と対 応 させ て説 明 す る。

2.1BASICの

グ ラ フ ィ ック 文

BASICに

備 わ っ て い るグ ラフ ィック機 能 の

中 で,基 本 的 な 作 画 に関 す るハ ー ドウ ェア命

令 は,'次 の ス テ ー トメ ン トで あ る。

・PSET文

… … … 指 定 の画 面 位 置 に存 在 す

る ピ ク セ ル を 指定 の色 で

発 光 させ る。

・POINT文

… … …画 面 の ピク セ ル の 位 置 を

指 定 す る(ピ クセ ル は発

光 させ な い)。

・LINE文

… … … 指 定 の 画 面 位 置 か ら指 定

の 画 面 位 置 の間 に存 在 す

る ピ クセ ル を,指 定 の色

で 発 光 させ て線 分 を描 く。

・PAINT文

… … … 指定 の 色 で 発 光 し た ピク

セ ル が 形 成 す る閉 曲線 内

部 の 領 域 の ピ ク セ ル を,

指 定 の色 で す べ て発 色 さ

せ て,そ の領 域 に 色 を塗

る。

上 記 の4つ の ス テ ー トメ ン トは,ピ

クセ ル

とい う用 語 を用 い て そ の機 能 が 説 明 され て い

る。 ラ ス タ ー グ ラ フ ィ ック ス の"線

は点 の 集

ま りか ら定 め られ る"と い う原 理 に よ り,

LINE文

の機 能 は,BASICの

ハ ー ドウ ェ ア命

令 で あ るPSET文

を用 い て ソ フ トウ ェ ア 命

令 と して作 り出 す こ とが 可 能 で あ る。 また,

湎 は直 線 の 集 ま りに よ って 定 め られ る"と

い う原 理 に よ り,PAINT文

の 機 能 は,同 じ く

ハ ー ドウ ェア 命 令 のLINE文,さ

らに はPSET

文 を用 い て ソフ トウ ェア 命 令 と して作 り出 す

こ と も可 能 で あ る。

3,1節

と3.2節

の 目 的 は;LINE文

PAINT文

の持 つ機 能 を唯 一 の ハ ー ドウ ェ ア

命 令 で あ るPSET文

を 用 い て ソ フ トウ ェ ア

命 令 と して作 り出 す こ とで あ る。

2.2ウ

イ ン ドウ ービ ュー ポ ー ト変 換 とク リ

ツ ピン グ

作 画 機 能 以 外 の 基 礎 機 能 と し て,BASIC

に は次 の2つ

のハ ー ドウ ェア命 令 が存 在 す る。

・WINDOW文

… … … ウイ ン ドウ を定 義 す

る。

・VIEW文

ビ ュー ポー トを定 義

(3)

図1ウ ィ ン ドウ と ピ ュ ー ポ ー ト 図2マ ル チ ビ ュ ー ポ ー ト 図3 ク リッ ピ ン グ す る 。 CGに お い て は 一 般 に,画 面 上 の 座 標(ピ ク セ ル そ の も の)を ス ク リー ン 座 標 と呼 び,利

用者 の 定義 す る座 標 をワ ー ル ド座 標 と呼 ぶ 。

ウ イ ン ドウ とは,広 大 な ワー ル ド座 標 系 の 中

で画 面 に写 し出 した い部 分 の領 域 で あ り,ビ,

ユー ポー トとは,ウ イ ン ドウ を実 際 に 写 し出

す 画 面 上 の領 域 で あ る。 ウ イ ン ドウ と ビ ュー

ポー トの 関係 を図1に 示 す。

WINDOW文

とVIEW文

が ペ ア で 用 い ら

れ る と,それ らの文 は,ワ ール ド座 標 系 で 表 現 さ

れ た図 形 デ ー タ をス ク リー ン座 標 系 の デ ー タ

に 自動 変 換 す る。これ を ウ イ ン ドウービ ュー ポ

ー ト変 換 と呼 ぶ 。

またCGで

は一 般 に,図2に

示 す よ うに,

1画 面 に複 数 個 の ウ イ ン ドウ を それ と同数個

の ビ ュー ポ ー トと して 設 定 す る こ とが で きる。

これ をマ ル チ ビ ュー ポー ト と呼 ぷ 。 そ の た め

に 画 面表 示 の 際,ビ

ュー ポー ト領 域 か らは み

出 した 図 形 を,図3の

よ うに刈 り取 る ク リッ

ピ ン グ と呼 ば れ る操 作 が行 わ れ る。VIEW文

は これ を行 う。

3.3節 と3.4節 の 目 的 は,WINDOW文

VIEW文

と同 様 な機 能 の 基 礎 作 画 ル ー チ ン

を ソフ トウ ェア 命 令 として 作 り出す こ とで あ

る。

2.3幾

何 変 換

CGに

お け る重 要 な 技 術 の1つ

は,図 形 全

体 を二 定 の 規 則 の も とに変 形 す る こ とで あ る。

これ を幾 何 変 換 と呼 ぶ。 例 え ば高 層 ビル を表

現 す る3次 元 モ デ ル に3次 元幾 何 変換 を適 用

す れ ば,実 際 に 飛行 機 に乗 って 高 層 ビル群 を

(4)

支社別自動車販売実籔

図4ビ

ジネ スグ ラフの例

斜 め に上 か ら,真 上 か ら,あ る い は遠 方 上 空

か ら眺 め た よ うな 景 観 を画 面 上 に作 り出 す こ

とが で き る。 幾 何 変 換 に は,平 行 移 動,拡 大

縮 小,反

転,せ

ん断,回 転 等 の変 換 が あ る。

これ らの 変 換 は2次 元 グ ラフ ィ ック とい え ど

も,初 心 者 のCG学

習 に は不 可 欠 の課 題 の1

つ で あ る。

一 般 のCGソ

フ トウ ェア は この 幾 何 変 換 の

た め の ハ ー ドウ ェア命 令 を持 って い る。 残 念

な こ とにBASICで

は この命 令 を持 っ て い な

い 。

3.5節

の 目的 は この 幾 何 変 換 の 基 礎 作 画

ル ー チ ン を ソ フ トウ ェ ア命 令 と して作 成 す る

こ とで あ る。

2.4図

形 デ ー タの 定 義

図 形 を描 き 出 す に は,そ れ を構 成 す る図 形

要 素 を定 義 す る必 要 が あ る。 例 え ば風 景 を描

く場合,.そ の構 成 要 素 で あ る家,木,動

物,

雲 な どの 図形 要 素 が 必 要 で あ る。 図4に 示 す

よ うな ビジ ネ ス ・グ ラ フ ィ ックス を作 成 す る場

合 に は,自 動 車 を図 形 要 素 と して定 義 しな け

れ ば な らな い 。

一 般 のCGソ

フ トウ ェ ア にお い て は,図 形

デ ー タ ベ ー ス を持 っ て お り,こ の よ う な図 形

をデ ー タベ ー ス に蓄 積 で き る よ う に な っ て い

る。しか し,BASICで

は この よ うな機 能 を持

っ て お らず,図 形 要 素 の 定 義 お よび保 存 は,

利 用 者 自身 が 行 わ な けれ ば な らな い 。

第4章

の 目的 は,論 理 的 にす べ て の 図 形 の

定 義 が で き る一 筆 書 きの 図形 デ ー タの 定 義 方

法 とそ の 図形 描 写 の プ ログ ラム を示 す こ とで

あ る。

3.基

礎 作 画 ル ー チ ン の ア ル ゴ リズ ム

3.1直 線 の 作 画 Bresenhamは 整 数 の 加 減 算 の み を 用 い て, デ ジ タ ル 直 線 を 描 く ア ル ゴ リ ズ ム を 考 察 し た 。 こ れ はDDA(DigitalDifferentialAna1・ yzer;デ ジ タ ル 徴 分 解 析 機)と 呼 ば れ る 有 名 な 方 法 で あ る 。(2'4'5)本章 で は こ の 方 法 を 用 い て デ ジ タ ル 直 線 の ソ フ トウ ェ ア 命 令 で あ る 基 礎 作 画 ル ー チ ン を 実 現 す る 。 以 下 にDDAア ル ゴ リ ズ ム を 紹 介 す る 。 直 線 の 方 程 式 は y=dxx(1) で 表 わ さ れ る 。 こ こ でdy/dxは 直 線 の 傾 き で あ る 。 あ る ピ ク セ ル の 座 標 を(x,,y、)と し,そ のx>0の 方 向 に 隣 り合 う ピ ク セ ル の 座 標 を (x彦+1,ツ`+1)と す れ ば, xt+、=x十1(2) の 関 係 が 成 り立 ち,xtに お い てyの 真 の 値 と ytの 差 をet(こ れ を 誤 差 項 と 呼 ぶ)と す れ ば,xtに お け るyaの 値 と の 差et+iは, dx et・・=et+d y(3) で 与 え ら れ る 。 そ こで,

:1:1:::綴;1三;1ン!@)

とす れ ば,初 期 値 裾y。,e。 を 定 め る と, 式(2)に よ るxtの 変 化 に 応 じ て,式(4)か ら ツ・ の 値 を 逐 次 決 定 す る こ と が で き る 。 座 標 (xt,ッ`)の 発 光 し た ピ ク セ ル の 点 列 が 求 め る デ ジ タ ル 直 線 で あ る 。 こ れ を 図5の 流 れ 図 に 示 す 。 し か し,式(3),式(4)に は 除 算 お よ び 実 数 演 算 が 含 ま れ て い る の で,こ の2つ の 演 算 を 取 り 除 き,整 数 の 加 減 算 の み で デ ジ タ ル 直 線 を

(5)

図5Bresenhamの 直 線 描 画 ア ル ゴ リズ ム 決 定 す る こ と に す る。 そ こ で 式(4)の 誤 差 項et の 判 定 を,etが0.5よ り大 き い か 小 さ い か で 行 っ て い た が,こ れ を 新 し い 誤 差 項 e!a=et-0.5(5> を 用 い て,e'tが 正 か 負 か を 判 定 す る こ と と す る 。 こ れ は さ ら に 新 し い 誤 差 項 e"t=2(emsO.5)dx(6) を 用 い て も 同 じ こ とで あ る 。 そ こ で 誤 差 項 目e"iを 導 入 し,式(3),式(4)を 次 の よ う に 変 更 す る 。 e"t+1=e"`一 ト2∠1ッ(7) (た だ しe"。=-dx)

1∴

∴:鼠:2dy(8)

これ が 整 数 化 され たDDAア

ル ゴ リズ ム で あ

る。

リス ト1に こ の ア ル ゴ リ ズ ム を 用 い て

作 成 さ れ た 直 線 描 画 の ソ フ トウ ェ ア 命 令

で あ る 基 礎 作 画 ル ー チ ンDDAを

示 す。 行

番 号2100∼2170は1∠ ッ/∠

κ1≦1の 時,行 番 号

2190∼2250はldy/」

到>1の

時,そ

れ ぞ れ

利 用 され る。 以 下 に この サ ブル ー チ ン の引 数

お よび その 内 容 を示 す 。

・入 力 用 引 数

変 数X1,Y1…

… 線 分 の 始 点 座 標

変 数X2,Y2…

… 線 分 の 終 点 座 標

・出 力 用 引 数

な し

な お,線 に色 を付 け るの は,BASICの

ス テ

ー トメ ン トで あ るPSET文

PSET(X,Y),C

のパ ラメ ー タCに 該 当 す る色 コー ドを指 定 す

れ ば よい。

3.2色

塗 り

3.2.1基

本 的 な考 え方

図形 に色 を塗 る考 え方 の基 本 は,そ の 内 部

を色 の付 い た デ ジタ ル直 線 で隙 間な く埋 め る

こ とで あ る。 そ うす れ ば 図形 内部 に存 在 す る

ピク セ ルが すべ て発 光 す るの で,図 形 に色 を

塗 っ た こ とに な る。 ラ ス タ ー グ ラ フ ィ ッ クス

の世 界 で は線 が 点 か ら成 り立 って い る よ う に,

面 は線 か ら成 り立 っ て い る と考 え る。 本 章 で

は筆 者 の 考 案 した色 塗 りの ア ル ゴ リズ ム を紹

介 し,そ れ を用 い て色 塗 りの ソ フ トウ ェア 命

令 で あ る基 礎 作 画 ルー チ ン を実 現 す る こ とに

す る。

色 塗 りの 手 続 きの概 略 は次 の通 りで あ る。

図6に 示 す よ う に,ま ず直 線1,と 図 形 を構 成

す る辺 との 間 で 交 点P,,Q1を

求 め る。Pi,Q1

の 間 にデ ジ タル 直 線 を描 く。 そ し て この手 順

を 図6の 直 線11か

ら1。 に つ い て繰 り返 し行

う。 た だ し直 線1、,12,…

…,1。 か ら求 ま

る デ ジ タ ル 直線 は相 接 し合 う もの とす る。 図

形 領 域 の す べ て にデ ジタ ル 直 線 を描 く こ とが

(6)

リ ス ト1 2000,零**零***零 零****零*零*******零*竃*零 零****零 零*零 零零‡*零*零**零*零****** 2010,*DDA.サ フゆル ーチン* 2020,塞*零 ‡*零**零 零**零 窯零***零 零***零 家家零*零 象***零 零零*零 零零*零 零塞***零 零****** 2030*DDA 2040DEFINTI 20501×1=X1:IY1=YI:.IX2=X2:IY2=Y2 20601DX=IXZ-TX1:IDY=IYZ-IY1 20701A=ABS(IDX):IB=ABS(IDY) 20801X=IX1:IY=IY1 20901FIA>-IBTHENGOTO2110ELSEGOTO2190 2100,一 一b-一 一一一 一一一一一 一一一一一 一一一一一 一一一一一一 一一一一一 一一一 一一一一一一 一一一一一 一一一 一一一一 21101E=-ABS(IDX) 2120PSET(IX,IY),COL 21301FIX=IX2THENGOTO2260 21401X=IY+SGN(IDX) 21501E=IE+2*IB 21601FIE>=OTHENIY=IY+SGN(IDY):IE=IE-2*IA 2170GOTO2120 2180'一 一一一一一 一一一一 一一一一一一 一一一一一 一一一一 一一一一一 一一一一一 一一一一 一一一一一一 一一一一 一一一 一一一 21901E=-ABS(IDY) 2 .200PSET(IX,IY),COL 2210工FIY=IY2THENGOTO2260 22201Y=工Y+SGN《IDY} 22301E=工E十2*IA 22401FIE>=OTHENIX=IX+SGN(IDX):IB=IE-2*IB 2250GOTO2200 2260DEFSNGI 2270RETURN

図6デ

ジ タル直線 に よる色塗 り'

で きた ら,色 が 塗 れ た こ と にな る。

3.2.2交

点 の決 定

図7に 示 す よ うに1つ の 直線1に 対 す る交

点 が4つ 以 上 求 まる 図形 も存 在 す るが,ま

1つ の 直 線1に 対 して交 点 が2つ だ け求 ま る

簡 単 な 図 形 を取 り上 げ る。 こ こ で は前 者 を 凹

多 角 形,後 者 を凸 多 角形 と呼 ぶ こ とにす る。

凹 多 角 形 は後 で説 明 す るが,そ

れ は 凸 多 角形

図7凹 多 角 形 の 交 点

に比 べ て取 り扱 い が 難 し くな る。

図8(1)を 用 い て,直 線1,と 辺 との交 点 を 求

め る方 法 を説 明 す る。 計 算 が 簡 単 に な る よ う

に,直 線1童 は水 平 す な わ ちx軸

と平 行 で あ る

とす る。 そ こで,こ の1iを こ こで は水 平 直 線

と呼 ぶ こ とに す る。水 平 直 線1,を 次 の よ うに

定 め る。

y=h(9)

(7)

(i)条

件 を満 た す点

(2)条

件 を満 た さ な い 点

図8水

平直線 との 交点

図 形 の 頂 点A((x、,ッ 、))と 頂 点B(x,, y、)を 結 ぶ 直 線 の 方 程 式 は yx2 -x'(x-xl)+y,(10)21 と表 現 さ れ る 。図8(1)に 示 す よ う に,線 分AB と水 平 直 線1,と の 交 点P1の 座 標(㌔y。 〉 は,式(9),式(1① の 解 か ら

;ゴ ≡llh)+x,}⑪

と得 られ る(た だ しy、=y2の

場 合 に は,解 は

不 能 ま た は不 定 とな る)。 しか し,こ の座 標

は,

一鳶 爵1鷺:寫:}(12)

な る条件 を満 た す 必 要 が あ る。 とい うの は,

も し満 た さな い 場 合 に は,点P1は

図8(2)に 示

す よ う な 線 分ABの

延 長 線 上 に存 在 す る こ

と にな るか らで あ る。

同様 に頂 点Cと 頂 点Dを 結 ぶ 線 分CDと

平 直 線1iと の 交 点Qiの 座 標 を 次 の よ う に求

め る。

糞1:蝋}(13)

この座標 は次の条件 を満 たす必要が ある。

;::;蘆;灘 篤 窪嶽}(14)

と ころ で,人 間 は水 平 直 線 と交 わ る辺 を一

瞬 の うち にパ タ ー ン認 識 能 力 を用 い て選 び 出

す こ とが で き る。 そ れ故,我

々 は交 わ らな い

辺 とliと の交 点 を求 め る こ とな どは,始 め か

ら無 意 識 に 除外 して,必 要 な辺 と1iと の交 点

だ け を選 択 的 に求 め る。 この作 業 は人 間 が頭

の 中 で行 う に は容 易 で あ るの で,選 択 的 に交

点 を求 め る プ ロ グ ラ仏 を作 成 す る こ と は一 見

簡 単 そ う に思 わ れ る。 しか し,こ の よ うな パ

タ ー ン認識 の 含 まれ た プ ログ ラム を開発 す る

こ とは非 常 に大 変 で あ る。

そ こで 便 法 を講 じ,水 平 直線11と 図形 を構

成 す るす べ て の辺 との 間 で総 当 た りで交 点 を

求 め る。そ して,こ の交 点 の座 標 の 中 か ら条 件

(12)お

よ び(14)を

満 た す交 点 の み を選 び 出 す。 こ

れ が 交 点PiとQiの

座 標 とな る。 この よ う に

し て求 めた 点Piと 点Qiと の 間 に デ ジ タル 直

線 を描 くの で あ る。

3.2.3問

題点

しか し,こ の よ うな単 純 な ア ル ゴ リズ ム で

は 問題 が発 生 す る。 そ れ は図9に 示 す よ うな

図形 で は,頂 点A,E間

に はデ ジ タル 直 線 を

描 くこ とが で き るが,頂 点B,D間

に は描 く

こ とが で きな い 。 これ は頂 点 にお け る交 点 を

(8)

図io頂 点 に お け る 交 点 求 め る 順 番 に 関 係 す る 。 例 え ば 図10に 示 す 四 角 形 の 場 合,頂 点B, Dの そ れ ぞ れ に お い て2つ,合 計4つ の 交 点 が 求 ま る 。 そ の4つ の 交 点 と は,頂 点B,C を 通 る 水 平 線 分1と そ れ ぞ れ の 辺a,b,c, dと の 交 点 で あ る 。 交 点 を 求 め る 順 を1とa, 1とb,1とc,1とdの 組 の 順 とす る と, 交 点 のx座 標 は,頂 点B,B,D,Dのx座 標 で あ り,そ れ が そ の 順 番 で 求 ま る 。 そ こ で,デ ジ タ ル 直 線 は頂 点Bか ら 頂 点B, ま た 頂 点Dか ら頂 点Dへ と 描 か れ,頂 点Bか ら 頂 点Dへ は 描 か れ な い こ と に な る 。 こ の た め 図9に 示 す ① の デ ジ タ ル 直 線 は 描 く こ とが で き な い 。 次 に 水 平 直 線1と 辺a,b,c,dと の 交 点 を そ の 順 番 を 変 え て,1とb,1とc,1 とd,1とaの 組 の 順 に 求 め る 。 こ の 場 合 は, 交 点 のx座 標 は頂 点B,D,D,Bのx座 標 と な り,デ ジ タ ル 直 線 は 頂 点Bか ら頂 点Dへ, ま た 頂 点Dか ら頂 点Bへ と2回 描 か れ る 。'こ れ が 図9の ② の デ ジ タ ル 直 線 を 描 く こ と が で き る 理 由 で あ る 。 3.2.4不 要 交 点 の 除 去 上 記 に 示 し た 問 題 点 を 一 般 化 し て み よ う 。 頂 点 に お い て1つ の 水 平 直 線1に 対 し て 得 ら れ る 交 点 の 数 は,図11に 示 す よ う に3通 り存 在 す る 。 第 一 は 図 形 の 末 端 の 頂 点 で 交 点 が2 つ 得 ら れ る 場 合 〔1〕 で あ る 。 第 二 は す で に 詳 し く述 べ た が,2っ の 頂 点 のy座 標 が 同 じ で 交 点 が4つ 得 ら れ る 場 合 〔II〕 で あ る。 第 三 が1つ の 頂 点 で 交 点 が2つ,1つ の 辺 で 交 点 が1つ,合 計3つ 得 ら れ る場 合 〔m〕 で あ る 。 こ の よ う に 水 平 直 線1iと 辺 の 交 点 の 数 が 頂 点 の と こ ろ で 一 定 し な い の は,デ ジ タ ル 直 線 を 描 く う え で 困 っ た こ と で あ る 。 場 合 〔1〕 の 時 に は,1つ の 頂 点 に2つ の 交 点 が あ っ て も よ い が,し か し,場 合 〔II〕 で は,そ れ は 都 合 が 悪 い 。 頂 点 に お け る 不 要 な 交 点 を 除 去 す る 規 則 は 次 の よ う に 定 め ら れ る 。 図12に 示 す よ う に, 頂 点P。 のy座 標 をQo,ま た 頂 点P。 を 端 点 と す る2つ の 辺 の 他 の 端 点P、,P2のy座 標 を 凧 渦 と す れ ば,図12(1)の よ う に 水 平 直 線1の 点P。 に お け るy座 標 βもが,次 の 条 件 式 (β1<Ro<β2)or(β ヨ<βo<β1)(15) を 成 立 さ せ る の で あ れ ば,後 か ら求 め た 交 点 は 除 去 す る よ う に す る 。 ま た,図12(2)の よ う に,同 じ く水 平 直 線1の 点P。 に お け るy座 標 β。が,辺 の 条 件 式 ((β1<β))and(β ⊇<β))) or((β1>β))and(β2>βo))(16) を 成 立 さ せ る の で あ れ ば,後 か ら求 め た 交 点 は 除 去 し な い よ う に す る 。 こ の ア ル ゴ リ ズ ム を 追 加 す る こ と に よ り, 図9の ① の デ ジ タ ル 直 線 は 描 く こ と が で き る よ う に な る 。 3.2.5凹 多 角 形 の 場 合 図13に 示 す よ う な 凹 多 角 形 で は,水 平 直 線 1と 辺 との 交 点 は,頂 点 以 外 の と こ ろ で も4

(9)

図13平 行 線 が 存 在 す る 例

つ 以 上,し か も必 ず 偶 数 個 得 られ る。 図13(1)

の よ う に交 点 の 得 られ る順 番 が,そ

のx座 標

の 大 小 の 順 と同 じで あ る な らば,1つ

の水 平

直 線1か

ら定 め られ る デ ジ タ ル直 線 は,交 点

1と 交 点2,交

点3と 交 点4,・ … ・

・,交点7

と交 点8と

の間 で分 割 され て描 か れ る。

しか し,図13(2)に 示 す よ う に,交 点 は辺 を

定 め る頂 点 の番 号 の振 り方(図 中,頂 点 番 号

は丸 で 囲 まれ た数)に

よ って,そ の得 られ る

順 番 が変 化 す る。 図(2)の場 合,交 点3,交

2,交

点1,…

…,交 点4の よ うな順 で得 られ

るの で,そ れ らの交 点 を そ の順 に2つ づ つ取

り出 して デ ジ タ ル直 線 を描 く こ とは で きな い。

した が っ て,一 旦,得

られ た交 点 のx座 標 の

値 を大 小 順 に分 類 す る必 要 が あ る。 交 点 が そ

のx座 標 の順 で分 類 され れ ば,交 点 の座 標 を

大 小 順 に2個 つ つ取 り出 す こ とが で き る ので,

個 々 の デ ジ タ ル直 線 を凹 図 形 に対 し て も描 く

(10)

こ とが で き る。

3.2.6平

行 な 辺 が 存 在 す る時

これ ま で の ア ル ゴ リズ ム の 中で,不 都 合 な

こ とが1つ

あ る。 そ れ は 図14に 示 す よ うな非

常 に特 殊 な図 形 に お い て,水 平 直 線1と 平 行

な 辺 が 存 在 す る時 で あ る。 平 行 な2つ の直 線

の 間 で は,そ の解 は不 能 あ る い は不 定 な の で,

交 点 を求 め る こ とが で きな い 。 こ の場 合 は 当

然 デ ジ タル 直 線 を描 くこ とが で き な い。

この 問 題 に対 す る最 も簡 単 な解 決 策 は,水

平 直 線1の か わ り,y軸

に平 行 な垂 直 直 線1ノ

を設 定 し,x軸

上 を移 動 させ る アル ゴ リズ ム

を追 加 す る こ とで あ る。 この アル ゴ リズ ム は

これ まで に述 べ た もの と基本 的 に は全 く同 じ

ア ル ゴ リズ ム で,単

にx座 標 とy座 標 を機 械

的 に入 れ 替 え た もの で あ る。 効 率 上"2度

り"の 無 駄 が 生 じ るが,図 形 の 塗 られ て い な

い 部 分 は確 実 に塗 る こ とが で き る。

* * * *

リス ト2に 色 塗 りの ソフ トウ ェ ア 命 令 で あ

る基礎 作 画 ル ー チ ンXPAINTを

示 す。(なお

リス ト2に は水 平 直 線1と 平 行 な辺 が 存 在 す

る場 合 に 対 応 す る ル ー チ ン は含 ま れ て い な

い)。行 番 号3000∼3290は,水

平 直 線 の交 点 を

求 め,デ ジ タ ル直 線 を描 く部 分(1),行

番 号

3300∼3430は 不 要 交 点 を除 去 す る部 分(II),

行 番 号3450∼3550は

交 点 のx座 標 を分 類 す る

部 分(m)で

あ る。 図15に 部 分(1)の

ル ー

チ ンの 流 れ 図 を示 す。

な お,サ ブ ル ー チ ンXPAINTの

引 数 お よ

び そ の 内容 を以 下 に示 す 。

・入 力 用 引 数

配 列PX,PY…

図 形 の 頂 点 のx,y座

(頂 点 は反 時 計 回 りの順

に セ ッ トす る)

変 数N…

… ・

∵頂 点 の数

変 数X,Y…

… 図 形 内 の 任 意 の1点 の座

標(最

初 デ ジ タ ル直 線 を

描 き始 め る点)

変数GA-…

… イ ン ター フ ェ ー ス ・ル ー

チ ン を作 成 す る時 に用 い

られ る引 数 で あ り,こ こ

で はGAの

内 容 は0と

して使 用

・出 力 用 引 数

な し

3.3ウ

イン ドウービ ュー ポ ー ト変換

ワー ル ド座 標(W座

標)か

らス ク リー ン座

標(S座

標)に 座 標 変 換 す る公 式 は次 の よ う

に して 求 め られ る。 図16に 示 す よ う に左 上 隅,

右 下 隅 が(α,b),(c,d>の

右 手 系 のW

座 標 系 にお け るW(x,ッ)が,同

じ く左 上

隅,右 下 隅 が(P,a),(r,の

の 左 手 系

のS座 標 系 にお け るS(x',ヅ)に

座 標 変 換

さ れ る場 合,W座

標 系 とS座 標 系 に お け る そ

れ ぞ れ の線 分 の 比 は変 換 前 後 に お い て,x軸

方 向,y軸

方 向 とも常 に不 変 で あ る。 そ こで

(1)正

常 な 順 番

(2)都

合 の 悪 い順 番

図14凹 多 角 形 に お け る 交 点 の 得 ら れ る順

(11)

リ ス ト2 3000,*零******零*******零***零*****塞*******零*****零************** 3010,*XPAINTサ フ・ル ーチン* 3020,*******零****************零***零*零**********************零* 3030*XPAINT 30401FPSW.OTHENDIMQX(20),QY{20):PSWc1 3050CY=Y 3060H=CY 3070GOSUB*GLN 30801FFLG=OTHENH=H+1+GA:GOTO3070 3090H=CY' 3100GOSUB*GLN 31101FFLG=OTHENH=H-1-GA:GOTO3100 3120RETURN 3130'一 一一 一一一一 一一一一 一一一 一一一 一一一一 一一一一一一 一一一一一一一一一 一一一一一一一一一 一一一 一一一一 一一一 3140零GLN 3150M=0 3160FORI=1TON 3170×1=PX(1):Y1=PY(1) 31801F工 く>NTHENX2=PX(1+1):Y2=PY(1+1)ELSER2=P%(1》: Y2=PY(1) 31901FY1<>Y2THENX=《H-Y1)零 《X2-X1)/(Y2-Y1)+X1:Y=H ELSEGOTO3220 32001FX=>XIANDX=〈X20RX=>X2ANDX=〈XITHEN ELSEGOTO3220 32101FY=>YIANDY=<Y20RY=>Y2ANDY=<YITHENGOSUB零GCHK 3220NEXTI 32301FM=OTHENFLG=1:GOTO3290 3240GOSUB零GSRT 3250FORI=1TOMSTEP2 3260X=QX《 工):Y=QY(1》:GOSUB零UPOINT: X=QX(1+1):Y=QY(1+1):GOSUB*ULINE 3270NEXTI 3280FLG=0 3290RETURN 3300,」 一一一一一一 一一一一一 一一一 一一一一 一一一 一一一■一一一一 一一一一一一一一 一一一一一一一一一 一一一 一一 一一一一一 3310*GCHK 33201FI=NTHENGOTO3340 3330P=M:Q=1-1:R31+1:cosvB零GSBT:GOTIO3380 33401FQX(M)=XTHENGOTO3360 33501FQX(1)=%THENGOTO3370 3360P=M:Q=N-1:R=1:GOSUB*GSET:GOTO3380 3370P=1:Q=N:R=2:GOgUB*G3BT 3380RETURN 3390,一 一一一一一 一一一一一 一一一 一■騨一一一 一一一一 一一一 一■o-一一一一 一一一 一啣一一一一一一一一一一 一一一 一一一一 3400*GSET 34101FM=OTHENM=M+1:QX(M)=X:QY(M)=Y:GOTO3430 34201FNOT(QX(P)=XAND((Y>PY(Q)ANDY<PY(R))OR(Y<PY(Q) ANDY>PY(R))))THENM=M+1:QX(M)=X:QY(M)=Y 3430RETURN 3440,一 一一一一 一一一 一一 一一一 一一一一 一一一一 一一一一一一 一一一一一一一一 一一一一一一一ロ ー一一 一一一一 一一一一 一 3450*GSRT 3460FORJ=1TOM

(12)

3470VL=QX(J) 34801D=J 3490FORK=JTOM 35001FQX(K)くVLTHEvVL=QX(K):ID=S 3510NEYTK 3520SWAPQX(J),VL 3530QY('ID)=VL 350NEYTJ 3550RETURN

(1)メ

イ ン プ ロ グ ラ ム

(2)GLNサ ブ ル ー チ ン 図15色 塗 りプ ロ グ ラ ム の 流 れ 図

(13)

x軸,y軸

につ い て 次 の2つ の 比 例 式 が 成 立

す る。

(a-x)

(b-y):(認

二c);(xd):(y:二;いの

式(1のを整 理 す る とW(x,y)か らS(x', yy')へ の 変 換 公 式 は

:::羃:1}働

と な る 。 式(18)をBASICの 義 関 数 数 を 用 い て 表 現 す 冒固-. れ ば, DEFFNX(X)_((SX1-SX2)/ (WX1-WX2)*X十(WXl SX2-SXI*WX2)/WX1-WX2) DEFFNY(Y)_((SY1-SY2)/ (WY1-WY2)*Y十(WX1* SY2-SYI*WY2)/WY1-WY2) で あ る 。 こ こ で(WX1,WY1),(WX2, WY2),'CSX1,SY1),(SX2,SY2), (X,Y),(FNX(X),FNY(Y))が,そ れ ぞ れ(α,b),(c,d),(p,Q),(r, S),(x,y),(x',y')に 対 応 す る 。 3.4ク リ ッ ピ ン グ 3.4.1Sutherland-Cohenの 方 法 線 分 を ク リ ッ ピ ン グ す る 方 法 はSuther一 landとCohenの 考 案 し た ア ル ゴ リ ズ ム を 用 い る こ と に す る 。 こ れ は 次 の よ う な 方 法 で あ る。 図17に 示 す よ う に4つ の 直 線 で 囲 ま れ た ス ク リ ー ン上 の ビ ュ ー ポ ー ト の 範 囲 を α ≦x≦ c,b≦y≦d(左 手 座 標 系 で 表 現)と し, 点(x,y)が どの 領 域 に 存 在 す る か を4ビ ッ トで 表 現 さ れ た コ ー ドで 示 す 。 そ し て,そ の ビ ッ ト列 の 左 か ら右 へ 第1ビ ッ ト,第2ビ ッ ト,… …,第4ビ ッ ト と し, 第1ビ ッ ト… …x〈 α な ら ば1, そ う で な け れ ば0 第2ビ ッ ト… …x>dな ら ば1, そ う で な け れ ば0 第3ビ ッ ト… …x>cな ら ば1, そ う で な け れ ば0 第4ビ ッ ト… …x<う1な ら ば1, そ う で な け れ ば0 と い う ビ ッ トコ ー ド を 定 め る 。 そ し て,そ の ク リ ッ ピ ン グ の 判 定 は 次 の よ う に 行 う。 ① 完 全 可 視 … … … 両 端 点 の4ビ ッ ト コ ー ド が す べ て0の 時 ② 完 全 可 視 … … … 両 端 点 の4ビ ッ ト コ ー ド の 同一 ビ ッ トが 共 に1の 時 ③ ク リ ッ ピ ン グ … 上 記 ①,② 以 外 の 時(こ の 候 補 の 場 合,ビ ュ ー ポ ー トの 境 界 線 と の 交 点 の 情 報 が 必 要 で あ る) Sutherlandら の ク リ ッ ピ ン グ ・ア ル ゴ リ ズ

(14)

図19ク リ ッ ピ ン グ の 手 続 き

ム は,ビ

ュー ポ ー トの境 界 線 を構 成 す る4つ

の直 線 と線 分 の 交 点 を求 め,そ の 交 点 の端 点

とす る線 分 の4ビ

ッ トコー ドが す べ て0に な

る まで,繰

り返 し なが ら同様 の点 を求 め て い

く方 法 で あ るA

な お,線 分 と ビュ ー ポー トの境 界 線 との交

点 は,3.2.1項

で 示 した の と同様 な直 線 の

方 程 式 を た て る こ と に よ っ て 求 め る こ とが で き る 。 そ の 交 点 を 図18に 示 す よ うに(礪 β) と し,こ れ を 次 項 で 用 い る 。 3.4.2具 体 的 手 続 き ク リ ッ ピ ン グ の 具 体 的 手 続 き を6つ の タ イ プ に 整 理 し,以 下 に 図19と と も に 示 す(図 中 の4本 の1は ビ ュ ー ポ ー トの 境 界 線 で あ る)。

(15)

(1)タ イ プ1(図19(1)の 場 合) 線 分abの 端 点a,bの そ れ ぞ れ の4ビ ッ ト コ ー ド を 調 べ,す べ て0で あ る の で 完 全 可 視 と な る 。 ク リ ッ ピ ン グ さ れ た 線 分 は abそ の も の で あ る 。 (2)タ イ プ2(図19(2)の 場 合) 線 分abの 端 点aの4ビ ッ トコー ドは(0100) で,第2ビ ッ トが0で は な い の で 部 分 可 視 と な る 。 そ こ で12と 線 分abと の 交 点a' (α為 β2)を 求 め る と,新 し い 線 分a/bの4 ビ ッ ト コ ー ドは す べ て0に な り完 全 可 視 と な り,ク リッピ ン グ さ れ た 線 分 はa'bで あ る 。 (3)タ イ プ3(図19,(3))の 場 合) 線 分abの 端 点(a,b)は そ れ ぞ れ (0100),(0010)で,第2,第3ビ ッ トが 0で は な い 。 こ れ は 部 分 可 視 か 完 全 不 可 視 か で あ る 。 ま ず 線 分abと12と の 交 点aノ (α2,R2)を 求 め る 。 す る と線 分a/bの 端 点 aノの4ビ ッ ト コ ー ドの 第2ビ ッ ト は0と な る 。 ま た 線 分a'bと13と の 交 点b'0(α3, 属)を 求 め る と,線 分a/b'の 端 点 の4ビ ッ ト コ ー ドの 第3ビ ッ トは0と な る 。 そ う す る と新 し い 線 分a'bノ の4ビ ッ ト コ ー ド は す べ て0と な り,完 全 可 視 と な る 。 ク リ ッ ピ ン グ さ れ た 線 分 はa'b'で あ る 。 (4)タ イ プ4(図19(4)の 場 合)

線 分 。bの 輪

・の4ビ

ツ ト コ ー ド は

(1100)で あ る 。 ま ず 第1ビ ッ トが1.な の で,線 分abど11と の 交 点a'(α 、,β、)を 求 め る と,線 分a'bの 端 点a'の4ビ ッ ト コ ー ド は(0100)と な る 。 第2ビ ッ トは ま だ 1な の で,さ ら に 線 分a'bと12と の 交 点 a"(α2,β)を 求 め る 。 す る と線 分a"bの 端 点a"の4ビ ッ ト コ ー ド は す べ て0と な

る 。線 分abの 端 点aはa→aノ →a"へ と ク

リ ッ ピ ン グ さ れ て い く。 同 様 に し て 端 点b も ク リ ッ ピ ン グ し,4ビ ッ ト コ ー ドが0と な る 端 点b'を 求 め る 。 ク リ ッ ピ ン グ さ れ た 線 分 はa"b'で あ る 。 (5)タ イ プ5(図19(5)の 場 合) 線 分abの 端 点a,bの4ビ ツ ト コ ー ド は(1100),(0011)で あ る 。 そ れ ぞ れ の 端 点 に つ い て,4ビ ッ トコ ー ドが す べ て0に な 、 る ま で,タ イ プ4で 行 っ た の と 同 様 な 手 続 き で 端 点 を 求 め る 。 ク リ ッ ピ ン グ さ れ た 線 分 はa"b"で あ る 。 (6)タイ プ6(図19(6)の 場 合) 線 分abに つ い て,ま ず 端 点aに つ い て 調 べ る 。 そ の4ビ ッ ト コ ー ドは(1100)で あ る 。 そ こ で 線 分abと1、 と の 交 点a' (α、,β、)を 求 め る と,線 分a'bの 端 点a' の4ビ ッ ト コ ー ド は(0100)と な る 。 そ こ で 次 に 線 分a/bと12の 交 点a"(α2,角)を 求 め る と,線 分a"bの 端 点a"の4ビ ッ ト コ ー ド は(0010)と な る。 そ こ で 今 度 は 線 分a"bと13の 交 点.a"(α3,鳥)を 求 め る と,線 分a"bの 端 点a"の4ビ ツ ト コ ー ド は(0100)と な る 。 そ こ で ま た 線 分a"bと 12と の 交 点a"(α2,/sz)を 求 め る 。 こ の 場 合,こ の よ う に し て 求 め ら れ た 線 分abの 端 点 はa→a'→a"→a"→ … … と繰 り返 さ れ て,そ の 端 点 の4ビ ッ ト コ ー ド は 決 し て0と な ら な い 。2回 の 操 作 で4ビ ッ ト コ ニ ドが す べ て0と な ら な け れ ば 完 全 不 可 視 と判 定 で き る 。 端 点bに つ い て 同 様 な 手 続 き を 行 っ て も,同 じ 結 果 が 得 ら れ る 。 **串 上 記 の6つ の タ イ プ を 整 理 し て 図20に 流 れ 図 と し て 示 す 。 図 中 のnは 交 点 を 求 め た 回 数, fは 完 全 不 可 視 か ど う か を 示 す フ ラ ッ グ (f=1な ら ば 完 全 不 可 視)で あ る 。 こ の 流 れ 図 を 通 過 す る と,線 分 の 新 し い 端 点 の 座 標 (α,β)と 端 点 の 情 報(f)が 求 ま る 。 リ ス ト4と 図21にSutherlandら の ア ル ゴ リ ズ ム に 基 づ い て 作 成 さ れ た ク リ ッ ピ ン グ の 基 礎 ル ー チ ンCLIPと そ の 流 れ 図 を 示 す 。ソ フ トウ ェ ア 命 令 で あ る ル ー チ ンCLIPは 内 部 に 2つ の 補 助 ル ー チ ンGROTとGBITを 持 っ て お り,GROTは 図20の 流 れ 図 を 実 現 し た も の で あ り,GBITは4ビ ッ トコ ー ド の 設 定 を

(16)

行 って い る。 以 下 にサ ブ ル ー チ ンCLIPの

数 とそ の 内容 につ い て示 す0

・入 力 用 引 数

変 数AA,BB…

… ク リ ツ ピ ン グ領 域

の 左 上 隅 の座 標

変 数CC,DD…

… ク リ ッ ピ ン グ領 域

の 右 下 隅 の座 標

変 数X1,Y1…

…線 分abの

端 点aの

座 標

変 数X2,Y2…

…線 分abの

端 点bの

座 標 ・出 力 用 引 数 お よ び そ の 内 容 変 数SX,SY… … ク リ ッ ピ ン グ さ れ た 新 し い 線 分a/b' の 端 点 の 座 標 変 数FLG.可 視 か 不 可 視 か の 情 報 0:可 視 1:不 可 視 3.5・ 幾 何 変 換

(17)

リ ス ト3 4000,零**零********零****零*零***塞*******************零****零***零 家* 4010,零CI」IPサ フ゜ル ーチン* 4020,******************翠 零*******零*************************** 4030*CLIP 40401FX1<AAAND%2<AATHHNFLG=1:GOTO4150 40501FX1>CCANDX2>CCTHENFLG=1:GOTO4150 40601FY1<BBANDY2〈BBTHFNFLG=1:GOTO4150 4070工FX1>DDANDY2>DDTHENFLG=1GOTO4150 ×1:! 4090XX=XI:YY=Y1 4100GOSUB*GROT 41101FFLG=OTHENSX=XX:SY=YYELSEGOTO4150 4120XX-X2:YY=Y2 4130GOSUB*GROT 41401FFLG=OTHENEX=XX:EY=YY 4150RETURN 4160,一 一 一一一一一 一一一一一 一一一 一一一一・一一 一一一一一 一一一一一一一 一一一一一一一 一一一一一 一一 一一一一一 一一一 X170*GROT 4180NN=0 4190NN=NN+1 42001FNN>=3THENGOTO4370 4210GOSUB*GBIT 42201FX1=X2THENGOTO4300 42301FY1=Y2THENGOTO4330 42401FBT{1)=1THENYY=(Y2-Y1)/(X2-X1)*(AA-X1)+Y1:XX=AA: GOTO4190 42501FBT(2)=1THENXX=(X2-X1)/(Y2-Y1)*(DD-Y1)+X1:YY=DD: GOTO4190 426QIFBT(3)=1THENYY=(Y2-Y1)/(XZ-X1)*(CC-X1)+Y1:XX=CC: GOTO4190 4270工FBT(4)=1THENXX=(X2-X1》/《Y2-Y1》 塞 《BB。Y1》+X1:YY=BB: GOTO4190 4280GOTO4360 4290' 43001FBT(2)=1THENYY=DD:GOTO4190 43101FBT(4)=1THENYY=BB:GOTO4190 4320工FBT(1)=OANDBT《3)=OTHENGOTO4360ELSEGOTO4370 43301FBT(1y=1THENXX=AA:GOTO4190 43401FBT(3)=1THENXX=CC:GOTO4190 43501FBT(2》=OANDBT(4》=OTHENGOTO4360ELSEGOTO4370 4360FLG=O:RETURN 4370FLG-1:RETURN 4380'一 一一 一一一一一一 一一一一一 一一一一 一一一一一一一 一一一一一一 一一一一一一 一一一一一 一一 一一一一一一 一一一 一一 4390*GBIT 44001FXX<AATHENBT(1)=1BLSEBT(1)=0 44101FYY?DDTHENBT(2)=1ELSEBT(2)=0 4426工FXX>CCTHENBT(3)=1ELSEBT(3)=0 44301FYY<BBTHENBT(4)=1ELSEBT(4)=`0 4440RETURN

(18)

3.5.1変

換 の 理 論 式

CGに

お け る幾 何 変 換 の 数 学 的 基 礎 は ア フ

ィ ン変 換 で あ る 。2次 元 図 形 の変 形 は平 行 移

動,拡 大 縮 小,反 転,せ

ん断,回 転 が あ るが,

平 行 移 動 以 外 の変 換 は2×2変

換 マ トリ ッ ク

ス を用 い る線 形 変 換 の 範 囲 で 記 述 可 能 で あ る。

しか し,平 行 移 動 を含 め る場 合 に億.同

次座

標 を含 む3×3変

換 マ トリ ック ス を用、・るア

フ ィ ン変 換 を導 入 し な け れ ば な らな い 。 以 下

にその 変 換 の 理 論 式 を示 す が,(x,ツ),(x'y')

は そ れ ぞ れ 変 換 前,変

換 後 の座 標 で あ る。

(1)平行 移 動

100 〔x'y'1〕=〔xy1〕010 txty1 =〔(x+ち)(y-←$y,)1〕 α9) (ち,む はx方 向,y方 向 へ の 移 動 量) (2)拡 大 縮 小 SXOO 〔x'y'1〕=〔xッ1〕os。0 001(20) =〔SxxSyy1〕 (Sx,syはx軸,y軸 方 向 へ の 拡 大 縮 小 率) (3)反 転 リ ス ト4 5000,******************零****塞**********零******零************* ロ 5010,*COCNVサ フNル ーチ ン 零 5020,************零*********家*****零*********家***零 率*******零*零* 5030*COCNV 5040XX=X:YY=Y 5050FORJ=1TO5 50601FTA(J)=1THENTX=TB(J):TY=TC(J}:GOSUB*TRANS 50701FTA(J)=2THENSX=TB(J):SY=TC(J):GOSUB*SCALE 50801FTA(J)=3THENIX=TB(J):IY=TC(J):GOSUB*INVRS 50901FTA(J)=4THENDA=TB(J):DB=TC(J):GOSUB*SHEAR 51001FTA(J)=5THENTH=TB(J):GOSUB*ftOTAT 5110NEXTJ 5120RETURN 5130'一 一一 一一一 一一一一一一 一一一 一一一一一 一一一一一一 一一一一一一 一一一一一 一一一一 一一一一一 一一一一 一一一 一一 5140*TRANS 5150XX=XX+TX 5160YY=YY+TY 5170RETURN 5180*SCALE 5190XX=SX*XX 5200YY=SY*YY 5210RETURN 5220*INVRS 5230XX=IX*XX 5240YY=IY*YY 550RETURN 5260*SHEAK 5270XD=XX:YD=YY 5280XX=XD+DA*YD 5290YY=DB*XD+YD 5300RETURN 531Q*ROTAT 520AL=(3.1415/180}*TH 5330XR=XX:YR=YY 5340XX=COS(AL}*XR-SIN(AL}*FR 5350YX=SIN(AL)*XR+COS(AL)*YR

(19)

Lx

〔x'y'1〕=〔xッ1〕OiyO OO1⑳ =Lち κlyy1〕 (Lx,iyはx軸,y軸 方 向 に 対 す る 反 転 係 数) (4)せ ん 断 1dbO 〔x'y'1〕=〔xy1〕dα10 001(羽) ((x+ddy)(y+dbx)) (dα,dbはx軸,y軸 方 向 に 対 す る せ ん 断 率) (4)回 転 cosBsingO 〔x!:y/1〕=〔xy1〕-cosθsil1θ0 001)(23) _((xcos9‐ysin6)(xsinB十ycosB)1) (θ は 原 点 を 中 心 と し て 反 時 計 回 り の 回 転 角 度)

3.5.2合

成 変 換

各 種 の 幾 何 変 換 の合 成 は,個 々 の 変 換 マ ト

リ ック スの 積 か ら合 成 変 換 マ ト リッ ク ス を導

き出 し,そ れ を座 標 デ ー タ に作 用 させ る こ と

に よ り行 う こ とが で き る。例 え ば平 行 移 動 と

回 転 の個 々 の変 換 マ トリ ッ クス を それ ぞれR,

Tと し,そ の合 成 変 換 の マ ト リッ ク ス をCと

す る と,回 転 後 の平 行 移 動 の 合 成 変 換 マ トリ

ック スCRTは

CRT=RT⑦0

とな る。

一 般 のCGで

,合 成 変 換 は マ トリ ッ ク ス

演 算 と して 処 理 さ れ るが,BASICに

はマ ト

リ ッ ク ス演 算 機 能 が 備 っ て い な い。 そ こで,

幾 何 変 換 サ ブル ー チ ン は,個 々 の幾 何 変 換 の

代 数 式(各 変 換 マ トリ ック ス を座 標 デ ー タ の

列 マ トリ ック ス に作 用 さ せ た 結果 の列 マ トリ

ック ス の要 素)を 導 出 し,そ れ を用 い て作 成

す る こ と と した。 リス ト4に 作 成 され た 幾何

変 換 の ソ フ トウ ェア 命 令 で あ る基礎 ル ー チ ソ

COCNVを

示 す 。

サ ブ ル ー チ ンCOCNVは

大 き さ が5の

列 を用 意 す る こ とに よ り,最 大5つ

まで の幾

何 変 換 を連 続 し て合 成 す る こ とが で き る。配

列TAに

は 幾 何 変 換 の 種 類 を 以 下 の 番 号 で

指 定 す る。

1:平

行 移 動2:拡

大 縮 小

3:反

転4:せ

ん 断

5:回

合 成 変 換 の順 は 配 列TAの

要 素 番 号 の 順

で あ る。 配 列TBに

は要 素 番 号 に対 応 す る各

変 換 のx軸 に 関 す る情 報,配 列TCに

は 同 じ

く ッ軸 に 関 す る情 報 をセ ッ トす る(た だ し回

転 の 場 合 の みTBに

角 度 を セ ッ トす るだ け

で よい)。

以 下 に サ ブ ル ー チ ンCOCNVの

引 数 と そ

の 内容 につ い て 示 す 。

・入 力用 引数

変 数X,Y…

…合 成 変換 を行 う座 標

配 列TA…

… 変 換 の 種 類

配 列TB…

…変 換 のx軸

に 関 す る情

配 列TC…

… 変 換 の ッ軸 に 関 す る情

・出 力 用 引 数

変 数XX,YY…

… 合 成 変 換 され た 座

3.61イ

ン ター フ ェー ス ・ル ー チ ン

3.6.1基

礎 作 画 ル ー チ ンの 統 合

本 稿 で は,こ れ まで 次 の 基 礎 作 画 ル ー チ ン

等 を ソフ トウ ェア命 令 と して 作 成 し た。

・直 線 の作 画

リス ト1

・色 塗 り

リス ト2

・ウ ィ ン ドウ ー ビ ュー ポー ト変 換

3.3節

の定 義 関 数

・ク リ ッ ピ ン グ

リス ト3

本 節 で は上 記 の 基 礎 作 画 ル ー チ ン を統 合 化

し,図 形 を描 く基 本 機 能 をす べ て 黙自前"の

ソ フ トウ ェア 命 令 で まか な う こ とを試 み る。

この 目的 が 達 成 され る と,ピ ク セル を発 光 さ

せ る 唯 一 の ハ ー ドウ ェ ア命 令 で あ るPSET

文 だ けで,そ れ 以 外 の グ ラ フ ィ ック文 を用 い

(20)

る こ と な く,ど の よ う な 図 形 で も描 く こ と が 可 能 と な る 。 統 合 化 さ れ る 個 々 の サ ブ ル ー チ ン 等 は BASICの グ ラ フ ィ ッ ク 文 と 同 等 の 機 能 を 持 っ て い る が,そ れ は 完 全 で な か っ た り,仕 様 が 少 し 異 な っ て い た り す る 。 そ こ でBASIC の ス テ ー トメ ン トの 機 能 の 仕 様 に な る べ く合 わ せ る よ う に,こ れ ら の プ ロ グ ラ ム を 改 良 す る こ と に す る 。"自 前"の ソ フ ト ウ ェ ア 命 令 の サ ブ ル ー チ ン をBASICに 対 応 す る ハ ー ド ウ ェ ア 命 令 の ス テ ー トメ ン ト と 区 別 す る た め, 表1の よ う に,そ の 名 前 の 先 頭 に ア ル フ ァ ベ ッ トの"U"を 付 け,そ れ を以 後,ユ ー ザ ・ サ ブ ル ー チ ン と呼 ぶ 。 ユ ー ザ ・サ ブ ル ー チ ン の ボ デ ィ部 分 は す で に 完 成 し て い る の で,そ の 手 直 し は,新 し い ユ ー ザ ・サ ブ ル ー チ ン名 を 持 ち,そ の 名 前 を 介 し て ボ デ ィ 部 分 に 橋 渡 し す る イ ン タ ー フ ェ ー ス ・ル ー チ ン を 作 成 す る こ と で あ る。 な お, 直 線 作 画 の サ ブ ル ー チ ンULINEは,サ ブ ル ー チ ンUPOINTと 組 み 合 せ て 用 い る 仕 様 と し,そ の イ ン タ ー フ ェ ー ス を 設 定 す る 。 3.6.2イ ン タ ー フ ェ ー ヌ ・ル ー チ ン リス ト5に イ ン タ ー フ ェ ー ス ・ル ー チ ン を 示 す 。 ユ ー ザ ・サ ブ ル ー チ ンUWINDOW, UVIEW,UPOINT,ULINE,UPAINT は,こ の ル ー チ ン を 介 し て,各 サ ブ ル ー チ ン の ボ デ ィ の 部 分(基 礎 作 画 ル ー チ ン) ・DDAル ー チ ン ・XPAINTル ー チ ン ・CLIPル ー チ ン に リ ン ケ ー ジ す る 。 以 下 に イ ン タ ー フ ェ ー ス ・ル ー チ ン の 内 容 を簡 単 に 明 明 し て お く。 (1)UWINDOWサ ブ ル ー チ ン ウ ィ ン ド ウ の 領 域 を 定 義 し,ウ ィ ン ド ウ ー ビ ュ ー ポ ー ト変 換 の た め の 定 義 関 数 を 定 め,そ れ を 実 行 す る 。 変 数WSWは こ の サ ブ ル ー チ ンが 何 度 呼 び 出 さ れ て も よ い よ う に,ス イ ッ チ と し て 働 く。 (2>UVIEWサ ブ ル ー チ ン ビ ュ ー ポ ー ト の 領 域 の 値 を 変 数AA, BB,CC,DDに セ ッ ト し,そ れ をCLIPル ー チ ン で 用 い ら れ る よ う に す る 。 (3)UPOINTサ ブ ル ー チ ン ウ ィ ン ドウ ービ ュ ー ポ ー ト変 換 し た ス ク リ ー ン 座 標 の 値 を 変 数WKX,WKYに 保 存 す る 。 こ れ はULINEサ ブ ル ー チ ン との 連 係 に 対 応 す る た め で あ る 。 (4)ULINEサ ブ ル ー チ ン 変 数WKX,WKYか ら 変 数X1,Y1に 移 さ れ た ス ク リ ー ン座 標 で の 端 点 と,ス ク リ ー ン 座 標 に 変 換 さ れ たX2 ,'Y2の 端 点 の 座 標 を 用 い て,CLIPル ー チ ン を 介 し て ク リ ッ ピ ン グ す る 。 そ し て 線 に 関 す るDDAル ー チ ン に よ り線 分 を 描 画 す る 。 な お 変 数 WKX,WKYに 変 数X2,Y2の 値 を 保 持 す 表1ユ ー ザ ・サ ブ ル ー チ ンの 仕 様 サ ブ ルー チ ン名 引 数 と な る変 数 ・配 列 セ ッ トす る 図形 情 報 UWINDOW WX1,WYl WX2,WY2 ウ ィン ドウの 左 上 隅 の ワ ー ル ド座 標 ウ ィン ドウの 右 下 隅 の ワ ー ル ド座 標 UVIEW SX1_SY1, SX2,SY2 ビ ュー ポー トの左 上 隅 の ス ク リー ン座 標 ビ ュー ポー トの右 下 隅 の ス ク リー ン座 標 UPOINT X,Y ペ ンUPで 移 動 させ る先 の ワー ル ド座 標

ULINE X,Y COL ペ ンdownで 移 動 させ る先 の ワール ド座 標 座 標 線 の色 コー ド UPAINT N PX(n),PY(n) X,Y 境 界 線分 を構 成 す る点 の個 数 各 点 の ワー ル ド座 標 領 域 内 の1点 の ワー ル ド座 標 ・

(21)

リ ス ト5 6000,***零***********************************************零*** 6010,*UWINDOWサ プ ル ーチン* 6020,********************零********************************** 6030*UWINDOW 60401FWSW<>OTHENGOTO6080 6050DEFFNX(X)= ((SX1-SX2)/(WX1-WX2))*X+(WX1*SX2-SX1*WX2)/(WX1-WX2) 6060DEFFNY(Y)= (《SY1-SY2》/《WY1-WY2)》*Y+(WY1*SY2-SY1*WY2》/(WY1-WY2》 6070WSW=1 6080RETURN 6090,*****************************************零***********家* 6100,*UVIEWサ フ噛 ルーチ ン* 6110,********************************零 家***零****零 零*********** 6120*WIEW 6130AA=SXI:BB=SYI:CC=SX2:DD=SY2 6140RRTURN 6150,*******************************潔******家***‡ 塞*****零***零* 6160,*UPOINTサ フ喚ル ーチ ン* 6170,***零**************零*********塞 零******零*****零**零**零****** 6180*UPO工NT 6190WKX=FNX(X):WKY=FNY(Y) 6200RETURN 6210,***********************零****************零**零****零***零** 6220,*ULINEサ フいルーチ ン* 6230,*********家************零************零**********零******** 6240*UL工NE6 6250×1=WKX:YI=WKY 6260×2=FNX(X):Y2=FNY(Y) 6270WKX=XZ:WKY=Y2 6280GOSUB*CLIP 6290×1=SX:YI=SY:X2=EX:Y2=EY 63001FFLG=OTHENGOSUB*DDA 6310RETURN 6320,***********************零**************零*零******家*零*零**零 6330,*UPAINTサ フ.ル ーチン* 6340,********************************************零**零 零零***** 6350*UPAINT 6360GA=(WY2-WY1)/400-1 6370GOSUB*XPAINT 6380RETURN 6390,************塞*************零**家***塞****零***零*****零****** 6400,*PCTURサ フ噛 ルーチ ン* 6410,******************************************家******零***家* 6420*PCTUR 6430RESTORE 6440READGFLG,X,Y,COL 6450GOSUB*COCNV:X=XX:Y=YY 64601FGFLG=OTHENGOTO6510 64701FGFLG=1THENGOSUB*UPOINT:N=O:N=N+1:PX(N)=X:PY(N)=Y 6480工FGFLG=2THENGOSUB*ULINE:N=N+1:PX《N》=X:PY(N》=Y 64901FGFLG=3THENGOSUB*UPAINT:N=0 6500GOTO6440 6510RETURN

(22)

図22家 の 図 形 る が,こ れ は 現 在 の 線 分 の 端 点 の 座 標 を, 後 の ス テ ツ プ のULINEサ ブ ル ー チ ン で 利 用 で き る よ う に す る た め で あ る 。 (5)UPAINTサ ブ ル ー チ ン ゥ ィ ン ド ウ ー ビ ュ ー ポ ー ト変 換 を 行 う こ と に よ り,色 塗 り の た め の 水 平 直 線 の 移 動 間 隔 が 問 題 と な る 。 そ こ で ボ デ ィ と な る XPAINTル ー チ ン の 変 数GA(初 期 値 は ゼ ロ)を こ の イ ン タ ー フ ェ ー ス ・ル ー チ ン で 次 の よ う に 補 正 す る 。 GA=(WY2-WY1)/400-1 ま た,そ れ に と も な いXPAINTル ー チ ン の 行 番 号3260のLINE文 を 次 の 文 で 置 き 換 え る 。 3260X=QX(1):Y=QY(1) GOSUB*UPOINT X=QX(1+1):Y=QY(1+1) GOSUS*ULINE

4.図

形 デ ー タ の 定 義 と 描 画

4.1図

形 の デ ー タの 定 義

まず,図 形 の 描 き方 を具 体 的 に例 をあ げて

説 明 す る。 例 え ば図22に 示 す 黛家"の 図 形 で

は,ま ず始 め に そ れ を 方 眼紙 に描 く。 その 座

標 系 は利 用 者 が 自 由 に設 定 で き る右 手 系 の ワ

ー ル ド座 標 系 で あ る。座標 の範囲は左 下隅 を

図23屋 根 の 座 標

(0,0),右

上 隅 を(60,50)と

す る。 こ の

領 域 に描 い た 図形 の座 標 は,次 に示 す 一 筆 書

き 方 式 の も とでBASICのDATA文

に保 存

す る。 これ を図23に 示 す 屋 根 の 部 分 を例 に と

っ て説 明 す る。

屋 根 を描 く こ とは,屋 根 の 輪 郭 を引 き,色

を塗 る こ とで あ る。 輪郭 を引 く開 始 点 を屋 根

の 頂 点 と す れ ば,ま

ず ペ ン を 持 ち 上 げ

(up),点P、 へ 移 動 させ る。これ はUPOINT

サ ブル ー チ ン で行 う こ とが で き る。 次 にペ ン

を降 して(do㎜),点P1→P2→P3の

順 に一

筆 書 きで 線 を引 く。 これ はULINEサ

ブ ル ー

チ ンで 行 う こ とが で き る。色 塗 りは 点P4の 座

標 をUPAINTサ

ブ ル ー チ ン に与 えて 行 う。

これ で 屋 根 が 完 成 す る。

この 操 作 に お い て必 要 な 図 形 デ ー タ は,線

を引 く こ とに関 して は,

・ペ ンをupに 移 動 かdownに 移 動 か の情報

・ペ ン移 動 先 の座 標 デ ー タ

・ペ ンで描 くと きの 線 の色 コ ー ド

で あ り,色 塗 りに 関 して は,

・色 塗 り指 示 の た め の 情 報

・色 塗 りの た め の座 標 デ ー タ

・領 域 内 を塗 る色 コー ド

で あ る。 し たが っ て この2種 類 の デー タ を次

の よ う に整 理 してDATA文

に保 存 す る。

DATA機

能 コー ド,x座 標,y座 標,色 コー ド

こ こで"機 能 コ ー ド"と は,次 の通 りで あ る。

(23)

リ ス ト6 7000,******************************************************零 7010,*PCTURサ フNル ーチン* 7020,******************************************************塞 7030*PCTUR 7040RESTORE 7050READGFLG,X,Y,COL 7060GOSUB*COCNV:X=XX:Y=YY 70701FGFLG=OTHENGOTO7120 70801FGFLG=1THENGOSUB*UPOINT:N=O:N=N+1:PX(N)=X:PY(N)=Y 70901FGFLG=2THENGOSUB*ULINE:N=N+1:PX(N)=X:PY(N)=Y 71001FGFLG=3THENGOSUB*UPAINT:N=0 7].10GOTU7050 7120RETURN 表2PCTURサ プル ー チ ン の 仕 様 サ プ ルー チ ン 名 引 数 と な る変 数 ・配 列 セ ッ トす る図 形 情 報 ●COCNVサ ブ ル ー チ ン で用 い られ る配 列 を使用 TA(1トTA(5) 変換 の種類 TB(1)∼TB(5) 変換 の嘲 に関する情報 PCTUR TC(1トTC(5) 変換 のッ軸に関する情報 ●DATA文 を使 用 1番 目 . 機 能 コー ド ■ 2番 目 図 形 の ワー ル 梅 座 標 3番 目 図 形 の ワー ル ド脛 標 4番 目 線 の色 コー ド 図24パ ン ダ の 原 図

(24)

リ ス ト7 8000,******************************************零************ 8010,*スMケ イ テ 噛 一 タ* 8020,*********家************零*********************零*零******** 8030,一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一・ リ ン カ クo・ 一一 一 一 8040DATA1,30,00,7,2,36,00,7,2,38,02,7 8050DATA2,40,03,7,2,54,07,7,2,66,16,7 8"060DATA2,70,24,7,2,70,30,?,-2,63,43,7 8070DATA2,60,50,7,2,56,60,7,2,49,69,7 8080DATA2,42,75,7,2,33,77,7,2,26,75,7 8090DATA2,14,67,7,2,09,57,7,2,03,41,7 8100DATA2,00,23,7,2,03,14,7,2,12,07,7 8110DATA2,23,05,7,2,25,04,7,2,30,00,7 8120DATA3,30,20,7 8130,一 一 一 一 一 一 ・一一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 ・一一 ・一一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 ヒ タ,リ ミ ミ ー-8140DATA1,56,60,0,2,63,70,0,2,64,72,0 8150DATA2,63,75,0,2,59,80,0,2,53,78,0 8160DATA2,49,69,0,2,48,67,0,2,53,60,0 8170DATA2,56,60,0 8180DATA3,60,70,0 8190,一 一 一 一 一 一一 一一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 ・一一 一"一一 ミ キ ゜ ミ ミ ー 一 一 8200DATA1,15,64,0,2,14,67,0,2,09,75,0 8210DATA2,06,74,0,2,02,67,0,2,02,63,0 8220DATA2,09,57,0,2,11,57,0,2,15,64,0 8230DATA3,10,60,0 8240,一 一謄一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 ・一一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 ヒ タMリ メ ー 一 一 8.250DATA1,44,21,0,2,46,20,0,2,49,22,0 8260DATA2,50,27,0,2,47,33,0,2,43,36,0 8270DATA2,39,34,0,2,38,31,0,2,44,21,0 8280RATA3,40,30,0 8290,一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 ・一一 一 一 一 一 一 一・一 一 一 一 一 ・一一 ・一一 一 一 一 一_ミ キMメ___-8300DATA1,22,21,0,2,2fi,27,0,2,27,31,0 8310DATA2,24,36,0,2,18,32,0,2,15,27,0 8320DATA2,19,21,0,2,22,21,0 8330DATA3,20,30,0 8340,一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 。 一 一 一 一 一 一 一 一 一 一 一 一 一__________ハ ナ ー___一__ 8350DATA1,26,18,0,2,29,14,0,2,32,13,0 8360DATA2,36,15,0,2, ,3.9,18,0,2,26,18,0 8370DATA3,35,16,0 8380,一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一__一 一___.__ク チ_______ 8390DATA1,25,10,0,2,27,08,0,2,29,08,0 8400DATA2 .,31,09,0,2,33,09,0,2,36,08,0 8410.DATA2,38,09,0,2,0,10,0 8420DムTAO,00rOO,0 リ ス ト8 1000,**********家*家***********象**************************家*** 1010,*メ イ ン フ゜ ロ クMラ ム* 1020,***************象*****.********************‡************* 1030SCREEN3,0:CONSOLE  0,1:CLS3 1040WX1=-175:WY1=200:WX2=175:WY2=-2003GOSUB*UWINDOW 1050SX1=144:SY1=O:SX2=494:SY2=399:GOSUB*UVIEW

(25)

1060DIMPX(100),PY(100) 1070N=5:X=O:Y=O:COL=,2 1080PX(1)=WX1:PY(1)=WY1 1090PX(2)=WXltPY(2)=WY2 1100PX(3)=WX2:PY(3)=WY2 1110PX(4)=WX2PY(4》=WY1 1120PX(5)=WX1:PY(5)=WY1 1130GOSUB*UPAINT 1140'一 一 一一一一一一 一一一一一一一=… 一一一一一 一一一一 1150TA(1)=1:TB(1)=-35:TC(1)=-40 1160TA《2)=5:TB(2)=330:TC(2》 ニ0 1170TA(3)=2:TB(3)=1:TC(3)=1 1180TA(4)=1:TB(4)=150:TC(4)=105 1190GOSUB*PCTUR 1200TA(1)=1:TB(1)=-35:TC(1)=-40 1210TA(2)=5:TB(2)=30:TC(2)=0 1220TA(3》=2TB(3)=1TC(3》=1 1230TA(4)=1:TB(4)=-150:TC(4)=105 1240GOSUB*PCTUR 1250TA《1・)=1TB(1》=-35TC(1)=-40 1260TA(2)=5:TB(2)=0:TC(2)=0 1270TA(3)=2:TB(3)=2.6:TC(3)=2.6 1280TA(4)=1:TB(4)=0:TC(4)=-65 1290GOSUB*PCTUR 1300END 1:ペ ンupで 移 動 2:ペ ンdo㎜ で 移 動 3:色 を 塗 る 上 記 の 規 則 を 利 用 し て,屋 根 の 図 形 デ ー タ は 次 の よ う に 定 義 さ れ る 。 DATA1,30,50,0 DATA2,0,30,2 DATA2,60,30,2 DATA2,30,50,2 DATA3,30,40,2 こ の 方 式 を 用 い る と,原 理 的 に ど の よ う な 図 形 で も 描 く こ とが 可 能 と な る 。 4.2図 形 描 画 サ ブ ル ー チ ン 図 形 デ ー タ を 読 み 出 し て 描 画 す る サ ブ ル ー チ ン は 次 の よ う に 作 成 す る 。READ文 で 読 み 出 さ れ た デ ー タ は 機 能 コ ー ド に よ っ て,u POINT,ULINE,UPAINTの 各 サ ブ ル ー チ ン に 振 り分 け る よ う に す る 。 機 能 コ ー ドが 0で あ れ ば,図 形 デ ー タ の 読 み 出 し は 中 止 す る 。

この よ うな サ ブ ル ー チ ン を リス ト6に 示 す 。

サ ブ ル ー チ ンPCTURの

行 番 号6060に 記 述

さ れ たCOCNVル

ー チ ン は リス ト4に 示 し

た幾 何 変 換 サ ブ ル ー チ ンで あ る。幾 何 変換 は

READで

読 み 出 さ れ た1件1件

の 図 形 デ ー

タ に対 して行 わ れ る。 な お表2に

サ ブ ル ー チ

ンPCTURの

引 数 につ い て 示 す 。

5.お

わ り に … … パ ン ダ の 描 画

サ ブ ル ー チ ンPCTURを 用 い て 自 由 な 図 形 を 描 い て み る 。 こ の た め に は,こ れ ま で に 作 成 し た 基 礎 作 画 ル ー チ ン と イ ン ター フ ェー ス ・ ル ー チ ン を す べ て 必 要 とす る 。 描 く図 形 は 図 24(7)に示 す パ ン ダ の 顔 で あ る 。 こ の 図 か ら73 点 の 座 標 を 読 み 取 り,そ れ を 図 形 デ ー タ と し てDATA文 に 登 録 す る 。そ れ を リス ト7に 示 す 。 パ ン ダ を 描 くメ イ ン プ ロ グ ラ ム を リ ス ト8 に 示 す 。 行 番 号1040と1050で ウ ィ ン ド ウ と ビ ュ ー ポ ー ト を 定 義 し,行 番 号1130で ビ ュ ー ポ

(26)

一 ト領 域 を 赤 色 と し ,行 番 号1190,1240,1290 で パ ン ダ の 顔 を3つ 描 く。 そ の 結 果 を 図25の 写 真 に 示 す 。3つ の パ ン ダ の 顔 の う ち2つ は 拡 大 率 が 異 な り,上 部 の2つ の 小 さ な 顔 は,そ れ ぞ れ 左 右30° 回 転 して い る 。ま た そ の2つ の 顔 は ビ ュ ー ポ ー トの 境 界 で ク リッ ピ ン グ さ れ て い る 。 こ の パ ン ダ の 図 形 デ ー タ は サ ブ ル ー チ ン PCTURか ら 処 理 さ れ 始 め,ソ フ トウ ェ ア 命 令 と し て の イ ン タ ー フ ェ ー ス ・ル ー チ ン お よ び 基 礎 作 画 ル ー チ ン を経 由 し な が ら, ・ウ ィ ン ド ウ ー ビ ュ ー ポ ー ト変 換 ・ク リ ッ ピ ン グ ・幾 何 変 換 等 の 操 作 が 行 わ れ,最 終 的 に は 唯 一 の ハ ー ド ウ ェア 命 令 で あ るPSET文 に ょ る コン トロ ー ル の もと で,ピ クセ ル(点)と して 発 光 し て 図 形 とし て 現 れ る の で あ る 。この 過 程 を 図26の 流 れ 図 に 示 す 。この こ とか ら ラス タ ー グ ラ フ ィツ彳に お いて は,「図 形 描 画 の 基 本1ま点 で あ る 」 と い う 基 本 原 理 を 改 め て 認 識 す る こ とが で き る 。 な お,最 後 に 付 録 と し て,本 稿 で 分 割 し て 示 し た プ ロ グ ラ ム を ま と め て 掲 載 し て お く。 *** 本 稿 は 拙 書(1)に 掲 載 し た 内 容 の 一 部 分 を論'

文 形 式 に要 約 ・整 理 して,昭 和61年 度 文 教 大

学 情 報 学 部 共 同研 究 の報 告 と した もの で あ る。

内 容 の 部 分 的 利 用 を御 了解 下 さ っ た啓 学 出版

の 野 沢 裕 氏,お

よび 本稿 の 紀 要 へ の 掲 載 を御

許 可 下 さ っ た 同大 学 情 報 学 部 紀 要 員 会 に感 謝

致 し ます 。

参 考 文 献 (1)広 内 哲 夫 著 『コ ン ピ ュ ー タ ・グ ラ フ ィ ッ ク ス ー〈)G 理 論 の 展 開 と応 用 一 』,啓 学 出 版,1987。 (2)D.F。 ロ ジ ャ ー ズ,山 口 富 士 夫 監 修,セ イ コー 電 子 工 業 訳 『実 践 コ ン ピ ュ ー タ ・グ ラ フ ィ ッ ク ス ー 基 礎 手 続 き と応 用 一 』,日 刊 工 業 新 聞 社,1987。 (3)RA.プ ラ ス トッ ク,G.カ レ イ 著,郡 山 彬 訳 『コ ン ピ ュ ー タ グ ラ フ ィ ッ ク ス 』,マ グ ロ ウ ヒ ル ブ ッ ク, 19870 (4)佐 藤 義 雄 著 『入 門 グ ラ フ ィ ッ ク ス 』,ア ス キ ー 出 版 局,1984。 (5)山 口 富 士 夫 著 『コ ン ピ ュ ー タ デ ィ ス プ レ イ に よ る 図 形 処 理 工 学 』,日 刊 工 業 新 聞 社,1981。 (6)広 内 哲 夫 著 『プ ロ グ ラ ミ ン グ 言 語BASIC』,啓 学 出 版,1987。 (7)パ ン ダ の 図 形 は,山 下 勇 三 氏 制 作 の 『上 野 動 物 園 パ ン ダ の 名 前 募 集 ポ ス タ ー 』 の 中 の 図 柄 の 一 部 を, 同 氏 の 御 厚 意 に よ り利 用 さ せ て 頂 い た 。

(27)

1000 1010 1020 1030 1040 1050 1060 1070 1:1 1090 1100 1110 1.120 1130 1140 図26サ ブ ル ー チ ン 間 の 関 係 付 録 ,*******************象*********‡************************* ,*メ イン フ゜ ロクMラ ム* ,*****家*零 零*******象******************零******************* SCREEN3,0:CONSOLE  O,1:CL53 WX1=-175:WY1=200:WX2=175:WY2=-200:GOSUB*UWINDOW SX1=144:SY1=O:SX2=494:SY2=399:GOSUB*UVIEW

DIMPX(100),PY(100) N=5:X=O:Y=O:COL=2 PX(1)=WX1:PY(1)=WYl PX(2)=WX1:PY(2」=WY2 PX(3)=WX2:PY(3)=WY2 PX(4)=WX2:PY(4)=WYl PX(5)=WX1:PY(5)=WY1 ¶GOSUB*UPAINT ,

(28)

1150TA《1》=1TB(1》=-35TC(1)3'-40 1160TA(2)=5:TB(2)=330:TC(2)=0 1170TA(3)=2:TB(3)=1:TC(3)=1 1180TA(4)=1:TB(4)=150:TC(4)=105 11.90GOSUB*PCTUR 1200TA(1)=1:TB(1)=-35:TC(1)=-40 」210TA《2)=5TB《2》=30:TC《2)=0 122QTA(3)=2:TB(3)=1:TC(3)=1 1.230TA(4)=1:TB(4)=-150:TC(4)=.105 1240GOSUB*PCTUR 1250TA(1)=1:TB(1)=-35:TC(1)=-40 1260TA(2)=5:TB(2)=0:TC(2)=0 1270TA(3)=2:TB(3)=2.6:'TC(3)=2.6 1280TA(4)=1:TB(4)=0:TC(4)=-65 1290GO8UB*PCTUR 1300END 2000,**************************欺 象‡零*********零****家***零****** 2010,*DDAサ フMル ーチン* 2020,***零**象*‡********************象 零*******象 家****家********** 2030*DDA 2040DEFINTI 20501×1=X1:IY1=Y1:IX2=X2:IY2=Y2 20601DX=IX2-IX1:IDY=IY2-IYI. 20701A=ABS(IDX):IB=ABS(IDY) 20801X=IX1:IY=IY1 20901FIA>=IBTHENGOTO2110ELSEGOTO2190 2100,一 一一一一一 一一一一 一一一一 一一一一 一一一一 一一一一一 一一一 一鱒鱒一 一一一一 一一一一 一一一一 一椰一崩 幽6一 一 印嘗 21101E=-ABS(IDX) 2120PSET(IX,IY),COL 21301FIX=IX2THENGOTO2260 21401X=IX+SGN(IDX) 21501E=IE+2*IB 21601FIE>=OTHENIY=IY+SGN(IDY):IE=IE-2*IA 2170GOTO2120 2180'一 一一一 一一一一 一一一一 一一一一一 一一一 一一一一 一一一一 一一一一 一一一一 一一一一 一一一一 一一一 一一一一 一一一一 21901E=-ABS(IDY) 2200PSET(IX,IY),COL 22101FIY=IY2THENGOTO2260 222 .OIY=IY+SGN(IDY) 22301E=IE+2*IA 22401FIE>=OTHENIX=IX+SGN(IDX):IE=IE-2*IB 2250GOTO2200 2260DEFSNGI 2270RETURN 3000,********************象*********家**零***零**零************** 3010,*XPAINTサ フ噛ル ーチ ン* 3020,*********家***********‡*取**象*零**零*****零*象***象****零***象** 3030*XPAINT 30401FPSW=OTHENDIMQX(20),QY(20):PSW=1 3050CY=Y 3060H=CY 3070GOSUB*GLN 30801FFLG=OTHENH=H+1+GA:GOTO3070

参照

関連したドキュメント

Finally, we give an example to show how the generalized zeta function can be applied to graphs to distinguish non-isomorphic graphs with the same Ihara-Selberg zeta

As with subword order, the M¨obius function for compositions is given by a signed sum over normal embeddings, although here the sign of a normal embedding depends on the

Making use, from the preceding paper, of the affirmative solution of the Spectral Conjecture, it is shown here that the general boundaries, of the minimal Gerschgorin sets for

[14.] It must, however, be remembered, as a part of such development, that although, when this condition (232) or (235) or (236) is satisfied, the three auxiliary problems above

We show that a discrete fixed point theorem of Eilenberg is equivalent to the restriction of the contraction principle to the class of non-Archimedean bounded metric spaces.. We

In [9] a free energy encoding marked length spectra of closed geodesics was introduced, thus our objective is to analyze facts of the free energy of herein comparing with the

It turns out that the symbol which is defined in a probabilistic way coincides with the analytic (in the sense of pseudo-differential operators) symbol for the class of Feller

We give a Dehn–Nielsen type theorem for the homology cobordism group of homol- ogy cylinders by considering its action on the acyclic closure, which was defined by Levine in [12]