Сегодня утром GigaCode сочинил мне код, для опредения коллизии двух кругов:

func (b *Ball) intersectsBall(ball *Ball) bool {
  circleDistanceX := math.Abs(float64(b.X - ball.X))
  circleDistanceY := math.Abs(float64(b.Y - ball.Y))

  if circleDistanceX > float64(ball.Radius+b.Radius) {
    return false
  }
  if circleDistanceY > float64(ball.Radius+b.Radius) {
    return false
  }

  if circleDistanceX <= float64(ball.Radius) {
    return true
  }
  if circleDistanceY <= float64(ball.Radius) {
    return true
  }
  return false
}

Скорее всего за основу взял соседний код для определения коллизий с битой, который я взял со стековерфлоу, но все равно вышло хорошо, как мне кажется.

#go #gigacode #gigachat #golang