問題タブ [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.
image - Julia でグレースケール画像の 2 つのピクセル間に線を引く
Julia にグレースケールの画像があり、画像に直線を描きたいと思います。私は2組の座標を持っています。これらは、線の開始位置と終了位置の開始 (x1,y1) および終了 (x2,y2) ピクセル位置を表します。私の線が画像に表示されるように、これらの2つの点の間にあるピクセル位置を見つける方法がわかりません。
たとえば、画像に指定された正確な座標に基づいて多くの画像に対してこれを行う必要があるため、インタラクティブツールや注釈を使用してこれを行いたくありません。
私のコードはこれまでのところ次のようになります。
Interpolation.jl と、ここやブログなどの画像処理の投稿を見てみましたが、うまくいかないようです。
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 にはヒットしません。線の下と線の上の両方に「ヒット」するようにコードを調整するにはどうすればよいですか?
matlab - 2 つの行の間に特定の値を持つ Matlab 塗りつぶし行列 (Bresenham)
学校のプロジェクトでは、8 本の金属ピンでカーボン ファイバー シートのあらゆる種類の損傷を特定する必要があります。損傷を判断するために、複数のポイント間の抵抗率測定を使用します。
ポイント間の抵抗を可視化するために、Matlab スクリプトを使用します。値を行列にプロットし、ブレゼンハム関数で線を作成します。
問題は次のとおりです。
ブレゼンハム関数は行列に線を作成しますが、関数を探して、2 つの線の間の行列をそれらの 2 つの線を組み合わせた平均で埋めます。行との間の行列を埋める必要があるS1_(1)
の平均。最終的なプロットは、すべての点が描画される場所です。線間のすべての領域が塗りつぶされると、円のどこかに高い頂点が作成されます。S1_(2)
x1_1,y1_1
x1_1,y1_2
誰かがこの問題を解決するのを手伝ってくれますか?
アップデート:
関数を呼び出して三角行列を作成し、それらすべての行列を合計します。
algorithm - Bresenham の線画アルゴリズムをクリッピングで使用するには?
Bresenham 線描画アルゴリズムで線を描画する場合、書き込み先のビットマップの境界内に線が入らない場合があります。結果をクリップして、書き込み先の画像の軸に合わせた境界内に収まるようにすると便利です。
最初に線を長方形にクリップしてから線を引くことは可能ですが。これは理想的ではありません。これは、線にわずかに異なる傾斜を与えることが多いためです(int 座標が使用されていると仮定します)。
原始的な操作なので、形を保ったまま線を切り取る方法は確立されているのでしょうか?
それが役立つ場合は、アルゴリズムの参照実装を次に示します。これは、線の描画中に int/float 変換を回避する int 座標を使用します。
私はこれを調べるのにしばらく時間を費やしました:
- 問題は、 virtual-dub の Web ページで詳しく説明されています。
- Alan Tiedemann からの可能な解決策
...ただし、テキストに基づいてコードを実装する必要があります-それがどれだけうまく機能するかを確認します。 - Bresenham's Line Generation Algorithm with Built-in Clipping
(1995 年の論文、文書全体を見つけることができませんでしたか? - PDF は、参照する C コードのない単一のページであり、有料の壁のように見えます)。
c - 3D 平面上で 2D 円をラスタライズするための DDA スタイルのアルゴリズムはありますか?
私は基本的にブレゼンハムの円の描画の帰結に興味がありますが、最終結果がY
(垂直)平面上の平らな円である3Dパースペクティブです。この種の魔法のDDAタイプのアルゴリズムはありますか?
DDAとは、主なボトルネックはパースペクティブ除算であるため、主に整数を使用し、できるだけ多くの乗算と除算を回避することを意味することに注意してZ
ください。
これまでに思いついたのは、360 度を一定の増分でループし、投影された座標と増分に基づいて次の座標との間に線を引くことです。下の画像は、23 度の増分を使用したテストです (私は 22.5 を使用しますが、これは 1 度の精度のみで整数ルックアップから機能します)。
このための疑似コードは次のようになります。
明らかに、実際のコードには多くの小さな最適化 (ルックアップ テーブルと事前計算された量) がありますが、これがその本質です。
乾杯!