トーラス

 投稿者:しばっち  投稿日:2013年 9月 2日(月)20時05分30秒
  OPTION ARITHMETIC NATIVE
OPTION ANGLE DEGREES
RANDOMIZE
LET ZTH=0          ! z軸のまわりの回転角
LET XTH=0          ! x軸のまわりの回転角初期値
LET YTH=0          ! y軸のまわりの回転角初期値
LET LMIN=1E+10
LET LMAX=-1E+10
LET NN=40 !'分割数
LET MM=40
DIM M(4,4),POINT(4),ROTX(4,4),ROTY(4,4)
DIM XX(0 TO NN,0 TO MM),YY(0 TO NN,0 TO MM),ZZ(0 TO NN,0 TO MM)
MAT M=ROTATE(ZTH)
SET POINT STYLE 1
LET MODE=INT(RND*3)
LET RR=INT(RND*20)+5
LET R=INT(RND*5)+1
SELECT CASE MODE
CASE 0 !'トーラス
   FOR J=0 TO MM
      FOR I=0 TO NN
         LET ALPHA=I*360/NN
         LET BETA=J*360/MM
         LET  XX(I,J)=(RR+R*COS(ALPHA))*COS(BETA)
         LET  ZZ(I,J)=(RR+R*COS(ALPHA))*SIN(BETA)
         LET  YY(I,J)=R*SIN(ALPHA)
         LET XMIN=MIN(XMIN,XX(I,J))
         LET XMAX=MAX(XMAX,XX(I,J))
         LET YMIN=MIN(YMIN,YY(I,J))
         LET YMAX=MAX(YMAX,YY(I,J))
         LET ZMIN=MIN(ZMIN,ZZ(I,J))
         LET ZMAX=MAX(ZMAX,ZZ(I,J))
      NEXT I
   NEXT  J
CASE 1 !'変形トーラス
   LET R1=INT(RND*20)+1
   LET R2=INT(RND*20)+1
   LET K=INT(RND*20)+1
   FOR J=0 TO MM
      FOR I=0 TO NN
         LET ALPHA=I*360/NN
         LET BETA=J*360/MM
         LET  XX(I,J)=(R1+R*COS(ALPHA))*(R2+RR*COS(K*BETA))*COS(BETA)
         LET  ZZ(I,J)=(R1+R*COS(ALPHA))*(R2+RR*COS(K*BETA))*SIN(BETA)
         LET  YY(I,J)=R*SIN(ALPHA)*(R2+RR*COS(K*BETA))
         LET XMIN=MIN(XMIN,XX(I,J))
         LET XMAX=MAX(XMAX,XX(I,J))
         LET YMIN=MIN(YMIN,YY(I,J))
         LET YMAX=MAX(YMAX,YY(I,J))
         LET ZMIN=MIN(ZMIN,ZZ(I,J))
         LET ZMAX=MAX(ZMAX,ZZ(I,J))
      NEXT I
   NEXT J
CASE 2 !'歪んだトーラス
   LET R1=INT(RND*10)+1
   LET K=INT(RND*20)+1
   FOR J=0 TO MM
      FOR I=0 TO NN
         LET ALPHA=I*360/NN
         LET BETA=J*360/MM
         LET  XX(I,J)=(RR+R*COS(ALPHA))*COS(BETA)
         LET  ZZ(I,J)=(RR+R*COS(ALPHA))*SIN(BETA)
         LET  YY(I,J)=R*SIN(ALPHA)+R1*SIN(K*BETA)
         LET MX=MX+XX(I,J)
         LET MY=MY+YY(I,J)
         LET MZ=MZ+ZZ(I,J)
         LET XMIN=MIN(XMIN,XX(I,J))
         LET XMAX=MAX(XMAX,XX(I,J))
         LET YMIN=MIN(YMIN,YY(I,J))
         LET YMAX=MAX(YMAX,YY(I,J))
         LET ZMIN=MIN(ZMIN,ZZ(I,J))
         LET ZMAX=MAX(ZMAX,ZZ(I,J))
      NEXT I
   NEXT J
