Zeichnen Sie die Festplatte von Poancare in Python

Ich habe mich gefragt, ob es im Netz ist, aber ich habe es nicht gefunden, also werde ich es selbst schreiben.

Was ist die Festplatte von Poancare?

Es ist berühmt für Eschers Sache.

Da die Erklärung von nun an lang sein wird, lauten die in Python implementierte und der Quellcode wie folgt.

image.png

import numpy as np
import matplotlib.pyplot as plt

theta = np.linspace(0,2*np.pi,100)
colorlist = ["r","g","b","c","m","y"]

t = list(range(0,6))
for n in t:
    n2 = np.power(2,n)
    for phi in np.linspace(0,2*np.pi,2*n2+1):
        x = np.cos(theta)*np.tan(np.pi/n2) + np.cos(phi)/np.cos(np.pi/n2)
        y = np.sin(theta)*np.tan(np.pi/n2) + np.sin(phi)/np.cos(np.pi/n2)
        plt.plot(x,y,lw=0.5,color=colorlist[n-2])

for phi in np.linspace(0,2*np.pi,9):
    t = np.linspace(-2,2,100)
    x = t*np.cos(phi)
    y = t*np.sin(phi)
    plt.plot(x,y,lw=0.5,color='y')

plt.plot(np.cos(theta),np.sin(theta),color='black')
plt.xlim(-1,1)
plt.ylim(-1,1)
plt.show()

Es wird gesagt, dass dies ein unendlich expandierender, doppelt gekrümmter Raum ist, der in einer Scheibe eingeschlossen ist, aber dies allein reicht nicht aus, um es zu erklären, und es ist das Miso, das den "doppelt gekrümmten Raum" anstelle des "flachen Raums" begrenzt. Ich glaube, es ist.

Zwillingsraum

Ein doppelt gekrümmter Raum ist ein Raum, in dem eine gerade Linie wie eine doppelte Kurve aussieht. Nur weil der Raum, den Sie vor sich sehen, gerade ist, bedeutet dies nicht, dass er für immer gerade bleibt. Sogar die Erde ist rund. Da alle geraden Linien auf der Erdoberfläche perfekte Planetenkreise (korrekt rotierende Ellipsen) sind, kann man sagen, dass die Erde ein Raum ist, in dem alle geraden Linien Kreise sind. Im Gegenteil, es sollte einen Raum geben, in dem alle geraden Linien doppelt gekrümmt sind. Die Tabelle ist wie folgt.

Art des Raumes Summe der Innenwinkel des Dreiecks Nicht parallele gerade Linien Parallele gerade Linien*
Sphärisch > 180 Grad An 2 Punkten schneiden Nicht kreuzen
Flugzeug =180 Grad An einem Punkt schneiden Nicht kreuzen
Gebogene Oberfläche <180 Grad An einem Punkt schneiden oder nicht schneiden Nicht kreuzen

Unter Berücksichtigung eines Raums, in dem das Gitter auf der euklidischen Ebene (Gitterkoordinaten) eine Zweikurve ist, sind die folgenden Bedingungen erfüllt. Die Übertragung auf euklidische Koordinaten erfolgt wie folgt.

image.png

Sie können sehen, dass das Quadrat in der Nähe der Kante deutlich scharf ist. Dies spiegelt den Winkel immer noch korrekt wider, aber es ist schwierig, das gesamte Bild zu sehen. Nehmen wir also an, Sie komprimieren es ** mit Gewalt ** auf einer Festplatte. Setzen wir $ = 1 $ auf unendlich.

Euklidische Ebene $ U $ → Vertikale Projektion auf zwei gekrümmte Oberfläche $ H $ → Projektion zum Ursprung zentrieren

Diese Komprimierung kann durch das Verfahren ziemlich natürlich erfolgen. Die Formel kann auch mit einer einfachen Ähnlichkeit berechnet werden. Das konvertierte Koordinatensystem sei $ D $.

U:[x_U,y_U] \longmapsto H:[x_H,y_H,z_H]\\
x_H = x_U\\
y_H = y_U\\
z_H = \sqrt{x_U^{2}+y_U^{2}+1}\\
H:[x_H,y_H,z_H] \longmapsto D:[x_D,y_D,1]\\
x_D = \frac{x_H}{z_H}\\
y_D = \frac{y_H}{z_H}\\

Das Ergebnis ist:

image.png

