Skip to main content
Interwork Corporation
IDR Solutions Product Support Portal
PDF開発用語集 モードの切替 ダーク/ライト/自動 モードの切替 ダーク/ライト/自動 モードの切替 ダーク/ライト/自動

Nonzero winding rule

Nonzero winding rule(非ゼロワインディング規則)は、PDFでグラフィックスをレンダリングする際に、パスのどの領域を塗りつぶすかを決定するために使用されるデフォルトのアルゴリズムです。

カテゴリ: General PDF Concepts
キーワード: nonzero winding rule, Nonzero winding rule

概要

Nonzero winding rule(非ゼロワインディング規則)は、PDFでグラフィックスをレンダリングする際に、パスのどの領域を塗りつぶすかを決定するために使用されるデフォルトのアルゴリズムです ( Citation: N.A., (N.A.). (). Document management — Portable document format — Part 2: PDF 2.0 International Organization for Standardization Retrieved from https://www.iso.org/standard/75839.html ) 。この数学的手法は、パスが各点の周りを何回巻き付くかを追跡し、パスの方向を考慮しながら、各点のワインディング数を計算します。ワインディング数がゼロでない点はパスの内側にあるとみなされ、塗りつぶされます。

定義

Nonzero winding ruleは、PDF仕様で定義されている2つの塗りつぶしアルゴリズムの1つで、もう1つはEven-odd rule(奇偶規則)です。この規則は、対象の点から無限遠まで仮想的な光線を引き、パスとの交差を数えることで、点がパスの内側にあるか外側にあるかを判定します。パスが左から右へ(パスの進行方向に)交差する場合、カウントが1増加し、右から左へ交差する場合、カウントが1減少します。最終的なカウント(ワインディング数)がゼロでない場合、その点はパスの内側にあるとみなされ、塗りつぶされます ( Citation: N.A., (N.A.). (). Document management — Portable document format — Part 2: PDF 2.0 International Organization for Standardization Retrieved from https://www.iso.org/standard/75839.html )

方向を考慮せずに単純に交差を数えるEven-odd ruleとは異なり、Nonzero winding ruleは方向を考慮します。このため、複数の重なり合うサブパスや自己交差するパスを含む複雑なパスに対して特に有用で、自身の周りを複数回巻き付く図形に対してより直感的な結果を生成できます。

重要性

PDFの生成やレンダリングを行う開発者にとって、Nonzero winding ruleを理解することは、塗りつぶされた図形が最終文書でどのように表示されるかを予測するために不可欠です。これは、パスが重なり合ったり自己交差したりする可能性がある複雑なベクターグラフィックス、ロゴ、またはイラストレーションをプログラムで作成する場合に特に重要です。

Nonzero winding ruleとEven-odd ruleの選択は、同じパスデータの視覚的出力に劇的な影響を与える可能性があります。Nonzero winding ruleはPDFのデフォルトであるため、異なる動作が必要な場合、開発者は明示的にEven-odd ruleを指定する必要があります。どちらの塗りつぶし規則がアクティブかについての誤った仮定は、意図した塗りつぶしに「穴」が現れたり、その逆が起こったりするなど、予期しないレンダリング結果につながる可能性があります。

仕組み

Nonzero winding ruleは、グラフィックス座標空間内の各点のワインディング数を計算することで動作します。点を塗りつぶすべきかどうかを判定するには:

  1. 対象の点から任意の方向(通常は右方向)に無限遠まで仮想的な光線を引く
  2. カウンターをゼロで初期化する
  3. 光線と交差するパスの各セグメントについて:
    • パスが左から右へ交差する場合(パスの方向に従う場合)、1を加算
    • パスが右から左へ交差する場合(パスの方向に逆らう場合)、1を減算
  4. 最終的なカウンター値がゼロでない場合は点を塗りつぶし、ゼロの場合は塗りつぶさない

PDFオペレーターでは、Nonzero winding ruleはf(塗りつぶし)またはB(塗りつぶしと線描画)オペレーターを使用して呼び出されます。一方、**f*またはB***オペレーターはEven-odd ruleを呼び出します ( Citation: N.A., (N.A.). (). Document management — Portable document format — Part 2: PDF 2.0 International Organization for Standardization Retrieved from https://www.iso.org/standard/75839.html ) 。サブパスの方向は重要です。時計回りと反時計回りのパスはワインディング数に対して反対の値を寄与するため、これを意図的に使用して切り抜きや複雑な複合図形を作成できます。

関連用語

  • Even-odd rule – 方向を考慮せずにパスの交差を数える代替の塗りつぶし規則
  • Path – 図形を定義する、接続されたまたは切断された線と曲線の連続
  • Fill operator – 指定された塗りつぶし規則を使用してパスの内部に色を適用するPDFオペレーター
  • Stroke – パスの内部を塗りつぶすのではなく、パスの輪郭に沿って描画する操作
  • Clipping path – ページに対する描画操作が影響を与える領域を制限するために使用されるパス

出典

(N.A.) (2020)
(N.A.). (). Document management — Portable document format — Part 2: PDF 2.0 International Organization for Standardization Retrieved from https://www.iso.org/standard/75839.html