Circles collision distance
The distance between the nearest point of two circles
//Pseudocode
val dx = this.x - other.x
val dy = this.y - other.y
val distance = sqrt(dx * dx + dy * dy) - this.radius - other.radius
const circleAX = 0
const circleAY = 300
const circleARadius = 150
const circleBX = 300
const circleBY = 0
const circleBRadius = 100
function loop() {
noStroke()
//Circle a
fill("#eeeeee")
circle(circleAX, circleAY, circleARadius)
let aA = angle(circleAX, circleAY, circleBX, circleBY)
let circAX = circleAX + (cos(aA) * circleARadius)
let circAY = circleAY + (sin(aA) * circleARadius)
fill("#000000")
circle(circAX, circAY, 3)
//Circle b
fill("#eeeeee")
circle(circleBX, circleBY, circleBRadius)
let aB = angle(circleBX, circleBY, circleAX, circleAY)
let circBX = circleBX + (cos(aB) * circleBRadius)
let circBY = circleBY + (sin(aB) * circleBRadius)
fill("#000000")
circle(circBX, circBY, 3)
stroke("#ff0000")
line(circAX, circAY, circBX, circBY)
//Distance calculation
let dx = circleAX - circleBX
let dy = circleAY - circleBY
let distance = sqrt(dx * dx + dy * dy) - circleARadius - circleBRadius
fill("#000000")
text(`${floor(distance)}`, 165, 150, 12)
}
Made with Coracle