如何在2D

时间:2018-04-12 16:00:12

标签: geometry 2d euclidean-distance

我有中心点x:0和y:0。

如何让所有积分距离达到5?

我的代码并不完美:

function getPoints(startX, startY, distance) {
    var res = []
    for (var i = 1; i < distance; i++) {
        res.push({ x: startX + i, y: startY })
        res.push({ x: startX - i, y: startY })

        res.push({ x: startX, y: startY + i })
        res.push({ x: startX, y: startY - i })

        res.push({ x: startX + i, y: startY + i })

        res.push({ x: startX - i, y: startY - i })
    }
    console.log(res)
    console.log(res.length)
}

getPoints(0, 0, 3)

1 个答案:

答案 0 :(得分:0)

伪代码(对于您的情况R = 5)

for dy = 0 to R
  for dx = 0 to Floor(Sqrt(R*R - dy*dy))
  // or dx = 0
  // while dx*dx+dy*dy<=R*R do 
      put startX + dx, startY + dy 
      put startX - dx, startY + dy      
      put startX + dx, startY - dy 
      put startX - dx, startY - dy      
    //dx++

如果你需要方格,代码很简单:

for y = centerY - size to centerY + size
  for x = centerX - size to centerX + size
     put x, y
相关问题