VTKファイルをつくる6

 投稿者:しばっち  投稿日:2018年 3月10日(土)20時56分27秒
  セルオートマトンを3次元に拡張しました。座標値のみを記録していますので前述と同じように
操作してください。

LET N=40
DIM XX(15000),YY(15000),ZZ(15000),A(-N TO N,-N TO N),B(-N TO N,-N TO N)
LET A(0,0)=1
LET K=1
LET XX(K)=0
LET YY(K)=N-1
LET ZZ(K)=0
FOR Y=N-2 TO 0 STEP-1
   FOR X=-N+1 TO N-1
      FOR Z=-N+1 TO N-1
         LET B(X,Z)=MOD(A(X-1,Z-1)+A(X-1,Z+1)+A(X+1,Z+1)+A(X+1,Z-1),2)
         !'LET B(X,Z)=MOD(A(X-1,Z-1)+A(X-1,Z)+A(X-1,Z+1)+A(X,Z-1)+A(X,Z)+A(X,Z+1)+A(X+1,Z-1)+A(X+1,Z)+A(X+1,Z+1),2)
         IF B(X,Z)<>0 THEN
            LET K=K+1
            LET XX(K)=X
            LET YY(K)=Y
            LET ZZ(K)=Z
         END IF
      NEXT Z
   NEXT X
   MAT A=B
   MAT B=ZER
NEXT Y
FILE GETSAVENAME F$,"vtkファイル|*.vtk"
IF F$="" THEN STOP
IF POS(UCASE$(F$),".VTK")=0 THEN LET F$=F$&".vtk"
OPEN #1:NAME F$
ERASE #1
PRINT #1:"# vtk DataFile Version 3.0"
PRINT #1:"cellular automaton"
PRINT #1:"ASCII"
PRINT #1:"DATASET UNSTRUCTURED_GRID"
PRINT #1:"POINTS";K;"float"
FOR I=1 TO K
   PRINT #1:XX(I);YY(I);ZZ(I)
NEXT I
PRINT #1:"CELL_TYPES";K
FOR I=1 TO K
   PRINT #1:1
NEXT I
PRINT #1:"POINT_DATA";K
PRINT #1:"SCALARS distance float"
PRINT #1:"LOOKUP_TABLE default"
FOR I=1 TO K
   PRINT #1:SQR(XX(I)^2+YY(I)^2+ZZ(I)^2)
NEXT I
CLOSE #1
END
 

戻る