問題タブ [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 投票する
1 に答える
884 参照

image - Julia でグレースケール画像の 2 つのピクセル間に線を引く

Julia にグレースケールの画像があり、画像に直線を描きたいと思います。私は2組の座標を持っています。これらは、線の開始位置と終了位置の開始 (x1,y1) および終了 (x2,y2) ピクセル位置を表します。私の線が画像に表示されるように、これらの2つの点の間にあるピクセル位置を見つける方法がわかりません。

たとえば、画像に指定された正確な座標に基づいて多くの画像に対してこれを行う必要があるため、インタラクティブツールや注釈を使用してこれを行いたくありません。

私のコードはこれまでのところ次のようになります。

Interpolation.jl と、ここやブログなどの画像処理の投稿を見てみましたが、うまくいかないようです。

私が持っているもの (色は無視してください)グレースケールに変換する画像 私が欲しいもの (色は無視してください)これのグレースケール版

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

php - PHP での Bresenham の行アルゴリズム

私はテキスト ベース (コンソール) の WW2 戦略ゲームに取り組んでおり、2D 正方形グリッド マップ上に設定されています。マップ上のあるタイルから別のタイルへの視線を計算する方法が必要です。このJava の例を使用してコードを作成しました。これが私が書いたものです。

注: getEmptyMap は、多次元配列を 0 で埋めるだけです。

入力として (0, 0, 4, 4, 4) を使用したテスト結果:

私は行をマッピングする方法を試しました: 1 つは Franz D. が使用した通常の実装 (現在、上記の例ではコメントアウトされています)、もう 1 つは Franz D. が示した変更された実装です。どちらも私が探している結果を私に与えていません。「アンチエイリアシング」の一種。はんだが 0,0 から 2,2 を見て、1,2 と 2,1 に建物がある場合、2,2 にあるものはすべて見えないようにする必要があります。コメントアウトされた実装は建物を完全に無視し、変更は 2,1 に「ヒット」しますが、1,2 にはヒットしません。線の下と線の上の両方に「ヒット」するようにコードを調整するにはどうすればよいですか?

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

matlab - 2 つの行の間に特定の値を持つ Matlab 塗りつぶし行列 (Bresenham)

学校のプロジェクトでは、8 本の金属ピンでカーボン ファイバー シートのあらゆる種類の損傷を特定する必要があります。損傷を判断するために、複数のポイント間の抵抗率測定を使用します。

ポイント間の抵抗を可視化するために、Matlab スクリプトを使用します。値を行列にプロットし、ブレゼンハム関数で線を作成します。

問題は次のとおりです。

ブレゼンハム関数は行列に線を作成しますが、関数を探して、2 つの線の間の行列をそれらの 2 つの線を組み合わせた平均で埋めます。行との間の行列を埋める必要があるS1_(1)の平均。最終的なプロットは、すべての点が描画される場所です。線間のすべての領域が塗りつぶされると、円のどこかに高い頂点が作成されます。S1_(2)x1_1,y1_1x1_1,y1_2

最終プロット

誰かがこの問題を解決するのを手伝ってくれますか?

アップデート:

関数を呼び出して三角行列を作成し、それらすべての行列を合計します。

正しいプロット

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

algorithm - Bresenham の線画アルゴリズムをクリッピングで使用するには?

Bresenham 線描画アルゴリズムで線を描画する場合、書き込み先のビットマップの境界内に線が入らない場合があります。結果をクリップして、書き込み先の画像の軸に合わせた境界内に収まるようにすると便利です。

最初に線を長方形にクリップしてから線を引くことは可能ですが。これは理想的ではありません。これは、線にわずかに異なる傾斜を与えることが多いためです(int 座標が使用されていると仮定します)

原始的な操作なので、形を保ったまま線を切り取る方法は確立されているのでしょうか?

それが役立つ場合は、アルゴリズムの参照実装を次に示します。これは、線の描画中に int/float 変換を回避する int 座標を使用します。


私はこれを調べるのにしばらく時間を費やしました:

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

c - 3D 平面上で 2D 円をラスタライズするための DDA スタイルのアルゴリズムはありますか?

私は基本的にブレゼンハムの円の描画の帰結に興味がありますが、最終結果がY(垂直)平面上の平らな円である3Dパースペクティブです。この種の魔法のDDAタイプのアルゴリズムはありますか?

DDAとは、主なボトルネックはパースペクティブ除算であるため、主に整数を使用し、できるだけ多くの乗算と除算を回避することを意味することに注意してZください。

これまでに思いついたのは、360 度を一定の増分でループし、投影された座標と増分に基づいて次の座標との間に線を引くことです。下の画像は、23 度の増分を使用したテストです (私は 22.5 を使用しますが、これは 1 度の精度のみで整数ルックアップから機能します)。

23 度刻みの線を使用して描かれた円

このための疑似コードは次のようになります。

明らかに、実際のコードには多くの小さな最適化 (ルックアップ テーブルと事前計算された量) がありますが、これがその本質です。

乾杯!