|
折り畳み式卓球台(Ⅱ型)がきちんと折り畳めるかどうか,動作させて確認するためのプログラムです。この形状では,うまく折り畳めないことがわかります。
! 卓球台動作Ⅱ型描画プログラム
SET BITMAP SIZE 1000*1.8 , 600*1.8
SET WINDOW -500 , 500 , - 100 , 500 ! 座標平面(-500≦χ≦500、-100≦y≦500)
DRAW GRID ( 100 , 100 )
SET POINT STYLE 1
SET POINT COLOR 4
SET LINE STYLE 1
SET LINE COLOR 4
SET LINE WIDTH 3 ! 線の幅
OPTION ANGLE DEGREES ! 角度は度数で
! 卓球台Ⅱ型の描画&消画
FOR x = 0 TO 90 STEP 1
! 描画
SET LINE COLOR 4
! 点B(bx,by),C(cx,cy),D(dx,dy),原点O(ox,oy)の座標の算出
LET bx=-150*COS(x)
LET by=150*SIN(x)+60
LET cx=0
LET cy=60
LET dx=0
LET dy=140+60
LET ox=0
LET oy=0
! 点A(ax,ay)の算出 円1:(x-x1)^2+(y-y1)^2=r1^2,円2:(x-x2)^2+(y-y2)^2=r2^2 の決定
LET x1=bx
LET y1=by
LET r1=SQR(140^2+(150-100)^2)
LET x2=dx
LET y2=dy
LET r2=100
! 点Aの算出 2円の交点の算出
LET aa=((x2-x1)^2+(y2-y1)^2+r1^2-r2^2)/2
LET ax=(aa*(x2-x1)-(y2-y1)*SQR(((x2-x1)^2+(y2-y1)^2)*r1^2-aa^2))/((x2-x1)^2+(y2-y1)^2)+x1 ! 点Aのχ座標
LET ay=(aa*(y2-y1)+(x2-x1)*SQR(((x2-x1)^2+(y2-y1)^2)*r1^2-aa^2))/((x2-x1)^2+(y2-y1)^2)+y1 ! 点Aのy座標
! 点Gの算出 平行線と比
LET a=SQR(140^2+(150-100)^2) ! aの長さ
LET b=(60/140)*a ! bの長さ
LET gx=bx-(b/a)*(ax-bx)
LET gy=by-(b/a)*(ay-by)
! 点Eの算出 平行線と比
LET ex=((100+80)/100)*ax
LET ey=ay+(80/100)*(ay-dy)
! 点Fの算出 平行線と比
LET fx=-(170/100)*ax
LET fy=dy-(170/100)*(ay-dy)
PLOT LINES : ex ,ey; fx,fy ! 描画 線分EF
PLOT LINES : ax ,ay; gx,gy ! 描画 線分AG
PLOT LINES : bx ,by; cx,cy ! 描画 線分BC
PLOT LINES : dx ,dy; ox,oy ! 描画 線分DO
IF ax>-c/10 THEN GOTO 9999 ! 天板EFが鉛直の直前→end つまり,ax=0
IF x=0 THEN
FOR ttt=0 TO 1000000*10 STEP 1 ! 描画時間調整
NEXT ttt
ELSE
FOR ttt=0 TO 1000000 STEP 1 ! 描画時間調整
NEXT ttt
END IF
! 消画
SET LINE COLOR 0
PLOT LINES : ex ,ey; fx,fy ! 描画 線分EF
PLOT LINES : ax ,ay; gx,gy ! 消画 線分AG
PLOT LINES : bx ,by; cx,cy ! 消画 線分BC
PLOT LINES : dx ,dy; ox,oy ! 消画 線分DO
NEXT X
9999 END
|
|