線の代わりに、ストロークに沿って中央に配置され、必要な幅のクワッド ストリップまたはトライアングル ストリップを使用します。
コメントによる編集
四角形または三角形を使用して太い線を描くには、次の方法があります。
モデルビューの左上の 3×3 サブマトリックスが回転部分です。画面スペースに太い線を描画したい、つまりローカル回転を逆にしたい。これを行うには、モデルビューの回転の逆が必要です。回転は直交変換なので、inverse(M) = transpose(M)
.
技術的には、逆投影された Z 軸 "Z_local" のみに関心があります。これには、modelview 行列の 3 番目の行ベクトルを単純に取得できます。最後の要素 "w" をゼロに設定し、ベクトル全体を正規化します。つまり、
Z_local_i = MV_i,3
次に、接線ベクトルが必要です。これは、線分の間の方向と同じくらい単純です。もっと数学的に言えば、直線が関数 C(t) で表される場合、接線は次のようになります。
T=∂C(t)/∂t
tangent と Z_local の間の外積を取ることができるようになり、法線が得られます。
N(t) = Z_local × T(t)
法線 N(t) を C(t) に追加すると、C に平行な等距離曲線が得られます。これにより、四角形を描くことができます。
for t in range(0, T):
T = deriv(C(t), t)
N = cross(Z_local, T)
emit_vertex(C(t) + width*N)
emit_vertex(C(t) - width*N)