プログラミング指南 - Code Knowledge ゲーム制作に関するプログラミング等を主に書き溜めていきます。ただ、どちらかと言えば日記的な書き方が続くと思いますが、そこは温かい目で見て頂ければ。あと、ちょっとしたサンプルやツールのダウンロードも出来るようにしておきます。 前回 Z80 で左右判定を行いました。Z80 ではアナログの扱いではなく 8方向で表現してた事もあり、各方向毎に専用判定を記述することで対応しました。C# ではベクトルで座標を、向きはベクトルや角度で扱っているため、角度毎の専用処理では判定できません。そこで数式を用いて判定することになります。それが外積や内積です。今回は数学的な説明としてではなく、道具としての外積と内積を解説していきます。
ブレゼンハムのアルゴリズム(Bresenham's line algorithm)は、与えられた始点と終点の間に連続した点を置き、近似的な直線を引くためのアルゴリズム。ブレゼンハムの線分描画アルゴリズム、ブレゼンハムアルゴリズムとも。コンピュータのディスプレイに直線を描画するのによく使われ、整数の加減算とビットシフトのみで実装できるので多くのコンピュータで使用可能である。コンピュータグラフィックスの分野の最初期のアルゴリズムの1つである。これを若干拡張すると、円を描くことができる。 アンチエイリアスをサポートした直線描画アルゴリズム(例えば、Xiaolin Wu's line algorithm)もあるが、ブレゼンハムのアルゴリズムの高速性と単純さは今も重要である。プロッターやビデオカードのGPUといったハードウェアで使用されている。ソフトウェアでは多くのグラフィックスライブラリ(英語版)
かつてのMac OS9までの描画エンジンの主役はQuickDrawが担っていた。GUIなOSでは、文字も含めてすべてをグラフィックとして扱うので、画面に見えているすべてのもの*1はQuickDrawによって描かれていたことになる。描画エンジンは、GUIなOS開発の要となる技術である。その出来が、GUIなOS開発の成否を分けるとも言える。 そして、最初期のQuickDrawは、ビル・アトキンソンがたった一人で開発したそうである。 当時(25年以上前)のCPUは、動作クロックが8MHzという性能だった。(現在は2GHz=2000MHzかつ、複数コアが当たり前) そのような性能であっても、違和感なくマウスで操作できるOS環境にするために、斬新な発想や試行錯誤を重ね、相当な努力の末に開発されたのがLisaやMacintoshであった。 Amazon.co.jp: レボリューション・イン・ザ・バレー
今のPCはグラフィック画面の1ドットが見えないくらい精密な描画をしていますし、APIに座標を指定すればサッと点を打ってくれるのが当たり前なので、どうやって点を打つかなんて気にする必要はまったく無いのですが、8ビットな時代には、必ずしもそんな便利なサブルーチンが提供されているとは限らず、有っても汎用的には便利であっても特定の用途ではパフォーマンスに難があったりして、自力で点を打つ必要に迫られることも無くはありませんでした。 グラフィック画面はVRAMと呼ばれる特定のメモリ領域が使われていて、機種によって構造は大きく異なるのですが、良くある構造はカラープレーンごとに特定のアドレスからビット単位で横方向にデータが並べられて画面の右端まで行くと次の縦方向のデータが続くというものです。 VRAMの構造(例)ですから(0,12)に点を打ちたければ、12は12/8(整数除算)の結果である1をベースアドレ
むかしむかし、グラフィック画面に点を打つのに、自分でアドレスを計算して直接VRAMに値を書き込むことで点を打つ話を以下の記事に書きました。 自分で点を打つ世界 点ですら自分で打たなくてはならなかったくらいなのですから、当然のように線も自分で引かないとなりません。線というのは2つの点を結ぶものですから、2つのXY座標を指定して線を引きます。学校でならったと思いますが、直線の方程式は Y = mX + nですから、2つの点(X0,Y0)と(X1,Y1)を満たすmとnを計算して、XからY(またはYからX)を求める式を作ります。 Y = (Y1 - Y0) / (X1 - X0) ✕ (X - X0) + Y0これでXをX0からX1に変化させながらYを求めて線を描いていけばいいはずです。 【高校】直線の方程式5パターンの求め方をイチから!
Please note: this blog has been migrated to a new location at https://jakesgordon.com. All new writing will be published over there, existing content has been left here for reference, but will no longer be updated (as of Nov 2023) I wasn’t really much for going to the arcades when I was younger… I didn’t need ’em with awesome C64 games sitting at home… but there were 3 arcade games that could alwa
6本足多足歩行の多関節キャラを作ってみたのですが相当作るの苦労したので備忘録として書いておきます。 まずは基本的な考え方として本体と足の根本、足の先端の3つの座標を考えます。 Center_X,Center_Yが本体の中心座標 Beg_X,Beg_Yが足の根本の座標 End_X,End_Yが足の先端の座標 angleが本体の移動方向 width_Begが本体から足の根本までの距離 width_Endが本体から足の先端までの距離 とすると Beg_X,Beg_Yは Beg_X= Mathf.Cos(angle + 1.57f) * width_Beg + Center_X; Beg_Y= Mathf.Sin(angle + 1.57f) * width_Beg + Center_Y;End_X,End_Yは End_X= Mathf.Cos(angle + 1.57f) * width_En
テトランっぽい敵を作ってみてる。とりあえず腕を増やしまくるのはお約束w#Unity #gamedev pic.twitter.com/PGah4rCxqx — kt. (@xxxx_kt_xxxx) February 6, 2022 アルゴリズムを検索してみてもあまり出てこなかったので忘備録として書いておきます。 考え方としては 1本目、腕の中心から決めた角度の腕の長さの円を描ける座標計算をします。その計算した座標を2本目の中心座標とします。 2本目、1本目で計算した中心座標から決めた角度の腕の長さの円を描ける座標計算をします。その計算した座標を3本目の中心座標とします。 3本目、2本目で計算した中心座標から決めた角度の腕の長さの円を描ける座標計算をします。その計算した座標を4本目の中心座標とします。 以下腕の長さだけ繰り返し。 要は普通に多関節の腕を作る感じです。 このまま回転させてもフ
計算量についてのお話です。対象は、プログラミング経験はあるが計算量のことを知らない初心者から、計算量のことを知っているつもりになっている中級者くらいです。 数式を見たくない人にとっては読むのが大変かもですが、深呼吸しつつ落ちついて読んでくれるとうれしいです。 それから、この記事が自分には合わないな〜と思ったときは、(別の記事を Qiita とかで検索するよりも)この記事の一番下の 参考文献 にある本を読むことをおすすめします。Amazon の試し読みで無料で読めます*1。 TL; DR 関数の増加度合いのことをオーダーと呼ぶよ 計算量は、入力サイズ(など)を受け取ってアルゴリズムの計算回数(など)を返す関数だよ その関数のオーダーについての議論がよく行われるよ オーダーを上から抑えるときは \(O\)、下から抑えるときは \(\Omega\) を使うよ オーダーを上下両方から抑えたいときは
Procedural City Generation in Python - Documentation¶ Welcome to procedural_city_generation’s documentation! In this page we will give an overview of all the things you need to know to get started with this project. Getting it to work¶ You can get the source code at our Github Page If you have git installed, you can clone the repository instead of downloading it as a .zip archive with: Dependencie
道路の生成に未対応のもの。 QTown Maya用の街生成スクリプト。道路の生成には未対応。オープンソース。 City Kit (Greyscalegorilla) Cinema 4D用の街生成プラグイン。道路の生成には未対応。Greyscalegorilla Plusの一部[6]。 CityScape (HERE←NAVTEQ[7]←PixelActive) プロモーションバージョンが3ds Max 2011に付属されていた[8]。ディスコン。 Urban Pad (Gamr7) プロシージャル街生成ミドルウェア。2012年開発終了[9]。 CityGenerator (Paolo Emilio Selva) Softimage用の街生成プラグイン[10]。塗り分けした画像マップから街を生成する。道路の生成には未対応。最終バージョンは2008年リリースのv0.80601。XSI 6.02
ここでは、プログラムなどでよく使用されるアルゴリズムについて紹介したいと思います。 元々は、自分の頭の中を整理することを目的にこのコーナーを開設してみたのですが、最近は継続させることを目的に新しいネタを探すようになってきました。まだまだ面白いテーマがいろいろと残っているので、気力の続く限りは更新していきたいと思います。 今までに紹介したテーマに関しても、新しい内容や変更したい箇所などがたくさんあるため、新規テーマと同時進行で修正作業も行なっています。 アルゴリズムのコーナーで紹介してきたサンプル・プログラムをいくつか公開しています。「ライン・ルーチン」「円弧描画」「ペイント・ルーチン」「グラフィック・パターンの処理」「多角形の塗りつぶし」を一つにまとめた GraphicLibrary と、「確率・統計」より「一般化線形モデル」までを一つにまとめた Statistics を現在は用意して
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く