저작물에 본 권리증서를 첨부한 자는 법률에서 허용하는 범위 내에서 저작인접권 및 관련된 모든 권리들을 포함하여 저작권법에 따라 전 세계적으로 해당 저작물에 대해 자신이 갖는 일체의 권리를 포기함으로써 저작물을 퍼블릭 도메인으로 양도하였습니다. 저작권자의 허락을 구하지 않아도 이 저작물을 상업적인 목적을 포함하여 모든 목적으로 복제, 수정·변경, 배포, 공연·실연할 수 있습니다.
http://creativecommons.org/publicdomain/zero/1.0/deed.enCC0Creative Commons Zero, Public Domain Dedicationfalsefalse
Source code
The SVG was generated by running the Lua program given below. It deliberately fails if the closest points would be overlapping in the image, because that would be confusing.
local WD, HT, NUM_POINTS = 256, 256, 16
local COLOR = { normal = '#000', closest = '#f00' }
local RADIUS = 5
math.randomseed(os.time())
local P = {}
for _ = 1, NUM_POINTS do
P[#P+1] = { x = RADIUS + (WD - 2*RADIUS) * math.random(),
y = RADIUS + (HT - 2*RADIUS) * math.random() }
end
-- Find closest pair, using naive algorithm.
local closest_a, closest_b
local min_dist
for i, p in ipairs(P) do
for j, q in ipairs(P) do
if i ~= j then
local dist = math.sqrt((p.x - q.x)^2 + (p.y - q.y)^2)
if not min_dist or dist < min_dist then
min_dist = dist
closest_a, closest_b = i, j
end
end
end
end
if min_dist < RADIUS then
error("points on top of each other, run me again")
end
io.write('<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n',
'<svg svg="http://www.w3.org/2000/svg" version="1.0"',
' width="', WD, '" height="', HT, '">\n')
for i, p in ipairs(P) do
local color = COLOR.normal
if i == closest_a or i == closest_b then color = COLOR.closest end
io.write(' <circle cx="', RADIUS + p.x, '" cy="', RADIUS + p.y,
'" r="', RADIUS, '" style="fill:', color, '"/>\n')
end
io.write('</svg>\n')