在这个程序中,我试图将点画在斜边上。如果这条线是对角线,它似乎工作正常。但是线条越垂直或水平,点就越稀疏。如果这条线是完全垂直或水平的,我就没有点。同样,红线越长,点越远离它。
这里的这个问题似乎与我要问的类似,但我不明白答案。
我需要在红线上的每个像素上画一个点,但不要离它太远(最多 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;
}
}