如何填充bezier和基于线的多边形?

时间:2016-01-13 16:58:46

标签: lua bezier

我已经在图形库上工作了一段时间,并且已经达到了我必须绘制Bezier和基于行的字体的程度。到目前为止,我坚持这个:

i

a

绿线是Bezier路径,白色部分是渲染的。

我用于Beziers的代码是here。行的一个是here。对于那些不知道Lua的人。

路径渲染(线条):32 - 39   算法如下:

  1. 以一定间隔从0到1迭代
  2. 使用以下公式计算x和y:(1-index)^2*x1+2*(1-index)*index*x2+index^2*x3
  3. 到目前为止一切正常。绿线是使用路径方法生成的。

    白色部分以完全不同的方式呈现:

    1. 我得到Beziers的x坐标和特定Y的线条,把它们放到一张桌子里。
    2. 我遍历表格,每次遇到一个点我都会改变状态值。同样的for循环也检查状态是否打开。如果是,我在屏幕上绘制一个像素。
    3. 要查找y的x值,我使用getX方法(Bezier中的第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 pairs(lines) do
              a = v.getX(i)
              if a then
                  xBuffer[round(a)] = 1
              end
          end
          state = false
          for x=0,600 do
              if xBuffer[x] then
                  state = not state
              end
              if state then
                  love.graphics.points(x,i)
              end
          end
      end
      

      快速解释:对于i,v成对迭代通过作为对的参数给出的表。 love.graphics.points(x,y)在x,y处设置一个点。

      提前致谢。

0 个答案:

没有答案