Einfach zu sehen! Ein solches Modell heißt ** Kleins Scheibe **. Dies verbindet die Aggressionslinie der Bikurve und den Schnittpunkt der Unendlichkeit mit einer geraden Linie, und obwohl die Positionsbeziehung im euklidischen Sinne leicht zu verstehen ist, hat sie den Nachteil, dass sie den Winkel jeder geraden Linie nicht genau widerspiegelt (ursprünglich 90). Die Orte, an denen sie sich unterhalb des Grades treffen, sind ebenfalls rechtwinklig.

Daher werden wir dieses Mal den Vorgang des Komprimierens in eine Platte ausführen, während der Winkel zwischen den geraden Linien beibehalten wird. Das Ergebnis ist eine sogenannte ** Poancare-Festplatte **, und die Operation ist wie folgt.

D:[x_D,y_D,1] \longmapsto P:[x_P,y_P,0]\\
x_P = \frac{x_D}{1+\sqrt{1-x_D^{2}-y_D^{2}}}\\
y_P = \frac{y_D}{1+\sqrt{1-x_D^{2}-y_D^{2}}}\\

Das Ergebnis ist: image.png

Sie können sehen, dass der Schnittpunkt jeder Geraden und Unendlichkeit (Umfang) ein rechter Winkel ist und dass der Winkel zwischen den Geraden der gleiche ist wie der der euklidischen Koordinaten.

Anwendung auf andere als Gitter

Bis jetzt wurde zur Erklärung des Zwillingsmusikraums das Gitter (die Zwillingskurven wie angeordnet) so konvertiert, wie es ist, aber ich werde versuchen, auch andere Dinge zu konvertieren. Betrachten Sie die folgenden Zweikurven.

image.png

Plötzlich wurde es psychedelisch, aber bitte beruhigen Sie sich, denn alle Linien sind Doppelkurven.

Konvertieren Sie dies auf Kleins Festplatte

image.png

Bei der Konvertierung in eine Poancare-Festplatte

image.png

Es wird so sein. Auf diese Weise wurde die erste Figur gezeichnet.

Beachten Sie, dass sich in all diesen Figuren die Phasenbeziehungen wie die Anzahl der Seiten und die Positionsbeziehung ** der Figur, die von jeder geraden Linie umgeben ist, nicht geändert haben.

Ergänzung

Im Quellcode am Anfang wird die Diskette von Poancare durch Zeichnen eines Kreises realisiert, ohne die oben beschriebene komplizierte Berechnung durchzuführen. Wenn Sie die obige Transformation auf die Bikurve anwenden, wird sie natürlich zu einem Kreis, und Sie können eine Poancare-Festplatte erstellen.

Recommended Posts

Zeichnen Sie die Festplatte von Poancare in Python
Zeichnen Sie ein Diagramm mit Python
Zeichnen Sie MP3-Wellenformen in Python
Zeichnen Sie "Farn programmgesteuert zeichnen" in Python
Zeichne die Yin-Funktion in Python
Zeichne ein Herz in Python
Zeichnen Sie Sinuswellen mit Blender Python
Zeichnen Sie Knoten interaktiv mit Plotly (Python)
Zeichnen Sie ein CNN-Diagramm in Python
Quadtree in Python --2
Python in der Optimierung
CURL in Python
Metaprogrammierung mit Python
Python 3.3 mit Anaconda
SendKeys in Python
Zeichnen Sie Nozomi Sasaki in Excel mit Python
Epoche in Python
Zwietracht in Python
Mit Python Teil 2 ein Herz zeichnen (SymPy Edition)
Deutsch in Python
DCI in Python
Quicksort in Python
nCr in Python
N-Gramm in Python
Programmieren mit Python
Plink in Python
Konstante in Python
FizzBuzz in Python
SQLite in Python
Schritt AIC in Python
Zeichnen Sie mit graphviz eine Baumstruktur in Python 3
LINE-Bot [0] in Python
CSV in Python
Reverse Assembler mit Python
Reflexion in Python
Konstante in Python
nCr in Python.
Format in Python
Scons in Python 3
Puyopuyo in Python
Python in Virtualenv
PPAP in Python
Quad-Tree in Python
Reflexion in Python
Chemie mit Python
Hashbar in Python
DirectLiNGAM in Python
LiNGAM in Python
In Python reduzieren
In Python flach drücken
Zeichnen Sie in Python ein Diagramm einer quadratischen Funktion
Zeichnen Sie Konturlinien, die in Lehrbüchern erscheinen (Python).
Zeichnen Sie Diagramme in Julia ... Überlassen Sie die Diagramme Python
[Python] Wie zeichnet man mit Matplotlib ein Histogramm?
Sortierte Liste in Python
Täglicher AtCoder # 36 mit Python
Clustertext in Python
AtCoder # 2 jeden Tag mit Python