Blog

Mai212018

Die 4. Dimension

Während man sich in den Naturwissenschaften noch mit der wirklichen Anzahl der Raumdimensionen beschäftigt (für uns, die wir im dreidimensionalen Raum leben, sind mögliche weitere Dimensionen schlichtweg unsichtbar), sind sich Mathematiker längst einig und stellen sich Objekte in beliebig vielen Raumdimensionen vor.
Der Tesserakt ist ein solches Objekt und entspricht dem, was wir in drei Dimensionen als Würfel bzw. in zweien als Quadrat kennen.
Schwer vorzustellen, wie ein solches 4-dimensionales Objekt aussehen soll - schließlich gibt es keine 4. Dimension - jedenfalls keine, die wir wahrnehmen könnten.
Doch genau, wie man einen Würfel auf eine zweidimensionale Fläche projizieren kann, kann man einen Tesserakt auf eine 3-dimensionale "Leinwand" projizieren. Heraus kommt ein 3D-Objekt, welches wir wiederum auf unsere 2D-Netzhaut projizierend betrachten können:
100 GRAPHICS 24:COLOR %1:DEG :SETCOLOR 4,%0,10:SETCOLOR 2,%0,15:SETCOLOR %1,%0,%0
101 DIM CMD$(%1):VIEW=%0:REC=%0
102 AX=%0:AY=%0:AZ=%0:AW=%0:PL=10
105 SX=SIN(AX):SY=SIN(AY):SZ=SIN(AZ):SW=SIN(AW):CX=COS(AX):CY=COS(AY):CZ=COS(AZ):CW=COS(AW)
109 RES.5000:CLS#6:ATX=-%1:IFREC THEN?#%1;ZEILE;"M.PIC,PST,7680:POKEPIC,%0:M.PIC,PIC+%1,7679":ZEILE=ZEILE+%1
110 READ CMD$,X,Y,Z,W
111 IF CMD$="E" THEN 400
115 IF VIEW=%0 THEN EXEC TRANS_ISO
116 IF VIEW=%1 THEN EXEC TRANS_3D
120 IF ATX=-%1 THEN ATX=TX:ATY=TY:GOTO 140
130 IF(CMD$="P"ORCMD$="E")THENDR.ATX,ATY:IFREC:?#%1;ZEILE;"DR.";INT(ATX);",";INT(ATY):ZEILE=ZEILE+%1:ENDIF:ATX=TX:ATY=TY
140 IF CMD$="P" THEN PLOT TX,TY:IF REC THEN ? #%1;ZEILE;"PL.";INT(TX);",";INT(TY):ZEILE=ZEILE+%1
150 IF CMD$="D" THEN DRAWTO TX,TY:IF REC THEN ? #%1;ZEILE;"DR.";INT(TX);",";INT(TY):ZEILE=ZEILE+%1
199 GOTO 110
400 GET E
410 IF E=ASC("i") THEN VIEW=%0
420 IF E=ASC("3") THEN VIEW=%1
430 IF E=ASC("x") THEN AX=AX+PL:IF AX>=360 THEN AX=%0
431 IF E=ASC("X") THEN AX=AX-PL:IF AX<%0 THEN AX=360-PL
440 IF E=ASC("y") THEN AY=AY+PL:IF AY>=360 THEN AY=%0
441 IF E=ASC("Y") THEN AY=AY-PL:IF AY<%0 THEN AY=360-PL
450 IF E=ASC("z") THEN AZ=AZ+PL:IF AZ>=360 THEN AZ=%0
451 IF E=ASC("Z") THEN AZ=AZ-PL:IF AZ<%0 THEN AZ=360-PL
460 IF E=ASC("w") THEN AW=AW+PL:IF AW>=360 THEN AW=%0
461 IF E=ASC("W") THEN AW=AW-PL:IF AW<%0 THEN AW=360-PL
470 IF E=ASC("r") THEN EXEC REC
499 GOTO 105
500 PROC TRANS_ISO
510   TX=160-(X*%2-1)*50+(Z*%2-%1)*18+(W*%2-%1)*20
520   TY=96-(Y*%2-%1)*50-(Z*%2-%1)*18-(W*%2-%1)*13
599 ENDPROC 
600 PROC TRANS_3D
610   X1=X*%2-%1:Y1=Y*%2-%1:Z1=Z*%2-%1:W1=W*%2-%1
620   REM W-ROTATION(?)
621   X2=X1
622   Y2=Y1
623   Z2=CW*Z1+SW*W1
624   W2=CW*W1-SW*Z1
630   REM X-ROTATION
631   X3=X2
632   Y3=Y2*CX+Z2*SX
633   Z3=CX*Z2-SX*Y2
634   W3=W2
640   REM Y-ROTATION
641   X4=CY*X3-SY*Z3
642   Y4=Y3
643   Z4=SY*X3+CY*Z3
644   W4=W3
650   REM Z-ROTATION
651   X5=CZ*X4+SZ*Y4
652   Y5=CZ*Y4-SZ*X4
653   Z5=Z4
654   W5=W4
660   V=4:PER=1.25:ZOOM=25
661   REM 4D auf 3D Projektion
662   M=PER/(W5+V):RX=X5*M:RY=Y5*M:RZ=Z5*M
670   PER=1.25:REM 3D auf 2D Projektion
671   M=(RZ+V)*PER:RX=RX*M:RY=RY*M
680   TX=160+RX*ZOOM
690   TY=96-RY*ZOOM
695   REM ? "RX=";RX
699 ENDPROC 
700 PROC REC
710   IF REC THEN 750
720   CLOSE #%1:OPEN #%1,8,%0,"D:HC1.LST":REC=%1:ZEILE=200:SETCOLOR 4,%3,4
730   ? #%1;"10GR.24:PST=DPEEK(88):DIM PIC$(7680):PIC=ADR(PIC$):DPOKE88,PIC"
749   GOTO 799
750   ? #%1;ZEILE;"G.200"
760   CLOSE #%1:REC=%0:SETCOLOR 4,%0,10
799 ENDPROC 
5000 DATA P,0,0,0,0
5010 DATA D,0,1,0,0
5020 DATA D,1,1,0,0
5030 DATA D,1,0,0,0
5100 DATA P,0,0,1,0
5110 DATA D,0,1,1,0
5120 DATA D,1,1,1,0
5130 DATA D,1,0,1,0
5200 DATA P,0,0,0,1
5210 DATA D,0,1,0,1
5220 DATA D,1,1,0,1
5230 DATA D,1,0,0,1
5300 DATA P,0,0,1,1
5310 DATA D,0,1,1,1
5320 DATA D,1,1,1,1
5330 DATA D,1,0,1,1
5400 DATA P,0,0,0,0
5410 DATA D,0,0,1,0
5420 DATA P,0,1,0,0
5430 DATA D,0,1,1,0
5440 DATA P,1,1,0,0
5450 DATA D,1,1,1,0
5460 DATA P,1,0,0,0
5470 DATA D,1,0,1,0
5500 DATA P,0,0,0,1
5510 DATA D,0,0,1,1
5520 DATA P,0,1,0,1
5530 DATA D,0,1,1,1
5540 DATA P,1,1,0,1
5550 DATA D,1,1,1,1
5560 DATA P,1,0,0,1
5570 DATA D,1,0,1,1
5600 DATA P,0,0,0,0
5610 DATA D,0,0,0,1
5620 DATA P,0,1,0,0
5630 DATA D,0,1,0,1
5640 DATA P,1,1,0,0
5650 DATA D,1,1,0,1
5660 DATA P,1,0,0,0
5670 DATA D,1,0,0,1
5700 DATA P,0,0,1,0
5710 DATA D,0,0,1,1
5720 DATA P,0,1,1,0
5730 DATA D,0,1,1,1
5740 DATA P,1,1,1,0
5750 DATA D,1,1,1,1
5760 DATA P,1,0,1,0
5770 DATA D,1,0,1,1
9999 DATA E,0,0,0,0

Ein schönes Programm mag man meinen - allerdings habe ich es noch nicht wirklich geschafft, eine Animation wie die bei Wikipedia hinzubekommen.
Und schließlich macht erst eine solche Rotation in der 4. Dimension eine wage Vorstellung von einem Tesserakt möglich.

Tags:
 
 
 
 
 
 

Kommentare

atarixle schrieb am 25.05.2018:
Dieses Programm kann in Altirra eingefügt werden ... dann müsst Ihr es nicht abtippen.
atarixle schrieb am 26.05.2018:
In Atari800MacX kann das Programm eingefügt werden, wenn man vorher POKE82,0 eintippt. Zeile 130 muss aber manuell korrigiert werden, da Atari800MacX beim "tippen" den "Zeilen-Ende-Gong" nicht berücksichtigt und somit einige Zeichen verschluckt.