END SELECT
LET MX=MX/NN/MM
LET MY=MY/NN/MM
LET MZ=MZ/NN/MM
LET XDT=RND-.5
LET YDT=RND-.5
LET RANGE=MAX(XMAX-XMIN,MAX(YMAX-YMIN,ZMAX-ZMIN))
LOCATE VALUE NOWAIT(1),RANGE  0 TO 2,AT 1 : SCALE
LOCATE VALUE NOWAIT(2),RANGE -3 TO 5,AT 1 : SPEED
LOCATE VALUE NOWAIT(3),RANGE -RANGE TO RANGE,AT 0 : XMOVE
LOCATE VALUE NOWAIT(4),RANGE -RANGE TO RANGE,AT 0 : YMOVE
LOCATE VALUE NOWAIT(5),RANGE -RANGE TO RANGE,AT 0 : ZMOVE
DO
   LOCATE VALUE NOWAIT(1): SCALE
   LOCATE VALUE NOWAIT(2): SPEED
   LOCATE VALUE NOWAIT(3): XMOVE
   LOCATE VALUE NOWAIT(4): YMOVE
   LOCATE VALUE NOWAIT(5): ZMOVE
   MAT ROTX=IDN ! x軸のまわりの回転
   LET ROTX(2,2)=COS(XTH)
   LET ROTX(2,3)=SIN(XTH)
   LET ROTX(3,2)=-SIN(XTH)
   LET ROTX(3,3)=COS(XTH)
   MAT ROTY=IDN ! y軸のまわりの回転
   LET ROTY(1,1)=COS(YTH)
   LET ROTY(1,3)=-SIN(YTH)
   LET ROTY(3,1)=SIN(YTH)
   LET ROTY(3,3)=COS(YTH)
   MAT M=M *  ROTX * ROTY
   SET DRAW MODE HIDDEN
   CLEAR
   FOR J=0 TO MM-1
      FOR I=0 TO NN-1
         CALL PLOT(XX(I,J),YY(I,J),ZZ(I,J))
         CALL PLOT(XX(I,J+1),YY(I,J+1),ZZ(I,J+1))
         CALL PLOT(XX(I+1,J+1),YY(I+1,J+1),ZZ(I+1,J+1))
         CALL PLOT(XX(I+1,J),YY(I+1,J),ZZ(I+1,J))
         CALL PLOT(XX(I,J),YY(I,J),ZZ(I,J))
         PLOT LINES
      NEXT   I
   NEXT  J
   IF FL=0 THEN
      SET WINDOW -LMAX*1.2,LMAX*1.2,-LMAX*1.2,LMAX*1.2
      LET WW=LMAX*2.4
   END IF
   LET FL=1
   SET DRAW MODE EXPLICIT
   MOUSE POLL X,Y,L,R
   IF R<>0 THEN EXIT DO
   LET XTH=0
   LET YTH=0
   IF L<>0 THEN
      DO WHILE L<>0
         MOUSE POLL X,Y,L,R
      LOOP
      LET XDT=-(Y-Y0)/WW*5
      LET YDT= (X-X0)/WW*5
      LET XDT=MAX(-5,MIN(5,XDT))
      LET YDT=MAX(-5,MIN(5,YDT))
   ELSE
      LET XTH=XTH+XDT*SPEED
      LET YTH=YTH+YDT*SPEED
   END IF
   LET X0=X
   LET Y0=Y
LOOP

FILE GETSAVENAME F$,"STLファイル|*.stl"
IF F$="" THEN STOP
IF POS(UCASE$(F$),".STL")=0 THEN LET F$=F$ & ".stl"
OPEN #1:NAME F$
ERASE #1
PRINT #1:REPEAT$(CHR$(0),80);
PRINT #1:MKL$(NN*MM*2);
FOR I=0 TO NN-1
   FOR J=0 TO MM-1
      LET X1=XX(I+1,J+1)
      LET Y1=YY(I+1,J+1)
      LET Z1=ZZ(I+1,J+1)
      LET X2=XX(I+1,J)
      LET Y2=YY(I+1,J)
      LET Z2=ZZ(I+1,J)
      LET X3=XX(I,J)
      LET Y3=YY(I,J)
      LET Z3=ZZ(I,J)
      LET X4=XX(I,J+1)
      LET Y4=YY(I,J+1)
      LET Z4=ZZ(I,J+1)
      CALL VECTORNORMAL(X1,Y1,Z1,X2,Y2,Z2,X3,Y3,Z3,XS,YS,ZS)
      PRINT #1:MKS$(XS);
      PRINT #1:MKS$(YS);
      PRINT #1:MKS$(ZS);
      PRINT #1:MKS$(X1);
      PRINT #1:MKS$(Y1);
      PRINT #1:MKS$(Z1);
      PRINT #1:MKS$(X2);
      PRINT #1:MKS$(Y2);
      PRINT #1:MKS$(Z2);
      PRINT #1:MKS$(X3);
      PRINT #1:MKS$(Y3);
      PRINT #1:MKS$(Z3);
      PRINT #1:CHR$(0);CHR$(0);
      CALL VECTORNORMAL(X1,Y1,Z1,X3,Y3,Z3,X4,Y4,Z4,XS,YS,ZS)
      PRINT #1:MKS$(XS);
      PRINT #1:MKS$(YS);
      PRINT #1:MKS$(ZS);
      PRINT #1:MKS$(X1);
      PRINT #1:MKS$(Y1);
      PRINT #1:MKS$(Z1);
      PRINT #1:MKS$(X3);
      PRINT #1:MKS$(Y3);
      PRINT #1:MKS$(Z3);
      PRINT #1:MKS$(X4);
      PRINT #1:MKS$(Y4);
      PRINT #1:MKS$(Z4);
      PRINT #1:CHR$(0);CHR$(0);
   NEXT  J
