0

このプログラムでは、斜辺にドットを描画しようとしています。線が斜めならうまくいきそうです。ただし、線が垂直または水平になるほど、ドットはまばらになります。線が完全に垂直または水平の場合、ドットは表示されません。また、赤い線が長いほど、点は離れて描かれます。

ここでのこの質問は、私が尋ねていることと似ているようですが、答えがわかりません。

ポイント (int - 座標) が三角形の斜辺内にあるかどうかを確認する方法

赤い線のすべてのピクセルにドットを描画する必要がありますが、そこから離れすぎないようにします (最大で 1 または 2 ピクセル)。

このコードは処理用です。

int sx,sy,ex,ey;
void setup(){
  sx=150;
  sy=150;
  ex=550;
  ey=550;
  size(600,600);
}

void draw(){
  background(255);
  stroke(#ff0000);
  fill(0);
  line(sx,sy,ex,ey);
  stroke(0);
  for(int y=0;y<height;y++){
    for(int x=0;x<width;x++){
      if(((x<=sx && x>=ex) || (x>=sx && x<=ex)) && ((y<=sy && y>=ey) || (y>=sy && y<=ey))){ 
        double xdiff=ex-sx;
        double ydiff=ey-sy;
        double xpos=(x-sx)/xdiff;
        double ypos=(y-sy)/ydiff;
        double diff=xpos-ypos;
        if(diff>-0.01 && diff < 0.01) ellipse(x,y,3,3);
      }
    }
  }
}

void mousePressed() {
    if(mouseButton == LEFT){
      ex=mouseX;
      ey=mouseY;
    }else{
      sx=mouseX;
      sy=mouseY;
    }   
}
4

1 に答える 1