Vés al contingut

Corba de Moore

De la Viquipèdia, l'enciclopèdia lliure
Corba de Moore. A l'exemple es mostren els ordres 1 fins al 8. La corda va canviant de color progressivament de manera que indica l'ordre pel que passa per cada quadrant, representant per tant la distància recorreguda.

La corba de Moore és una corba fractal contínua que recobreix el pla. Concretament, es tracta d'una variant cíclica de la corba de Hilbert.[1] Va ser descrita pel matemàtic Eliakim Hastings Moore l'any 1900.[2]

Com que tendeix al recobriment de tot el pla, la seva dimensió de Hausdorff-Bezikóvitx és 2.

Procediment

[modifica]

Cada iteració de la corba de Moore s'obté a partir de la corba de Hilbert d'ordre anterior, col·locant-ne quatre còpies de manera que formen una línia contínua. Es tracta per tant d'una modificació només en l'últim nivell de la corba de Hilbert en cada cas, la qual permet tancar el cicle ja que els dos extrems de la línia queden adjacents.

Comparació entre el procediment de formació de les corbes de Hilbert i Moore
Comparació entre el procediment de formació de les corbes de Hilbert i Moore

En pseudocodi es pot definir de la següent manera:

FUNCIÓ generar_punts(order)
 n = order ** 2 // Ordre elevat a 2
 total = n ** 2 // N elevat a 2
 points = [] // Definir la array os s'emmagatzemen els punts
 len = 2 ** (order - 1) // Distància entre quadrants
 for n in 0..3 // Cadascuna de les còpies de la funció de Hilbert
 for i in 0...total
 point = hilbert(i, order) // Obtenir el punt actual a partir de la funció de Hilbert
 case n
 when 0 // Quadrant esquerra-avall
 nx = (len - 1 - point.y / 2)
 ny = (len - 1 - point.x / 2) + len
 when 1 // Quadrant esquerra-amunt
 nx = (len - 1 - point.y / 2)
 ny = (len - 1 - point.x / 2)
 when 2 // Quadrant dreta-amunt
 nx = (point.y / 2) + len
 ny = (point.x / 2)
 when 3 // Quadrant dreta-avall
 nx = (point.y / 2) + len
 ny = (point.x / 2) + len
 end
 point.x = nx
 point.y = ny
 points.push(point) // Emmagatzemar el punt
 end
 end
end

Generalització per qualsevol dimensió

[modifica]
Corba de Moore tridimensional d'ordre 3

Hi ha una generalització elegant de la corba de Hilbert a més dimensions. Si es llegeixen els vèrtex d'un hipercub de n dimensions en ordre determinat pel codi Gray es pot generar una corba de Hilbert de n dimensions.[3]

Per construir una corba de Moore d'ordre i en n dimensions, utilitzes 2n còpies de la corba de Hilbert d'ordre i-1 i n dimensions a cada cantonada de l'hipercub n-dimensional, les gires i les connectes amb segments de línia. Els segments afegits segueixen la ruta d'una corba de Hilbert d'ordre 1. Aquesta construcció funciona fins i tot per la corba de Moore d'ordre 1, si defineixes l'ordre 0 de la corba de Hilbert com un únic punt.[4]

Vegeu també

[modifica]

Referències

[modifica]
  1. A. Bogomolny, «Plane Filling Curves from Interactive Mathematics Miscellany and Puzzles». [Consulta: 17 de març de 2020]
  2. Moore, E. H. «On Certain Crinkly Curves». Transactions of the American Mathematical Society, 1, 1, 1900, pàg. 72-90. DOI: 10.2307/1986405. JSTOR: 1986405.
  3. Weisstein, Eric W. «Hilbert Curve». A Wolfram Web Resource. MathWord. [Consulta: 17 març 2020].
  4. Dickau, Robert. «Hilbert and Moore 3D Fractal Curves». Wolfram Demonstrations Project, 07-03-2011. [Consulta: 17 març 2020].

Enllaços externs

[modifica]
  • Animated Moore curve, a space-filling curve (anglès)