Bir işlem grafiğimde bir çizgi segmentim ve bir dairem var. Çizimde daire, çizgi segmentindeki en yakın noktayı bulur ve en yakın noktayı göstermek için başka bir çizgi oluşturulur. Dairenin bu çizgide en yakın noktaya doğru hareket etmesini istiyorum. Ayrıca, dairenin, çizgi parçasının en yakın noktasını bulmasını istiyorum, ancak taslağım şu anda çizgi sonsuza kadar devam ediyormuş gibi davranıyor. Herhangi bir yardım takdir edilir. Eğer iki nokta varsaBir çemberi işleme sırasında bir çizgi boyunca nasıl hareket ettirebilirsiniz?
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();
}