問題タブ [raster-graphics]
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.
javascript - Html5 キャンバスでのコンテンツのレンダリングの最適化
Html5キャンバスのグラフィックコンテキストを使用してビューの階層をレンダリングするオープンソースライブラリを開発しています。ただし、完全に不透明なコンテンツのレンダリングを高速化できるように、パフォーマンスを最適化したいと考えています。
そのようなロジックをどのように実装できますか?
そのようなシステムを実装する方法に関する有益なリソースまたはチュートリアルを知っていますか?
現在、私は ui-kit に似た基本的な描画モデルを使用しており、各ビューは画面上の長方形の領域を表しています。レンダリング エンジンはビュー オブジェクトとは別に実装され、再描画が必要なダーティ ビューを含むリストに基づいてコンテンツをレンダリングします。
編集:
ライブラリと現在のレンダリング システム
ライブラリは、グラフィックスを動的にレンダリングするキャンバス要素機能上の、いわゆるプラットフォームまたは抽象レイヤーです。現在、表示リストなどの管理の基本を実装していますが、まだ最適化されていません。
現在のレンダリング エンジンはバッファを使用しており、後でビューを再描画できるようにビューの描画コマンドをキャッシュしています。ただし、ビューが 1 つだけ無効になると、階層の再描画が必要になるため、描画にはオーバー ハルがあります。
画面コンテンツのダーティな四角形を管理するシステムを実装するにはどうすればよいですか?
algorithm - ブレンドされたアンチエイリアス ラインを結合するときのディップ
ブレンディング モードを使用しているときに、アンチエイリアス処理された 2 つの線を結合すると問題が発生します。ブレンド モードとは、線の色と背景の色の比率を計算してアンチエイリアス処理された線を描画することを意味します。たとえば、ピクセルの比率が 70% の場合、新しいピクセルは 0.7*線の色 + 0.3*背景色になります。私の線のアンチエイリアシング関数は、基本的にエラー関数から作成されています (ただし、ほとんどのアンチエイリアシング関数で同じ問題が発生すると思います)。

そのため、2 本の線が交わると、一方が他方の線に引き寄せられ、落ち込みが生じます。2 本の線の接合部は本来あるべき強度の 75% まで落ち込みます。次に、0% を残す必要があるときに 2 番目の線が描画された後、これらの 50% の 50% が残りました。