NEXT  I
CLOSE #1

SUB PLOT(X,Y,Z)
   LET POINT(1)=X-MX+XMOVE
   LET POINT(2)=Y-MY+YMOVE
   LET POINT(3)=Z-MZ+ZMOVE
   MAT POINT=POINT*M
   IF FL=0 THEN
      LET LMIN=MIN(LMIN,POINT(1))
      LET LMAX=MAX(LMAX,POINT(1))
      LET LMIN=MIN(LMIN,POINT(2))
      LET LMAX=MAX(LMAX,POINT(2))
   ELSE
      PLOT LINES:POINT(1)*SCALE,POINT(2)*SCALE;
   END IF
END SUB
END

EXTERNAL  SUB VECTORNORMAL(X1,Y1,Z1,X2,Y2,Z2,X3,Y3,Z3,XX,YY,ZZ)
OPTION ARITHMETIC NATIVE
LET  XX=(Y3-Y2)*(Z1-Z3)-(Z3-Z2)*(Y1-Y3)
LET  YY=(Z3-Z2)*(X1-X3)-(X3-X2)*(Z1-Z3)
LET  ZZ=(X3-X2)*(Y1-Y3)-(Y3-Y2)*(X1-X3)
LET  S=SQR(XX^2+YY^2+ZZ^2)
IF S<>0 THEN
   LET  XX=XX/S
   LET  YY=YY/S
   LET  ZZ=ZZ/S
END IF
END SUB

EXTERNAL  FUNCTION MKL$(A)
OPTION ARITHMETIC NATIVE
OPTION CHARACTER BYTE
DECLARE STRING A$,B$,C$,D$
IF A<0 THEN LET  A=A+2^32
LET  A$=CHR$(MOD(A,256))
LET  B$=CHR$(MOD(INT(A/256),256))
LET  C$=CHR$(MOD(INT(A/65536),256))
LET  D$=CHR$(MOD(INT(A/16777216),256))
LET  MKL$=A$&B$&C$&D$
END FUNCTION

EXTERNAL  FUNCTION MKS$(X)
OPTION ARITHMETIC NATIVE
OPTION CHARACTER BYTE
OPTION BASE 0
DIM B(32)
IF X<0 THEN LET  B(0)=1
IF X<>0 THEN
   IF ABS(X)<1 THEN
      DO WHILE 2^(N+1)>ABS(X)
         LET  N=N-1
      LOOP
      LET  N=N+1
   ELSE
      DO WHILE 2^(N+1)<ABS(X)
         LET  N=N+1
      LOOP
   END IF
   LET  NN=N
   LET  N=N+127
   FOR I=1 TO 8
      IF BITAND(N,2^(8-I))<>0 THEN LET  B(I)=1
   NEXT I
   LET  T=(ABS(X)-2^NN)/2^NN
   FOR I=9 TO 31
      LET  T=T*2
      IF T>=1 THEN
         LET  B(I)=1
         LET  T=T-INT(T)
      END IF
   NEXT I
END IF
LET  AA$=CHR$(B(0)*128+B(1)*64+B(2)*32+B(3)*16+B(4)*8+B(5)*4+B(6)*2+B(7))
LET  BB$=CHR$(B(8)*128+B(9)*64+B(10)*32+B(11)*16+B(12)*8+B(13)*4+B(14)*2+B(15))
LET  CC$=CHR$(B(16)*128+B(17)*64+B(18)*32+B(19)*16+B(20)*8+B(21)*4+B(22)*2+B(23))
LET  DD$=CHR$(B(24)*128+B(25)*64+B(26)*32+B(27)*16+B(28)*8+B(29)*4+B(30)*2+B(31))
LET  MKS$=DD$&CC$&BB$&AA$
END FUNCTION
 

Re: トーラス

 投稿者:たろさ  投稿日:2017年 6月 2日(金)01時24分24秒
  > No.3135[元記事へ]

しばっちさんへのお返事です。

リーマン予想の探究

私は素人なので、普通の方法ではありません。

オイラーの公式(e^(i*pi)=-1)と(sin(pi)+cos(pi)=-1)から

x=1.080929170560724870066442798932725233917386163162;
s=2;
sqrt(sin(x)*s+cos(x)*s);
zeta(2);
sqrt((sin(x)*s)^2+(cos(x)*s)^2);
sin(x)*s;
cos(x)*s;

