是否可以消除处理中非描边多边形之间的 space?如果是这样,如何?

Is is possible to eliminate space between non-stroked polygons in Processing? If so, how?

我正在处理一个模拟非常基本的硬阴影的处理项目。在大多数情况下,我都能正常工作;每个物体的每条边都会检查它的背面是否面向光线。如果是,则使用该边添加阴影多边形,其他边从直接远离光源的点向后投射。

但是,当我尝试从实心阴影转换为 t运行sparent 时,我 运行 遇到了一些问题。即,由于阴影由多种形状组成,因此边界往往会重叠,使它们比其他任何地方都暗:

我禁用了阴影上的描边,这改善了效果但在阴影之间留下了细线,尽管多边形的边是相同的:

有办法消除这个神器吗?如果是,怎么做?

解决方法是不要将阴影绘制为单独的部分,而是将所有阴影部分的组合多边形绘制为一个多边形。

这里有一个小例子可以说明您的问题:

void setup(){
  size(500, 500);
}

void draw(){

  background(255);

  noStroke();

  fill(0);
  ellipse(mouseX, mouseY, 10, 10);

  fill(128, 128, 128, 128);

  beginShape();
  vertex(mouseX, mouseY);
  vertex(0, height);
  vertex(width, height);
  endShape();

  fill(128, 128, 128, 128);

  beginShape();
  vertex(mouseX, mouseY);
  vertex(width, height);
  vertex(width, 0);
  endShape();
}

注意两个多边形之间的白线:

但是如果我改为将两个多边形绘制为一个多边形:

void setup(){
  size(500, 500);
}

void draw(){

  background(255);

  noStroke();

  fill(0);
  ellipse(mouseX, mouseY, 10, 10);

  fill(128, 128, 128, 128);

  beginShape();
  vertex(mouseX, mouseY);
  vertex(0, height);
  vertex(width, height);
  vertex(width, 0);
  endShape();
}

然后白线消失: