首先,我画了很多圆圈,它们稍微移动,因为我在圆圈中心添加了噪音。这些圆圈是“不可见的”,因为它们的颜色与背景相同。
其次,我结合ellipse(mouseX,mouseY,random(1,3),random(1,3))
画了一些图案。 , rect
, line
等等。图案也因为颜色的原因而“看不见”。
第三,这就是问题所在,如果圆圈与图案的距离小于一定程度,我想让圆圈显示出来(改变颜色)。
我如何计算这些圆圈中心与图案边框之间的距离?它们都是因变量。
然后我找到了一种思考方式:使其成为一个将数组中的每个元素与数组中的每个其他元素进行比较的问题 https://forum.processing.org/topic/constantly-resizing-ellipse-based-on-distance ,
但我仍然不知道如何修改形状函数,如 ellipse(x,y,radius1,radius2)
放入数组中。
也许是因为Processing中的形状函数封装得非常好,所以不容易破坏和使用。我找到了一种计算点到线距离的方法: processing.org/discourse/beta/num_1276644884.html
但是我不明白。请给我任何提示。谢谢。
最佳答案
您的问题主要是关于几何和数学而不是编程,但事实是:
两个圆边界之间的最小距离:显然是它们的圆心距离减去半径之和。
圆的边界和线段之间的最小距离:参见 this , this , this以及 Google 搜索中包含
点与线段之间的最小距离
一词的任何其他结果。再次,您必须减去半径。圆形边界与矩形/多边形等之间的最小距离:每个单独线段的所有距离的最小值。
圆的边界与直线之间的最小距离:参见this .
圆和椭圆边界之间的最小距离:搜索“点和椭圆之间的最小距离”。结果有很多,其中一些比其他更简单。不要忘记减去圆的半径。
如果所有其他方法都失败(例如对于任意形状),您可能必须逐点计算距离 - 效率不高,但通常有效。
一个重要的问题:您对几何重叠(即由公式定义)或像素重叠感兴趣吗?根据绘图算法,两个形状在屏幕上的表示可能会重叠,而从数学上讲,形状本身不会重叠,反之亦然。
关于java - 如何计算处理中两个因变量之间的距离?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12128711/