●陽関数表示
!曲線上に文字を表示する
SET WINDOW -5,5,-5,5
DRAW grid
SET TEXT HEIGHT 0.5
SET TEXT JUSTIFY "CENTER","BOTTOM"
DRAW TextOnPath("Abcあい漢",1.5) WITH SHIFT(-2,-1)
END
EXTERNAL FUNCTION f(x) !曲線 y=f(x) ※陽関数表示
!LET f=ABS(x-3)
!LET f=x^3
LET f=SIN(x)
END FUNCTION
EXTERNAL PICTURE TextOnPath(s$,L) !曲線上に文字を表示する
IF LEN(s$)=0 OR L<=0 THEN EXIT PICTURE
LET k=1 !k文字目
LET S=0 !曲線y=f(x)の区間[a,b]の長さ S=∫[a,b]SQR(1+f'(x)^2)dx
LET H=0.05
LET i=0
DO
LET t=H*i !リーマン和、区分求積
LET Ft=f(t)
LET df=(f(t+H)-Ft)/H !導関数 f'(x) ※微分係数による
LET S=S+H*SQR(1+df*df)
IF S>=(k-1)*L THEN !文字間隔ごとに
DRAW disk WITH SCALE(0.05)*SHIFT(t,Ft) !位置を印す
SET TEXT ANGLE ANGLE(1,df) !角度を調整する
PLOT TEXT ,AT t,Ft: s$(k:k) !k文字目
LET k=k+1 !次の文字へ
IF k>LEN(s$) THEN EXIT PICTURE !すべての文字を表示したなら
ELSE
PLOT LINES: t,Ft; !曲線の軌跡
END IF
LET i=i+1
LOOP
END PICTURE
●媒介変数表示
!曲線上に文字を表示する
SET WINDOW -5,5,-5,5
DRAW grid
SET TEXT HEIGHT 0.5
SET TEXT JUSTIFY "CENTER","BOTTOM"
DRAW TextOnPath("Abcあい漢",1.5) WITH SHIFT(-2,-1)
END
EXTERNAL FUNCTION x(t) !曲線 x=f(t)、y=f(t) ※媒介変数表示
!!!LET x=t !y=sin(x)
LET x=3*COS(t) !半径3の円
END FUNCTION
EXTERNAL FUNCTION y(t)
!!!LET y=SIN(t) !y=sin(x)
LET y=3*SIN(t) !半径3の円
END FUNCTION
EXTERNAL PICTURE TextOnPath(s$,L) !曲線上に文字を表示する
IF LEN(s$)=0 OR L<=0 THEN EXIT PICTURE
LET k=1 !k文字目
LET S=0 !曲線x=f(t),y=g(t)の区間[a,b]の長さ S=∫[a,b]SQR((dx/dt)^2+(dy/dt)^2)dx
LET H=0.05
LET i=0
DO
LET t=H*i !リーマン和、区分求積
LET Xt=x(t)
LET Yt=y(t)
LET dx=(x(t+H)-Xt)/H !導関数 dx/dt、dy/dt ※微分係数による
LET dy=(y(t+H)-Yt)/H
LET w=dx*dx+dy*dy
LET S=S+H*SQR(w)
IF S>=(k-1)*L THEN !文字間隔ごとに
DRAW disk WITH SCALE(0.05)*SHIFT(Xt,Yt) !位置を印す
IF w<>0 THEN !角度を調整する
SET TEXT ANGLE ANGLE(dx,dy)
ELSE
SET TEXT ANGLE 0
END IF
PLOT TEXT ,AT Xt,Yt: s$(k:k) !k文字目
LET k=k+1 !次の文字へ
IF k>LEN(s$) THEN EXIT PICTURE !すべての文字を表示したなら
ELSE
PLOT LINES: Xt,Yt; !曲線の軌跡
END IF
LET i=i+1
LOOP
END PICTURE
●極座標表示
!曲線上に文字を表示する
SET WINDOW -5,5,-5,5
DRAW grid
SET TEXT HEIGHT 0.5
SET TEXT JUSTIFY "CENTER","BOTTOM"
DRAW TextOnPath("Abcあい漢",3.5) WITH SHIFT(-2,-1)
END
EXTERNAL FUNCTION r(t) !曲線 r=f(θ) ※極座標表示
LET r=3*(1+COS(t))
END FUNCTION
EXTERNAL PICTURE TextOnPath(s$,L) !曲線上に文字を表示する
IF LEN(s$)=0 OR L<=0 THEN EXIT PICTURE
LET k=1 !k文字目
LET S=0 !曲線r=f(θ)の区間[a,b]の長さ S=∫[a,b]SQR(r(θ)^2+r'(θ)^2)dx
LET H=0.05
LET i=0
DO
LET t=H*i !リーマン和、区分求積
LET Rt=r(t)
LET dr=(r(t+H)-Rt)/H !導関数 r'(θ) ※微分係数による
LET w=Rt*Rt+dr*dr
LET S=S+H*SQR(w)
LET x=Rt*COS(t) !極座標(r,θ)→直交座標(x,y)
LET y=Rt*SIN(t)
IF S>=(k-1)*L THEN !文字間隔ごとに
DRAW disk WITH SCALE(0.05)*SHIFT(x,y) !位置を印す
IF w<>0 THEN !角度を調整する
SET TEXT ANGLE ANGLE(dr,Rt)+t
!SET TEXT ANGLE ANGLE(dr-Rt*TAN(t),Rt+dr*TAN(t))
ELSE
SET TEXT ANGLE 0
END IF
PLOT TEXT ,AT x,y: s$(k:k) !k文字目
LET k=k+1 !次の文字へ
IF k>LEN(s$) THEN EXIT PICTURE !すべての文字を表示したなら
ELSE
PLOT LINES: x,y; !曲線の軌跡
END IF
LET i=i+1
LOOP
END PICTURE