VTKファイルをつくる4

 投稿者:しばっち  投稿日:2018年 3月10日(土)20時54分24秒
  これも座標のみを記録しています。前述と同じように操作してください。

INPUT PROMPT "LEVEL(1 - 3)=":LEV
LET N=20^LEV    !'データ個数
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:"menger sponge"
PRINT #1:"ASCII"
PRINT #1:"DATASET UNSTRUCTURED_GRID"
PRINT #1:"POINTS";N;"float"
CALL RECURSIVE(LEV,X,Y,Z,3^LEV)
PRINT #1:"CELL_TYPES";N
FOR I=1 TO N
   PRINT #1:1
NEXT I
PRINT #1:"POINT_DATA";N
PRINT #1:"SCALARS distance float"
PRINT #1:"LOOKUP_TABLE default"
LET FLG=1
CALL RECURSIVE(LEV,X,Y,Z,3^LEV)
CLOSE #1

SUB RECURSIVE(N,X,Y,Z,L) !'メンガー
   IF N=0 THEN
      IF FLG=0 THEN PRINT #1:X;Y;Z ELSE PRINT #1:SQR(X^2+Y^2+Z^2)
   ELSE
      CALL RECURSIVE(N-1,X-L/3,Y+L/3,Z+L/3,L/3)
      CALL RECURSIVE(N-1,X,Y+L/3,Z+L/3,L/3)
      CALL RECURSIVE(N-1,X+L/3,Y+L/3,Z+L/3,L/3)
      CALL RECURSIVE(N-1,X-L/3,Y,Z+L/3,L/3)
      CALL RECURSIVE(N-1,X+L/3,Y,Z+L/3,L/3)
      CALL RECURSIVE(N-1,X-L/3,Y-L/3,Z+L/3,L/3)
      CALL RECURSIVE(N-1,X,Y-L/3,Z+L/3,L/3)
      CALL RECURSIVE(N-1,X+L/3,Y-L/3,Z+L/3,L/3)
      CALL RECURSIVE(N-1,X-L/3,Y+L/3,Z-L/3,L/3)
      CALL RECURSIVE(N-1,X,Y+L/3,Z-L/3,L/3)
      CALL RECURSIVE(N-1,X+L/3,Y+L/3,Z-L/3,L/3)
      CALL RECURSIVE(N-1,X-L/3,Y,Z-L/3,L/3)
      CALL RECURSIVE(N-1,X+L/3,Y,Z-L/3,L/3)
      CALL RECURSIVE(N-1,X-L/3,Y-L/3,Z-L/3,L/3)
      CALL RECURSIVE(N-1,X,Y-L/3,Z-L/3,L/3)
      CALL RECURSIVE(N-1,X+L/3,Y-L/3,Z-L/3,L/3)
      CALL RECURSIVE(N-1,X-L/3,Y+L/3,Z,L/3)
      CALL RECURSIVE(N-1,X+L/3,Y+L/3,Z,L/3)
      CALL RECURSIVE(N-1,X-L/3,Y-L/3,Z,L/3)
      CALL RECURSIVE(N-1,X+L/3,Y-L/3,Z,L/3)
   END IF
END SUB
END
 

戻る