Discussion:
Gleichseitige Hyperbeln und "fraktaler Moirè-Effekt"
(zu alt für eine Antwort)
Valentin Schmidt
2018-02-12 21:46:04 UTC
Permalink
Raw Message
Hallo,

da ich vorhin nix besseres zu tun (bzw. keine Lust auf Arbeit) hatte,
hatte ich zum Spaß mal alle gleichseitige Hyperbeln für y = n/x, n =
natürliche Zahl zwischen 1 und 500, in ein Diagramm geplottet, das
Ergebnis ist hier (PNG, 1086x1109 px):
Loading Image...

Das Bild enthält - neben grünen/blauen Hilfslinien und roten
Gitterpunkten für ganzahlige Koordinaten - nur diese 500 Hyperbeln, im
Wertebereich 0<=x<=5 und 0<=y<=5 (dabei sind Hyperbeln für n=Primzahl in
rot und alle anderen in schwarz geplottet, aber das ist irrelvant).

Aufgrund des Alias-Effekts beim Plotten - also des Springens zum
nächsten Pixel bzw Scanlinie an bestimmten Kanten, entsteht ein
Moiré-Effekt, und ich fand spontan ganz interessant, dass die dadurch
entstandenen visuellen Muster alle selbst wieder eindeutig Hyperbeln
sind, was dem Bild etwas "fraktales" verleiht.

Meine Frage - da ich selbst wohl bisschen länger dafür bräuchte: kann
hier jemand aus dem Stehgreif einfach begründen, warum auch diese
Alias-Kanten wiederum Hyperbeln sind?

Thx,
Valentin
(kein Mathematiker)
Valentin Schmidt
2018-02-12 22:01:44 UTC
Permalink
Raw Message
Post by Valentin Schmidt
Das Bild enthält - neben grünen/blauen Hilfslinien und roten
Gitterpunkten für ganzahlige Koordinaten - nur diese 500 Hyperbeln, im
Wertebereich 0<=x<=5 und 0<=y<=5
Sorry, Typo, das hätte "0<=x<=25 und 0<=y<=25" heißen müssen.
Hans-Peter Diettrich
2018-02-12 22:24:17 UTC
Permalink
Raw Message
Post by Valentin Schmidt
Hallo,
da ich vorhin nix besseres zu tun (bzw. keine Lust auf Arbeit) hatte,
hatte ich zum Spaß mal alle gleichseitige Hyperbeln für y = n/x, n =
natürliche Zahl zwischen 1 und 500, in ein Diagramm geplottet, das
http://up.picr.de/31811801ob.png
Das Bild enthält - neben grünen/blauen Hilfslinien und roten
Gitterpunkten für ganzahlige Koordinaten - nur diese 500 Hyperbeln, im
Wertebereich 0<=x<=5 und 0<=y<=5 (dabei sind Hyperbeln für n=Primzahl in
rot und alle anderen in schwarz geplottet, aber das ist irrelvant).
Aufgrund des Alias-Effekts beim Plotten - also des Springens zum
nächsten Pixel bzw Scanlinie an bestimmten Kanten, entsteht ein
Moiré-Effekt, und ich fand spontan ganz interessant, dass die dadurch
entstandenen visuellen Muster alle selbst wieder eindeutig Hyperbeln
sind, was dem Bild etwas "fraktales" verleiht.
Meine Frage - da ich selbst wohl bisschen länger dafür bräuchte: kann
hier jemand aus dem Stehgreif einfach begründen, warum auch diese
Alias-Kanten wiederum Hyperbeln sind?
Vielleicht ist es nur Deine Wahrnehmung, die Ähnlichkeiten sucht und findet?

Welche Pixel scheinen denn zu einer Alias-Hyperbel zu gehören, und zu
welcher Funktion gehören die dann?

DoDi
Valentin Schmidt
2018-02-12 22:40:34 UTC
Permalink
Raw Message
Post by Hans-Peter Diettrich
Vielleicht ist es nur Deine Wahrnehmung, die Ähnlichkeiten sucht und findet?
Welche Pixel scheinen denn zu einer Alias-Hyperbel zu gehören, und zu
welcher Funktion gehören die dann?
Hallo Dobi,

hast du dir das Bild mal in 1:1 Auflösung angeschaut? Klar ist es nur
eine Vermutung, aber zB der Ausschnitt in der oberen Ecke (3<=x<=5,
3<=y<=5) sieht für mich schon *sehr* danach aus, dass auch diese Kanten
des Umspringens zum nächsten Pixel (was in diesem Fall, aufgrund der
Bildauflösung, zum nächsten 1/40 entspricht) wiederum Hyperbeln sind.

Könnten natürliche auch andere, nur "Hyperbel-artig" aussehenden Kurven
sein, aber das erscheint mir aus dem Bauch raus eher unwahrscheinlich,
denke eher, dass es eine einfache Erklärung gibt, warum das
"selbstverständlich auch wiederum Hyperbeln sein müssen", komme nur
grade nicht darauf.

