9mmさんへのお返事です。
> 球面にせずに4つの座標をつないでなるべく球体に見えるようなものがいいんですが…
> それがx軸周りで回転しているようなプログラムとか作れますかね?
> 初心者用の課題なんであまり高度なプログラミングをすると…(>_<)
この質問がはっきりしませんので、正確な回答ができませんが、、、
!ワイヤーフレームで曲面を描く SAMPLE\3DPLOT.BASを改修。
SUB rotx(x,y,z,a)
LET y0=y*cos(a)-z*sin(a)
LET z0=y*sin(a)+z*cos(a)
LET y=y0
LET z=z0
END SUB
SUB roty(x,y,z,a)
LET x0=x*cos(a)+z*sin(a)
LET z0=-x*sin(a)+z*cos(a)
LET x=x0
LET z=z0
END SUB
SUB rotz(x,y,z,a)
LET x0=x*cos(a)-y*sin(a)
LET y0=x*sin(a)+y*cos(a)
LET x=x0
LET y=y0
END SUB
SUB convert(x,y,z)
CALL rotz(x,y,z,RAD(-30))
CALL rotx(x,y,z,RAD(-70))
END SUB
SUB plotTo(x,y,z)
LET x1=x
LET y1=y
LET z1=z
CALL convert(x1,y1,z1)
PLOT LINES:x1,y1;
END SUB
SUB PenUp
PLOT LINES
END SUB
SUB PlotText(x,y,z,s$)
CALL convert(x,y,z)
PLOT TEXT ,AT x,y: s$
END SUB
!媒体変数表示
DEF fx(u,v)=COS(u)*SIN(v) !球 u=[0,2*PI],v=[0,PI] ※球座標(r,θ,φ)
DEF fy(u,v)=SIN(u)*SIN(v)
DEF fz(u,v)=COS(v)
SET WINDOW -2,2,-2,2
FOR f=0 TO 360 !フレーム・アニメーション
SET DRAW mode hidden !ちらつき防止(開始)
CLEAR
! 軸を描く
CALL PlotTo(0,0,0)
CALL PlotTo(2,0,0)
CALL PlotTo(0,0,0)
CALL PlotTo(0,2,0)
CALL PlotTo(0,0,0)
CALL PlotTo(0,0,2)
CALL PenUp
CALL PlotText(2,0,0,"x")
CALL PlotText(0,2,0,"y")
CALL PlotText(0,0,2,"z")
! 曲面を描く
FOR u=0 TO 360 STEP 15
FOR v=0 TO 180 STEP 15
LET x=fx(RAD(u),RAD(v))
LET y=fy(RAD(u),RAD(v))
LET z=fz(RAD(u),RAD(v))
CALL rotx(x,y,z,RAD(f))
CALL PlotTo(x,y,z)
NEXT v
CALL PenUp
NEXT u
FOR v=0 TO 180 STEP 30
FOR u=-1 TO 360 STEP 30
LET x=fx(RAD(u),RAD(v))
LET y=fy(RAD(u),RAD(v))
LET z=fz(RAD(u),RAD(v))
CALL rotx(x,y,z,RAD(f))
CALL PlotTo(x,y,z)
NEXT u
call PenUp
NEXT v
SET DRAW mode explicit !ちらつき防止(終了)
!WAIT DELAY 0.1
NEXT f
END