如何确定点与圆之间的最短距离

时间:2019-04-15 23:14:53

标签: processing

因此,我试图使这两个圆圈吻合,未填充的圆圈是在鼠标光标处绘制的圆圈,而已填充的圆圈则固定在画布的中心。目前,圈子还没有亲吻,我不太确定如何解决这个问题。这是代码,非常简单:

void setup() {
  size(500, 500);
}

void draw() {
  background(255);

  float r = 50; //radius of circle at the centre
  fill(0);
  ellipse(width/2, height/2, r, r); //Target Circle

  //what I am assuming should calculate the radius needed to form the
  //kissing circle from my mouse cursor:
  float d = dist(width/2, height/2, mouseX, mouseY) - r; 

  noFill();
  ellipse(mouseX, mouseY, d, d); //Drawing of circle, desired to kiss the central one.
}

Current Result When Mouse Cursor Is Close To The Centre

Current Result When Mouse Cursor Is Farther From The Centre

注意:在这些图像中,我正在寻找仅通过改变两个圆之间的距离来改变两个圆的半径的方法。

最后,我希望能够有一个圆形对象数组,并获得到空间中最接近点的距离。但这与我当前的问题无关。

1 个答案:

答案 0 :(得分:0)

椭圆函数期望椭圆的宽度和高度(直径,而不是半径)。 只需更改:

ellipse(width/2, height/2, r, r);

ellipse(width/2, height/2, 2 * r, 2 * r);

ellipse(mouseX, mouseY, d, d)

ellipse(mouseX, mouseY, 2*d, 2*d)