Valentin
Valentin Schmidt
2018-02-12 22:48:38 UTC
Permalink
Raw Message
Post by Valentin Schmidt
hast du dir das Bild mal in 1:1 Auflösung angeschaut? Klar ist es nur
eine Vermutung, aber zB der Ausschnitt in der oberen Ecke (3<=x<=5,
3<=y<=5)
Arghh, schon wieder falsch, das mit den "5er-Hilfslinien" hätte ich
lieber lassen sollen ;)

Ich meinte die 4 Quadrate in der oberen rechten Ecke, die in
Wirklichkeit "15<=x<=25, 15<=y<=25" entsprechen.

In dem Plot (Diagramm selbst hat 1000x1000 px) entspricht "1" 40 Pixeln,
aber denke dieser Wert ist irrelveant, bei andere Auflösung gäbe es dann
halt einen anderen aber vergleichbaren Moiré-Effekt.
Martin Vaeth
2018-02-13 09:31:10 UTC
Permalink
Raw Message
für y = n/x, n = natürliche Zahl zwischen 1 und 500
http://up.picr.de/31811801ob.png
Aufgrund des Alias-Effekts beim Plotten
Bevor man über den Grund nachdenken kann, muss man wissen,
was Du genau plottest: Da es links oben "heller" ist als
rechts unten, hast Du die Plotpunkte nicht gleichmäßig
gemäß der Hyperbellänge parametrisiert sondern vielleicht
gleichmäßig in x-Richtung. Allerdings kannst Du auch
nicht für alle Hyperbeln die gleiche Schrittweite in
x-Richtung genommen haben, denn dann passt das Bild nicht:

Dann hättest Du nämlich für festgehaltenes x jeweils eine
Punktfolge y = n/x geplottet, die in y-Richtung also
äquidistant sein müsste.
Schaue ich mir allerdings z.B. die erste Reihe der roten
Punkte im Quadrat links unten an (die Punkte auf der
grünen Linie zähle ich dabei als 0-te Reihe), so sieht
das zwar äquidistant aus, in den Quadraten darüber kommen
aber anscheinend viele zusätzliche Punkte hinzu.
Valentin Schmidt
2018-02-13 13:38:34 UTC
Permalink
Raw Message
Post by Martin Vaeth
für y = n/x, n = natürliche Zahl zwischen 1 und 500
http://up.picr.de/31811801ob.png
Aufgrund des Alias-Effekts beim Plotten
Bevor man über den Grund nachdenken kann, muss man wissen,
was Du genau plottest: Da es links oben "heller" ist als
rechts unten, hast Du die Plotpunkte nicht gleichmäßig
gemäß der Hyperbellänge parametrisiert sondern vielleicht
gleichmäßig in x-Richtung.
Ja, genau, ich habe einfach nur der X-Achse entlang die zugehörigen
Werte für f(x) = n/x berechnet und geplottet, und da die Hyperbeln links
steiler als rechts sind, ist es logisch, dass das Bild links/oben heller
als rechts/unten ist. Aber da die Hyperbeln ja eh symmetrisch zur Achse
y = x (blaue Grade) sind, kannste die obere linke Hälfte einfach ignorieren.

Hier der aufs wesentliche reduzierte banale Code zur Bilderzeugung (in
der Sprache "Lingo", die Pseudo-Code recht nahe kommt):

on main
img = image(1000, 1000, 32)
repeat with i = 1 to 500
drawHyperbola(img, i)
end repeat
end

-- Zeichnet Hyperbel f(x) = n/x, für 0 < x <= 25
-- Auflösung: Wert 1 entspricht 40 Pixeln
on drawHyperbola (img, n)
repeat with i = 1 to 1000
x = i/40.0
y = n/x
img.setPixel(i, y*40, rgb(0,0,0))
end repeat
end
Detlef Müller
2018-02-13 10:44:05 UTC
Permalink
Raw Message
Post by Valentin Schmidt
Hallo,
da ich vorhin nix besseres zu tun (bzw. keine Lust auf Arbeit) hatte,
hatte ich zum Spaß mal alle gleichseitige Hyperbeln für y = n/x, n =
natürliche Zahl zwischen 1 und 500, in ein Diagramm geplottet, das
http://up.picr.de/31811801ob.png
Das Bild enthält - neben grünen/blauen Hilfslinien und roten
Gitterpunkten für ganzahlige Koordinaten - nur diese 500 Hyperbeln, im
Wertebereich 0<=x<=5 und 0<=y<=5 (dabei sind Hyperbeln für n=Primzahl in
rot und alle anderen in schwarz geplottet, aber das ist irrelvant).
Ist das nicht eher 50 als 5 für die Obergrenzen?
Post by Valentin Schmidt
Aufgrund des Alias-Effekts beim Plotten - also des Springens zum
nächsten Pixel bzw Scanlinie an bestimmten Kanten, entsteht ein
Moiré-Effekt, und ich fand spontan ganz interessant, dass die dadurch
entstandenen visuellen Muster alle selbst wieder eindeutig Hyperbeln
sind, was dem Bild etwas "fraktales" verleiht.
Ja, da sieht man, insbesondere um (40|40) konkave, an Hyperbeln
erinnernde Muster.