1.6449340668482264364724151666460251892189499012068=zeta(2)
1.6449340668482264364724151666460251892189499012068
2
1.7647907410794978581738952982401046226046426494767
0.94101734319834762061611394311281513433223473032

ゼータ関数を座標値に変換しました。
ゼータ関数の円周上の点 グラフv3

------------------------------------------------------

(sin(x)*s+cos(x)*s)から、非自明な零点を求めて見たいと思いました。

n*pi/4    MOD(n,4)=3 の時 0

2/(pi*euler)=1.10291492604619838  ,(euler=0.577215664901532861)

等が原因で実験失敗


実験の副産物の報告です。

-------------------------------------
実部は変化しない。
----------------------
y=sin(pi*x)+x*(1-x)i;
Re(y);
Im(y);
----------------------
-5,0.5,101
----------------------
y=sin(pi*x)-x*(1-x)i;
Re(y);
Im(y);
----------------------
-5,0.5,101
----------------------

実験プログラムです。
----------------------------------------
!v1
OPTION ARITHMETIC COMPLEX
SET BITMAP SIZE 640*1+1,640*1+1 ! x軸方向にデフォルトのn倍拡張
LET Wi=10
SET WINDOW -wi,wi,-wi,wi
DRAW GRID(1,1)
SET POINT STYLE 7
LET s=COMPLEX(0,1)
!LET s=COMPLEX(0.5,14.13472514173469379)
!LET s=2
LET z=0
FOR n=1 TO 100 STEP 0.1 !半径
   LET Z=Z+1/n*s
   LET z1=RE(z)
   LET z2=IM(z)
   SET POINT COLOR 2
   PLOT POINTS:z1+0.5,z2
NEXT n
PRINT z
END
-----------------------------------------------
!v2
OPTION ARITHMETIC COMPLEX
SET BITMAP SIZE 640*1+1,640*1+1 ! x軸方向にデフォルトのn倍拡張
LET Wi=10
SET WINDOW -wi,wi,-wi,wi
DRAW GRID(1,1)
SET POINT STYLE 7
!LET s=COMPLEX(0,1)
LET s=COMPLEX(.5,14.13472514173469379)
!LET s=2
LET z=0
FOR n=1 TO 100 STEP 0.1 !半径
   LET Z=Z+1/n^s
   LET z1=RE(z)
   LET z2=IM(z)
   SET POINT COLOR 2
   PLOT POINTS:z1,z2
NEXT n
PRINT z
END
------------------------------------------------
!v3
OPTION ARITHMETIC COMPLEX
SET BITMAP SIZE 640*1+1,640*1+1 ! x軸方向にデフォルトのn倍拡張
LET Wi=15
SET WINDOW -1,1,13,15
DRAW GRID(.1,.1)
SET POINT STYLE 7
!LET s=COMPLEX(0,1)
LET s=COMPLEX(.5,14.13472514173469379)
!LET s=2
LET z=0
FOR n=1 TO 100 STEP 0.1 !半径
   LET Z=Z+1/n*s
   LET z1=RE(z)
   LET z2=IM(z)
   SET POINT COLOR 2
   PLOT POINTS:z1,z2
NEXT n
PRINT z
END
------------------------------------------------
!v4
OPTION ARITHMETIC COMPLEX
SET BITMAP SIZE 640*1+1,640*1+1 ! x軸方向にデフォルトのn倍拡張
LET Wi=10
SET WINDOW -wi,wi,-wi,wi
DRAW GRID(1,1)
SET POINT STYLE 7

LET s=COMPLEX(0.5,14.13472514173469379)
!LET s=2
LET z=0
FOR n=1 TO 100 STEP 0.1 !半径
   LET Z=Z+1/n^s
   LET z1=RE(z)
   LET z2=IM(z)
   SET POINT COLOR 2
   PLOT POINTS:z2-z1,z1-z2
   SET POINT COLOR 4
   PLOT POINTS:z1-z2,z2-z1
NEXT n
PRINT z
END
-------------------------------------------

!v2 螺旋のグラフを見ると、カオスと似ている。

LET s=COMPLEX(z)  変数にすると螺旋の形状が変化する。

カオスの例に倣うと、物理的な現象では、と、予想すると

非自明な零点は、位相が逆転する点と予想される。

証明には物理学の知識が必要なのかも ?

次の実験の場をトーラスにして、実験中です。

現状かなり複雑です。



トーラス  #3135

回転体   #1621
Re: 回転体 #1622

大変便利です。3Dプリンターの時代にフィットしてます。


Re: 平行投影 #4365

トーラスを組み込んで、みましたが、スライドバーのためか?  失敗しています。

私には、3Dは、難しい。x,y,z のz軸が わかりません。

トーラスを球体付近から、平面付近にに、変形出来たら、と思いました。

http://blogs.yahoo.co.jp/donald_stinger

 

戻る