1
処理スケッチに線分と円があります。スケッチでは、円は線分上の最も近い点を見つけ出し、別の線が作成されてその最も近い点を示します。私は円がこの線を越えて最も近い点に向かって移動するようにしたい。 また、円は線分自体に最も近い点を見つけたいと思っていますが、私のスケッチは行が永遠に続くかのように機能します。どんな助けもありがとうございます。あなたは2つの点を持っている場合処理中の行をどのように動かすか?
float x1,y1,x2,y2;
float cx,cy;
float x4,y4;
void setup() {
size(600,600);
}
void init() {
x1 = (int)random(100,500);
y1 = (int)random(100,500);
x2 = (int)random(100,500);
y2 = (int)random(100,500);
cx = (int)random(100,500);
cy = (int)random(100,500);
}
void draw() {
background(60);
init();
stroke(220);
line(x1,y1,x2,y2);
noFill();
ellipse(cx,cy,50,50);
noStroke();
fill(220,20,20);//red- center of circle
ellipse(cx,cy,8,8);
// calculate the point
float k = ((y2-y1) * (cx-x1) - (x2-x1) * (cy-y1))/
((y2-y1)*(y2-y1) + (x2- x1)*(x2-x1));
float x4 = cx - k * (y2-y1);
float y4 = cy + k * (x2-x1);
fill(20,20,220); //blue - point on line segment
ellipse(x4,y4, 8,8);
stroke(0);
line(cx,cy,x4,y4);
noLoop();
}
void keyPressed() {
loop();
}