Um herauszufinden, wie genau diese Muster sich an die
Hyperbelform halten, könnte man noch einmal einige um den
Vektor (40|40) verschobene Hyperbeln (y-40 = a/(x-40)), d.h.
Grafen zu y = 40 + a/(x-40) für einige a dazu plotten und
prüfen, wie gut das passt.
Post by Valentin Schmidt
Meine Frage - da ich selbst wohl bisschen länger dafür bräuchte: kann
hier jemand aus dem Stehgreif einfach begründen, warum auch diese
Alias-Kanten wiederum Hyperbeln sind?
Womöglich kann man sie (zumindest lokal) irgendwie als Bilder von
annähernd geradenförmigen Moire-Mustern unter einer Abbildung,
die Geraden in Hyperbeln überführt erhalten.

Gruß,
Detlef
Post by Valentin Schmidt
Thx,
Valentin
(kein Mathematiker)
--
Dr. Detlef Müller,
http://www.mathe-doktor.de oder http://mathe-doktor.de
Valentin Schmidt
2018-02-13 17:01:30 UTC
Permalink
Raw Message
Post by Valentin Schmidt
Meine Frage - da ich selbst wohl bisschen länger dafür bräuchte: kann
hier jemand aus dem Stehgreif einfach begründen, warum auch diese
Alias-Kanten wiederum Hyperbeln sind?
Falls irgendwer meinem Blödsinn gefolgt ist, ich konnte dann doch sogar
mit verstaubter Schulmathematik zeigen, dass/warum diese
Alias/Treppeneffekts-Kurven grundsätzlich wieder gleichseitige Hyperbeln
sind.

Hier zur Demonstration ein weiteres Bild:
Loading Image...

Es zeigt im Hintergrund einen stark vergrößerten Aussschnitt aus der
unteren rechten Ecke des Orginalbildes. "Real" sind in diesem Ausschnitt
nur die flachen, von links nach rechts verlaufenden schwarzen und roten
Linien, die jeweils einer Hyperbel y = n/x für unterschiedl. n-Werte
entprechen. Die dem Auge entgegenspringenden von oben nach unten
verlaufenden Kurven entstehen dagegen nur wegen durch Pixelung
erzwungenener Quantisierung (=Rundung auf ganzahlige Pixel-Werte).

Im Vordergrund in Dunkelblau eine nur qualitative - und nicht direkt
zum Hintergrund passende - Erläuterung meiner Überlegung: wenn ich mir
irgendeinen festen X-Wert "xa" rausgreife, wird die blaue Grade y = xa
an den (jetzt mit p statt y bezeichneten) Stellen p1, p2, p3.. durch die
Hyperbel "Hn" (also y = n/x) geschnitten.
Und was mich bzgl. Verständnis des Treppeneffekts interessiert, ist: wie
weit muss ich in Abhängigkeit von p nach rechts gehen, damit die
zugehörige Hyperbel Hn um einen festen Wert c kleiner geworden ist.
Diesen Wert nenne ich jetzt q, und mich interssiert also die Funktion q
= f(p) für ein beliebiges c, wobei ich für dieses - da es ja nur um eine
qualitative Überlegung unabhängig von der konkreten
Bildauflösung/Pixelung geht - mal den Wert 1 setze.

Dann gilt zB:

p1 = n1/xa
p2 = n2/xa
p3 = n3/xa
...

Und ich suche die zugehörigen q1, q2, q3.., für die gilt:

n1/q1 = p1 - 1
n2/q2 = p2 - 1
n3/q3 = p3 - 1
...

oder allgemein:

nn/q = p - 1

Nach q aufgelöst erhält man:

q = nn / (p-1)

und durch Ersetzung von nn durch p * xa:

q = (p * xa) / (p-1)

Da mich die Kurven nur qualtitativ interessieren kann ich beliebig
rumsubstituieren, und für p' = p-1 wird aus der Formel:

q = f(p') = (p'+1)*xa/(p'+1-1) = xa/p' + xa

Und da xa ja eine Konstante ist und es hier um q in Abhängigkeit von p
geht, ist somit klar, dass/warum es sich dabei um (verschobene)
gleichseitige Hyperbeln der allg. Form:

f(x) = a/x + b

handelt, die vielen "Moirè-Hyperbeln" im Orginalbild sind also kein Wunder.

Valentin

Loading...