問題タブ [bresenham]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
4728 参照

java - Java での Bresenham 円描画アルゴリズムの実装

Bresenham Circle 描画アルゴリズムを Java で実装しました。しかし、出力は正しく描画されません! 問題がどこにあるのかわかりません。

私のコードと出力画像を以下に示します。どんな助けでも大歓迎です。

ここに画像の説明を入力

0 投票する
2 に答える
2850 参照

algorithm - アルゴリズムの Bresenham のエラー累積部分を理解していますか?

Bresenham の線画アルゴリズムでエラー累積部分がどのように機能するかを理解するのに問題があります。

と があるx1としx2ます。簡単にするためx1 < x2に、 、y1 < y2、および と仮定しましょう。(x2 - x1) >= (y2 - y1)

線を引く単純な方法から始めましょう。次のようになります。

もっとブレゼンハム風にして、y の整数部分と浮動小数点部分を分けてみましょう。

この時点で、乗算yfslope2 * (x2 - x1)整数にすることができ、浮動小数点数はなくなります。という事は承知しています。

私が完全に理解していない部分は次のとおりです。

それは実際にどのように機能しますか?なぜ 1.0 と比較してから減分するのですか?

Bresenham の基本的な質問は、次のようなものであることは知っています。現在ピクセルx, yを使用していて、次のピクセルを描画したい場合、または を選択する必要がありますx + 1, yx + 1, y + 1? - その小切手が、この質問に答えるのにどのように役立つのか理解できません.

それをエラー用語と呼ぶ人もいれば、しきい値と呼ぶ人もいますが、それが何を表しているのかわかりません。

説明をいただければ幸いです。

0 投票する
2 に答える
466 参照

algorithm - このコードが複数の行 (mips アセンブリ) を出力する原因は何ですか?

注: 学習を支援するために、この初心者の質問に反対票を投じないでください。助けを求めている人が反対票を投じられるのは、かなりがっかりします。

こんにちは、ブレゼンハムのアルゴリズムを mips アセンブリに実装しようとしていますが、エラーなどを含まない不完全なアルゴリズムを使用していました。アルゴリズムを使用する誰かの mips アセンブリ コードに出くわしましたが、コードの何がプログラム出力を作成するのかわかりません。複数行。main_for は、コードが複数行を出力する原因の一部ですか?

0 投票する
0 に答える
557 参照

graphics - DDA アルゴリズムと Bresenham アルゴリズム

私は線画用の DDA および Bresenham アルゴリズムを研究しており、1 つのことに興味があります。両方のアルゴリズムで、ピクセル グリッドを単位サイズと見なし、さらに手順を実行します。私の質問は、グリッド サイズを 0.5 に変更するかどうかです。 1*1 グリッドの代わりに *0.5 を使用すると、両方のアルゴリズムの動作に何らかの変更が反映されますか? はいの場合、各アルゴリズムでそれぞれどのような変更が行われるかについて誰かが教えてくれますか?事前に.誰でも助けてください.緊急なので.私は試験を受けており、この概念を明確にしたい.お願いします.ありがとう:)

0 投票する
1 に答える
464 参照

javascript - ブレゼンハム/中点円アルゴリズムをわずかに変更して、より良い結果を得る

ブレセンハム/ミッドポイント アルゴリズムを使用して塗りつぶされた円を作成する方法は 2 つあります。しかし、2 番目の方法は最初の方法よりもはるかに優れています。

ブレゼンハム/ミッドポイント

2 番目のような結果を作成したいのですが、1 番目の方法を使用します。現時点ではこれである距離を計算するための正しい式が必要なので、最初の方法でそれを行いたいです:

ここにjsfiddleがあります。最初のアプローチはウィキペディアから取られました 2番目はここから

0 投票する
1 に答える
891 参照

python - 影付け Python の最適化

私がやっている小さなRPGのシャドウキャスターに取り組んでいます。

私が抱えている問題は、ゲームで使用すると、速度が遅くなり、ひどいラグが発生することです。

投稿の長さにあまり驚かないでください。これは非常に簡単ですが、コードを実行できるように、ブレゼンハムのアルゴリズムもすべて含めました。

原理は次のとおりです。 - 黒い表面を作成します - 位置と半径で光源を定義します。- Bresenham の円アルゴリズムを使用して、この位置と半径によって定義される円の円周上のすべての点を取得します。- 円周に沿った各ポイントについて、ブレゼンハムのライン アルゴリズムを使用して、光源の位置からラインを描画します。- 次に、線の点を繰り返し、画面に表示されているすべての障害物と衝突するかどうかを確認します。- 衝突がない場合は、その点を中心に半径 10 ピクセル程度の白い円を描きます。- 衝突が発生した場合は、円周に沿って次のポイントに移動します。- 最後に、黒色の透明度値が 100 で、白色の透明度が完全なサーフェス上のすべての白い円でサーフェスをブリットします。

これまでのところ、私は次のことを試みました: 遅延を減らしました: - 障害物リストを画面に表示されるものに制限します - 画面の端を障害物と見なして、見えない領域の反復を減らします。- 円の周りの 3 点と線に沿った 12 点ごとにのみ繰り返します。これは何も変更しませんでした: - 線に沿った多数の円の代わりに、光源から範囲の端または障害物に向かう楕円を使用します。問題は、楕円ごとにサーフェスを再描画してから、全体を回転させる必要があることでした。

これをより効率的にする方法について何か提案があれば、喜んでここにいたします。

Bresenham のライン アルゴリズム:

Bresenham の円アルゴリズム:

光源、障害物、シャドウ マスクのマイ クラス:

Night_Mask クラスの apply_shadows メソッドで例外を使用せずに、ラインと障害物ループの両方から抜け出すことを可能にする影生成関数:

最後に、上記のすべてを実行するメインの pygame サンプル ループ:

簡単にコピーして貼り付けるために、最初から最後までのコード全体を次に示します。