File:Relative neighborhood graph.svg

Summary

Description
English: The relative neighborhood graph of 100 random points in a square
Date
Source Own work
Author David Eppstein

Licensing

Public domain I, the copyright holder of this work, release this work into the public domain. This applies worldwide.
In some countries this may not be legally possible; if so:
I grant anyone the right to use this work for any purpose, without any conditions, unless such conditions are required by law.
Category:Self-published work#Relative%20neighborhood%20graph.svgCategory:PD-self#Relative%20neighborhood%20graph.svg

Source code

This image was created with the following Python source code and then recolored and converted to SVG in Adobe Illustrator.

from pyx import canvas,path,color
from math import *
from random import seed,random
seed(12345)

npoints = 100
radius = 0.05
exclusion = 0.2     # prevent points from being too close
scale = 5
beta1 = 1.1
beta2 = 0.9
theta1 = asin(1/beta1)
theta2 = pi - asin(beta2)

def dist2(p,q):
    return (p[0]-q[0])**2 + (p[1]-q[1])**2

points = []
while len(points) < 100:
    p = (random()*scale,random()*scale)
    if points:
        nn = min(dist2(p,q)**0.5 for q in points)
        if nn < exclusion:
            continue
    points.append(p)

def neighbors(p,q):
    for r in points:
        if max(dist2(p,r),dist2(q,r)) < dist2(p,q):
            return False
    return True

c = canvas.canvas()

def edge(p,q):
    c.stroke(path.line(p[0],p[1],q[0],q[1]),
             [color.rgb.black])

def point(p):
    c.fill(path.circle(p[0],p[1],radius),[color.rgb.red])

for p in points:
    for q in points:
        if p < q and neighbors(p,q):
            edge(p,q)

for p in points:
    point(p)

c.writePDFfile("Relative_neighborhood_graph")
Category:Computational geometry Category:Files by User:David Eppstein from en.wikipedia Category:Images with Python source code Category:Neighborhood (mathematics)
Category:Computational geometry Category:Files by User:David Eppstein from en.wikipedia Category:Images with Python source code Category:Neighborhood (mathematics) Category:PD-self Category:Self-published work