VTKファイルをつくる3

 投稿者:しばっち  投稿日:2018年 3月10日(土)20時52分57秒
  このプログラムでは形状(mesh)を定義せず、その点の座標値のみを書き込んでいます。
このプログラムで作成したvtkファイルは点なので読み込んでも何も表示されません。
描画エリアが分からないときは、「Zoom To Data」のアイコンをクリックしてください。

3行目電卓のアイコンの左から7番目の球みたいなアイコン「Glyph」をクリックするか、
又はFiltersメニューのAlphabeticalから「Glyph」を選択してください。
画面左側の Glyph Sourceから Glypy Typeを「Box」か「Sphere」へ
Scale Factorを適当に合わせて Glyph Modeを「All Points」へ変更してください。
原点からの距離をスカラー値にしています。

INPUT PROMPT "LEVEL(1 - 5)=":LEV
LET N=4^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:"sierpinski"
PRINT #1:"ASCII"
PRINT #1:"DATASET UNSTRUCTURED_GRID"
PRINT #1:"POINTS";N;"float"
CALL RECURSIVE(LEV,X,Y,Z,2^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,2^LEV)
CLOSE #1

SUB RECURSIVE(LEV,X,Y,Z,L) !'シェルピンスキー
   IF LEV=0 THEN
      IF FLG=0 THEN PRINT #1:X;Y;Z ELSE PRINT #1:SQR(X^2+Y^2+Z^2)
   ELSE
      CALL RECURSIVE(LEV-1,X,Y,Z+L,L/2)
      CALL RECURSIVE(LEV-1,X+L*COS(0*PI/180),Y+L*SIN(0*PI/180),Z,L/2)
      CALL RECURSIVE(LEV-1,X+L*COS(120*PI/180),Y+L*SIN(120*PI/180),Z,L/2)
      CALL RECURSIVE(LEV-1,X+L*COS(240*PI/180),Y+L*SIN(240*PI/180),Z,L/2)
   END IF
END SUB
END

 

戻る