想想看,你有0,0半徑爲r爲中心的圓。快速解座標內/沿原點半徑爲r爲圓心
我想獲得的所有整數關口可用的此圈子裏面。這個問題很容易解決。
人們可能剛剛從x = -r to +r
和y =-r to +r
遍歷一個正方形,看看if x * x + y * y <= r * r
,如果是的話,點添加到您的結果。
然而,什麼是做到這一點的最快方法?我覺得應該有一些類型的黑客,我們可以計算從(2r)^2
到4/3 r^2
更具體地說,我有一種感覺,我們可以計算出內切正方形的長度,然後添加外其餘的組件。我不確定如何做到這一點。數學有點密集。我不想發佈代碼,因爲我想要一個通用的算法響應,但如果有偏好,他可能會陳述最終的基準,它將用於使用JVM語言。
任何幫助?
注:這是類似高斯的圈子的問題,但不是計數點的數量,我想知道的點。
for x in [-floor(r), floor(r)]
y_max = floor(sqrt(r^2 - x^2)) # Pythagora's theorem
for y in [-y_max, y_max]
# (x, y) is good !
:
我想指出,我知道這個問題,但不知道是否我們可以做的更好。 http://stackoverflow.com/questions/14285358/find-all-integer-coordinates-in-a-given-radius – mattsap