VTKファイルをつくる22

 投稿者:しばっち  投稿日:2018年 3月10日(土)21時14分2秒
  星型多角形を定義しています。

LET N=40 !'分割数
OPTION ANGLE DEGREES
DIM XX(N*(N-1)+2),YY(N*(N-1)+2),ZZ(N*(N-1)+2)
DEF FF(X)=.5*(IP(X)-IP(-X)-1)
DEF S2(X)=X+IP(-X)+1
DEF A(N)=360/N
DEF K(A,B,X)=FF((X+A)/(A+B))-FF(X/(A+B))
DEF KK(A,B,X)=2*(K(A,B,X)-.5)
DEF S(A,X)=2*ABS(S2(X/(A*2))-.5)*KK(A*2,A*2,X+A)
!'DEF ACC(X)=-.5*PI*(S(.5*PI,X)+1)
DEF ACC(X)=ACOS(COS(X))
DEF CNS(N,T)=COS(A(N))/COS(A(N)-ACC(N*T)/N)
DEF PC(N,T)=COS(T)*CNS(N,T)
DEF PS(N,T)=SIN(T)*CNS(N,T)
DEF P3X(N,U,V)=PS(N,U)*PC(N,V)
DEF P3Y(N,U,V)=PS(N,U)*PS(N,V)
DEF P3Z(N,U)=PC(N,U)
INPUT  PROMPT "何角形 =":NN !'NN>=5
IF NN<5 THEN LET NN=5
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 2.0"
PRINT #1:"star poly"
PRINT #1:"ASCII"
PRINT #1:"DATASET POLYDATA"
PRINT #1:"POINTS";N*(N-1)+2;"float"
LET ALPHA=0
LET BETA=0
LET X=P3X(NN,ALPHA,BETA)
LET Y=P3Y(NN,ALPHA,BETA)
LET Z=P3Z(NN,ALPHA)
PRINT #1:X;Y;Z
LET L=L+1
LET XX(L)=X
LET YY(L)=Y
LET ZZ(L)=Z
FOR ALPHA=180/N TO 179 STEP 180/N
   FOR BETA=0 TO 359 STEP 360/N
      LET X=P3X(NN,ALPHA,BETA)
      LET Y=P3Y(NN,ALPHA,BETA)
      LET Z=P3Z(NN,ALPHA)
      PRINT #1:X;Y;Z
      LET L=L+1
      LET XX(L)=X
      LET YY(L)=Y
      LET ZZ(L)=Z
   NEXT BETA
NEXT ALPHA
LET ALPHA=180
LET BETA=0
LET X=P3X(NN,ALPHA,BETA)
LET Y=P3Y(NN,ALPHA,BETA)
LET Z=P3Z(NN,ALPHA)
PRINT #1:X;Y;Z
LET L=L+1
LET XX(L)=X
LET YY(L)=Y
LET ZZ(L)=Z
PRINT #1:"POLYGONS";N*N;8*N+N*(N-2)*5
FOR I=1 TO N
   IF I=N THEN
      PRINT #1:3;1;0;N
   ELSE
      PRINT #1:3;0;I;I+1
   END IF
NEXT I
FOR I=1 TO N*(N-2)
   IF MOD(I,N)=0 THEN
      PRINT #1:4;I;I+N;I+1;I-N+1
   ELSE
      PRINT #1:4;I;I+N;I+N+1;I+1
   END IF
NEXT I
FOR I=N*(N-2)+1 TO N*(N-1)
   IF I=N*(N-1) THEN
      PRINT #1:3;N*(N-1);N*(N-1)+1;N*(N-2)+1
   ELSE
      PRINT #1:3;I;N*(N-1)+1;I+1
   END IF
NEXT I
PRINT #1:"POINT_DATA";N*(N-1)+2
PRINT #1:"SCALARS height float"
PRINT #1:"LOOKUP_TABLE default"
FOR I=1 TO L
   PRINT #1:ZZ(I)
NEXT I
CLOSE #1
END
 

戻る