窓辺の小石 第200回 へびつかい座ドローライン
マイナビニュース / 2025年1月24日 15時21分
そういうわけで、自力でなんとか動くモノを作るしか方法がなかった。いきなり機械語は難しいのと、デバッグ、評価が困難になるため、まずは、BASICの整数演算と点を打つルーチンで、正しく動くアルゴリズムを作る。その後、それを機械語で実行できるようにする、という手順を踏んだ。まともに動く機械語のコードを書くのに1週間ぐらいは費やしたと記憶する。
Microsoft BASICだと、BASICインタプリタ内の描画ルーチンや演算ルーチンを呼び出すという手もある。しかし、当時のシャープのBASICは、サブルーチンの前に作業領域を取っていたため、インタプリタが動作中に呼び出すと、作業領域を書き換えてしまう可能性があった。また、そもそもグラフィックス関係のステートメントがなかった。
今では、ちょっと検索すると、簡単にコードが見つかる。たとえば、2点間に線を引きたいのであれば、「ブレゼンハムのアルゴリズム」が見つかる。
線を引くことができれば、それを使って矩形を描画できる。また、同じブレゼンハムのアルゴリズムを使って、円を描画させることも可能だ(写真01)。
以前紹介したSixelグラフィックスと組み合わせたものが、(リスト01)である。このPowerShellプログラムは、単純に点を打ちたい座標と描画色を出力する(写真02)。描画コマンド(Plot-SixelArray)は、3つの整数(X、Y、C)を受け取って、座標(X,Y)に色Cで描画するように作る。実際のプログラムを筆者のGitHubに置いてある。
■リスト01
function Global:Line {
param(
[int]$x0,
[int]$y0,
[int]$x1,
[int]$y1,
[int]$c
)
$dx = [math]::Abs($x1 - $x0)
$dy = [math]::Abs($y1 - $y0)
$sx=0
$sy=0
if($x0 -lt $x1) { $sx=1} else {$sx=-1}
if($y0 -lt $y1) { $sy=1} else {$sy=-1}
$err = $dx - $dy
do{
Write-Output (,@($x0,$y0,$c))
if( ($x0 -eq $x1) -and ($y0 -eq $y1)) { break }
$e2=2 * $err
if($e2 -gt -1*$dy) {
$err -= $dy
$x0 += $sx
}
if($e2 -lt $dx){
$err += $dx
$y0 += $sy
}
}
while($true)
}
タイトルネタは、ジョン・ヴァーリイ(John Varley)の「へびつかい座ホットライン」(The Ophiuchi Hotline,1977)である。1970年台後半、SFの方向が変わったと感じた。本書や「星を継ぐもの」(J.P.ホーガン。1977年)など、ストーリーの緻密さや表現技法など小説としての完成度が、一段階上がった感じがした。
(塩田紳二)
-
- 1
- 2
この記事に関連するニュース
-
分数の割り算はなぜひっくり返して掛けるのか? 子どもに聞かれてわかりやすく説明する方法
東洋経済オンライン / 2025年1月18日 18時0分
-
Windows Terminal ベスト設定 第18回「Sixcelグラフィックス基礎編」
マイナビニュース / 2025年1月17日 16時17分
-
ミドルレンジの新GPU「Intel Arc B570」を試して分かったこと ゲーミング/動画処理の入門にお勧めだがネックは?
ITmedia PC USER / 2025年1月17日 0時0分
-
Windows Terminal Preview版でSixelグラフィックスを実際に表示させてみる
ASCII.jp / 2025年1月5日 10時0分
-
これで文系でも天才数学者と同じ景色を見ることができる…現代数学の超難問をできる限りやさしく解説する
プレジデントオンライン / 2024年12月30日 9時15分
ランキング
-
1『英雄伝説 界の軌跡』や『ウマ娘 ハチャメチャ大感謝祭!』がお買い得!スイッチ2に備えて名作ゲットもお勧め─ゲオ店舗&オンラインストアのセールは1月25日から
インサイド / 2025年1月24日 18時0分
-
2ドンキの格安SIM「マジモバ」はどれだけお得? 「#今月のおごり」には意外な落とし穴も
ITmedia Mobile / 2025年1月24日 10時5分
-
3大谷翔平、広告のビジュアルが「ジブリのキャラに激似」と反響 「それだ」「どっかで見たことあると思ったw」
ねとらぼ / 2025年1月24日 20時20分
-
4ドコモ、「らくらくスマートフォン F-53E」の発売日を1月30日に決定
マイナビニュース / 2025年1月24日 19時14分
-
5「あいつらどうかしてるぜ!」好スタートの『首都高バトル』車合体バグが発生中―車が2段重ねになる様子にSNS上では温かな笑いの声
Game*Spark / 2025年1月24日 17時35分
記事ミッション中・・・
記事にリアクションする
記事ミッション中・・・
記事にリアクションする
エラーが発生しました
ページを再読み込みして
ください