結合された線でアンチエイリアス処理されたラスター グラフィックスを描画する際によくある問題だとしか思えないので、共通の解決策が必要ですが、これが何であるかはわかりません。ありがとう!
また、線の描画方法を明確にするために、線の幅はガウス関数 (e^-x*x) で作成され、両端はエラー関数を使用して丸められます。WolframAlpha で '0.5erfc(-x-5) * 0.5erfc(x-5) * e^(-y*y)' と入力すると、10 ピクセルの長さの水平線がどのように見えるかの例を見ることができます。
r - R でラスター プロットを作成する
ラスター グラフ (ホブモラー図など) を作成しようとしていますが、誰かが助けてくれることを望んでいました。私はrasterVisと他のいくつかのヘルプを見てきましたが、私のデータに合うようにそれらの例を得ることができないようです。プロットを作成できましたが、セルの塗りつぶし値が元のデータに対応していません。データ フレームの例の dput() ファイルをコピーしました (これが正しい方法であることを願っています)。私が欲しいのは、x 軸に沿った年間通算日 (DOY) で、各 DOY の上に 48 個の長方形 (DF の時間列) の y 軸があります。これらの長方形は、各 DOY の 30 分ごとの間隔を表し、対応する値 (DF の qc 列) に従って色付けされます。値は 0、1、または 2 です。
これまでのところ、次のコードを思いつきましたが、z 値 (qc 列) の色への割り当てに問題があるようです。何らかの理由で値が適切に並んでいないと思います...
起こっているように見えるのは、最初に x 軸の下部に沿って (左から右に) 塗りつぶし値マトリックス (z) が適用され、次に上部にループするのに対し、左下隅から開始して上に行く必要があることです。次に、左から右にループします (何らかの意味があることを願っています!) ここでのサンプル データは 3 日間しかカバーしていませんが、完全なデータセットは 1 年 (2012 年には 366) になります。助けてくれてありがとう、
ジョン
math - ベクトル曲線のアウトライン エンベロープをオフスクリーン ビットマップに合わせるにはどうすればよいですか?
ベクトル ベースの描画プログラムを作成していますが、ラスター ベースのツールのように動作する描画ツールが必要です。たとえば、グラフィック タブレット ペンで描画すると、結果として得られるベクター ストロークは、筆圧の違いも含めて、実際には塗りつぶされます。ベクトル曲線は、ストロークの外側にちょうど収まります。また、消しゴムを手に取り、このストロークの一部を消去すると、正確に消去した場所だけが消去されます。ベクトル ポイントを削除するだけでなく、必要な場所に新しいポイントを作成します。これらのペンと消しゴムのストロークは、外側のアウトラインだけでなく、中央の穴も含む、任意のジオメトリになります。
これを行う方法について長い間戸惑いましたが、昨夜、ペン入力をオフスクリーン ビットマップ (各ピクセルは 1 ビットであり、ペン ストロークによってタッチされているかどうかに関係なく) に描画し、ストロークがプログラムはこのビットマップをベクトル化し、適切な色で塗りつぶすベクトルを配置するか、その下のベクトルでブール演算を実行して消去します。
ラスター描画ツールを使用してこれを機能させることができます(透明度を使用して描画している場合、目に見える表面に常に線を描画する必要がなくなります)が、どのように適合するかわかりませんこの 1 ビット ビットマップへのベクトル曲線。操作は高速である必要がありますが、ペンを持ち上げた後に 1 回実行されるため、リアルタイムではありません。また、ジオメトリを記述するために必要な最小数のベジェ カーブ ポイントのみが使用されるように、最適化されたジオメトリを作成する必要があります。
これを行う方法についての提案、解決策、指針、または参考文献はありますか? または、別の方法がありますか?
c++ - パイプラインに DirectX11 ピクセル シェーダーがありません
DirectX を使用して MS3D モデルを表示するプログラムを作成していますが、残念ながら結果は画面に何も表示されません。Visual Studio 13 のグラフィックス デバッガーを使用すると、下の図に示すように、ピクセル シェーダーがパイプラインにないことに気付きました。
これは私のピクセル シェーダー ソース コードです。
Graphics Debugger でわかったように、すべてのグラフィックス イベントは正しいです。ピクセル シェーダーに関連する可能性のある重要なイベントを以下にリストしました。
上記のリストのすべての関数をデバッグしたところ、すべて OK が返されました。何も間違ってない。私の質問は、pixex シェーダーがパイプラインから欠落している理由は何ですか。その結果、空の画面が表示される可能性があります。
printing - PCL: 排出せずに部分ページを印刷する
ページを排出することなく、これまでに送信したすべてのラスター データをプリンター (USB 上の HP DeskJet 1280) で印刷できるようにしたいと考えています。単純なラスター グラフィックスとカーソル配置コマンドのみを送信しています。ベクター グラフィックスもテキストも送信していません。
より正確には、2 つの質問があります。
1)いくつかのラスターデータをプリンターに送信した後(ラスターデータの転送( "\ 033 * b%dW")を使用)、ページを排出せずにすぐに印刷して停止する方法は?
2) 正の引数を指定して垂直カーソル位置指定コマンド (例: 垂直カーソル位置指定 (デシポイント) ("\033&a%+dV")) を送信した後、プリンタに新しい位置まで用紙をすぐに送り、そこで停止させる方法?
(適切な高さの空白のラスターを送信することで間接的にカーソルを進めることができるため、(1) のみを解決するだけでもほぼ十分であることに注意してください。)
PCL はページ記述言語なので、このような低レベルの処理は実際には不可能かもしれません。しかし、PCL のドキュメントとインターネットを広範囲に検索した後も、明確な否定的な答えはまだ見つかりませんでした。
プリンターには、データを格納するための何らかの内部バッファーがあり、バッファーが十分に大きくなると、そのバッファーをフラッシュ (つまり、印刷) するようです。他に何もせずにそのバッファをすぐにフラッシュするようにプリンタに指示するコマンドがあれば、すべて問題ありません。しかし、そのようなコマンドは見つかりませんでした。"\033*rC" (ラスター グラフィックスの終了) でさえ、すぐには効果がありません。
プリンターとの通信に CUPS の USB バックエンドを使用しており、(usbmon を使用して) バックエンドがすべてのコマンドを確認するとすぐにプリンターに実際に送信することを確認しました。運転者。
部分ページを印刷するコマンドには、たとえば、「\033E」(プリンターのリセット)、「\033%%-12345X」(Universal Exit Language)、「\033&r1F」(すべてのページをフラッシュ (部分ページを含む)) などがありますが、それらはすべて、部分ページも排出します。
誰かが私が望むことを行うための賢い方法を提案してくれますか、それとも絶対に不可能であるという私の印象を確認できますか?
ruby - ラスター画像をjpgなどの使用可能な形式に変換するにはどうすればよいですか?
RVG と呼ばれるあいまいなラスター イメージ ファイル形式があります。コダックのケアストリーム センサーから作成されます。Webソフトウェア(ruby/rails)で閲覧できるようにしたいです。RMagic をインストールして他の画像に使用していますが、この形式はサポートされていません。サンプル画像のファイル情報は次のとおりです。
この画像を読み込んでjpgとしてエクスポートする方法はありますか? ラスター画像は基本的に色情報を持つグリッドであることを理解しています。多分私は行ごとに読んでエクスポートすることができますか?


