1
ベジェ曲線と直線で構成される形状をどのように塗りつぶす必要がありますか?
私はしばらくの間グラフィックライブラリに取り組んでおり、ベジエフォントとラインベースのフォントを描画しなければならないところまで到達しました。この時点まで、私はこれで立ち往生しています: 緑の線はベジェパスで、白い部分がレンダリングされます。 ベジエに使用するコードはこちらです。ライン用はこちら。知らない人はルアです。 パスレンダリング(ライン):32-39アルゴリズムは次のとおりです。 特定の間隔で0から1まで繰り返す 次の式でxとyを計算します。 (1-index)^2*x1+2*(1-index)*index*x2+index^2*x3 この時点まで、すべてが正常に動作します。緑の線は、パスメソッドを使用して生成されます。 白い部分は完全に異なる方法でレンダリングされます: 特定のYでのベジエと線のx座標を取得し、それらをテーブルに入れます。 テーブルを繰り返し処理し、ポイントに遭遇するたびに状態の値を変更します。同じforループで、状態がオンかどうかも確認します。もしそうなら、私は画面にピクセルを描画します。 ayのx値を見つけるには、getXメソッドを使用します(ベジェでは46行目、ラインでは31行目)。 図面自体に使用するコードは次のコードです。 local xBuffer = {} local state = false for i=0,500 do for k,v in pairs(beziers) do a,b = v.getX(i) if a then xBuffer[round(a)] = 1 if b then xBuffer[round(a)] = 1 end end end for k,v in …