2026. június 15., hétfő

7D Tesseraktot írtam projekcióval python nyelven


A többdimenziós (például 7D) terek közvetlenül nem rajzolhatók ki a fizikai képernyőnkre, de egy matematikai vetítéssel (projekcióval) átalakíthatók 3D-s vagy 2D-s koordinátákká, majd megjeleníthetők.Az alábbi Python program a numpy segítségével hoz létre egy 7 dimenziós kockát (tesseraktot), mátrixműveletekkel 3D-re vetíti, a matplotlib segítségével pedig kirajzolja a térbeli szerkezetet és a tengelyeket.Szükség esetén a szükséges csomagokat a terminálban a pip install numpy matplotlib paranccsal telepítheted.
---------------
import numpy as np
import matplotlib.pyplot as plt
from itertools import product

# 7 dimenziós kocka csúcsainak generálása (-1 és 1 értékekkel)
# A 2^7 az 128 csúcsot jelent.
dimensions = 7
vertices = np.array(list(product([-1, 1], repeat=dimensions)))

# Véletlenszerű vagy fix transzformációs mátrix, amivel 7D-ből 3D-t csinálunk
# A gyakorlatban ez egy 3x7-es mátrix.
np.random.seed(42)
projection_matrix = np.random.rand(3, dimensions)

# A 7D pontok vetítése 3D-be
projected_vertices = np.dot(vertices, projection_matrix.T)

# Kocka éleinek meghatározása (szomszédok, amik csak 1 dimenzióban különböznek)
edges = []
for i, v1 in enumerate(projected_vertices):
    for j, v2 in enumerate(projected_vertices):
        # Hamming-távolság: hány koordinátában térnek el egymástól a 7D-ben?
        if np.sum(np.abs(vertices[i] - vertices[j]) == 2) == 1:
            edges.append((v1, v2))

# 3D ábra inicializálása
fig = plt.figure(figsize=(8, 6))
ax = fig.add_subplot(111, projection='3d')

# Élek kirajzolása
for edge in edges:
    xs = [edge[0][0], edge[1][0]]
    ys = [edge[0][1], edge[1][1]]
    zs = [edge[0][2], edge[1][2]]
    ax.plot(xs, ys, zs, color='b', alpha=0.3)

# Pontok kirajzolása
ax.scatter(projected_vertices[:, 0], projected_vertices[:, 1], projected_vertices[:, 2], color='r')

ax.set_title("7D kocka 3D-s vetülete")
ax.set_xlabel("X tengely")
ax.set_ylabel("Y tengely")
ax.set_zlabel("Z tengely")

plt.show()
--------------


Nincsenek megjegyzések:

Megjegyzés küldése