くりぬき図形

 投稿者:しばっち  投稿日:2011年11月13日(日)19時57分48秒
  くりぬき図形(シェルピンスキーのカーペット)

!'ボクセル表現(VOXEL)
LET L=6^4
INPUT  PROMPT "LEVEL =":N  !' LEVEL 3で146MB
FILE GETSAVENAME F$,"dxfファイル|*.dxf"
IF F$="" THEN STOP
IF POS(UCASE$(F$),".DXF")=0 THEN LET F$=F$ & ".dxf"
OPEN #1:NAME F$
ERASE #1
PRINT #1:"0"
PRINT #1:"SECTION"
PRINT #1:"2"
PRINT #1:"ENTITIES"
CALL RECURSIVE(N,X,Y,Z,L,#1)
PRINT #1:"0"
PRINT #1:"ENDSEC"
PRINT #1:"0"
PRINT #1:"EOF"
CLOSE #1
END

EXTERNAL  SUB RECURSIVE(N,X,Y,Z,L,#1)
IF N=0 THEN
   CALL CUBE(#1,X-L/3,Y+L/3,Z+L/3,L/3)
   CALL CUBE(#1,X,    Y+L/3,Z+L/3,L/3)
   CALL CUBE(#1,X+L/3,Y+L/3,Z+L/3,L/3)
   CALL CUBE(#1,X-L/3,Y,    Z+L/3,L/3)
   CALL CUBE(#1,X+L/3,Y,    Z+L/3,L/3)
   CALL CUBE(#1,X-L/3,Y-L/3,Z+L/3,L/3)
   CALL CUBE(#1,X,    Y-L/3,Z+L/3,L/3)
   CALL CUBE(#1,X+L/3,Y-L/3,Z+L/3,L/3)
   CALL CUBE(#1,X-L/3,Y+L/3,Z-L/3,L/3)
   CALL CUBE(#1,X,    Y+L/3,Z-L/3,L/3)
   CALL CUBE(#1,X+L/3,Y+L/3,Z-L/3,L/3)
   CALL CUBE(#1,X-L/3,Y,    Z-L/3,L/3)
   CALL CUBE(#1,X+L/3,Y,    Z-L/3,L/3)
   CALL CUBE(#1,X-L/3,Y-L/3,Z-L/3,L/3)
   CALL CUBE(#1,X,    Y-L/3,Z-L/3,L/3)
   CALL CUBE(#1,X+L/3,Y-L/3,Z-L/3,L/3)
   CALL CUBE(#1,X-L/3,Y+L/3,Z,L/3)
   CALL CUBE(#1,X+L/3,Y+L/3,Z,L/3)
   CALL CUBE(#1,X-L/3,Y-L/3,Z,L/3)
   CALL CUBE(#1,X+L/3,Y-L/3,Z,L/3)
ELSE
   CALL RECURSIVE(N-1,X-L/3,Y+L/3,Z+L/3,L/3,#1)
   CALL RECURSIVE(N-1,X,    Y+L/3,Z+L/3,L/3,#1)
   CALL RECURSIVE(N-1,X+L/3,Y+L/3,Z+L/3,L/3,#1)
   CALL RECURSIVE(N-1,X-L/3,Y,    Z+L/3,L/3,#1)
   CALL RECURSIVE(N-1,X+L/3,Y,    Z+L/3,L/3,#1)
   CALL RECURSIVE(N-1,X-L/3,Y-L/3,Z+L/3,L/3,#1)
   CALL RECURSIVE(N-1,X,    Y-L/3,Z+L/3,L/3,#1)
   CALL RECURSIVE(N-1,X+L/3,Y-L/3,Z+L/3,L/3,#1)
   CALL RECURSIVE(N-1,X-L/3,Y+L/3,Z-L/3,L/3,#1)
   CALL RECURSIVE(N-1,X,    Y+L/3,Z-L/3,L/3,#1)
   CALL RECURSIVE(N-1,X+L/3,Y+L/3,Z-L/3,L/3,#1)
   CALL RECURSIVE(N-1,X-L/3,Y,    Z-L/3,L/3,#1)
   CALL RECURSIVE(N-1,X+L/3,Y,    Z-L/3,L/3,#1)
   CALL RECURSIVE(N-1,X-L/3,Y-L/3,Z-L/3,L/3,#1)
   CALL RECURSIVE(N-1,X,    Y-L/3,Z-L/3,L/3,#1)
   CALL RECURSIVE(N-1,X+L/3,Y-L/3,Z-L/3,L/3,#1)
   CALL RECURSIVE(N-1,X-L/3,Y+L/3,Z,L/3,#1)
   CALL RECURSIVE(N-1,X+L/3,Y+L/3,Z,L/3,#1)
   CALL RECURSIVE(N-1,X-L/3,Y-L/3,Z,L/3,#1)
   CALL RECURSIVE(N-1,X+L/3,Y-L/3,Z,L/3,#1)
END IF
END SUB

以下省略

EXTERNAL  SUB CUBE(#1,X,Y,Z,L)
END SUB

#1630  からコピペしてください
 

戻る