このプログラムでは、斜辺にドットを描画しようとしています。線が斜めならうまくいきそうです。ただし、線が垂直または水平になるほど、ドットはまばらになります。線が完全に垂直または水平の場合、ドットは表示されません。また、赤い線が長いほど、点は離れて描かれます。
ここでのこの質問は、私が尋ねていることと似ているようですが、答えがわかりません。
ポイント (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;
}
}