10 '******************************************** 20 '*****水平引き込みクレーンアニメーション***** 30 '***************************** H18/04/27 **** 40 SCREEN 3:CLS 3 50 X=50 : Y=350 :T=0 60 '-----リンクの長さの定義 70 X1=60 : Y2=105 : L1=245 : L2=195 : A=60 : B=90 80 '-----角度をラジアンに変換するための定義 90 RAD=3.14159#/180 100 '-----最小の角度を求める(最も押し出したときの角度) 110 O=L1^2-X1^2+Y2^2-(L2+A)^2 120 HAN1=((X1-X1/2/Y2^2*O)^2-(1+X1^2/Y2^2)*(X1^2+O^2/4/Y2^2-L1^2)) 130 IF HAN1<0 THEN GOTO 140 ELSE GOTO 150 140 PRINT"この長さでは√の中が−になるので計算できません":STOP 150 XMIN=(X1-X1/2/Y2^2*O+SQR(HAN1))/(1+X1^2/Y2^2) 160 YMIN=X1/Y2*XMIN+O/2/Y2-Y2 170 SMIN=ATN(YMIN/XMIN)/RAD 180 '-----最大の角度を求める(最も引き込んだときの角度) 190 Q=(L1+A)^2-L2^2-X1^2+Y2^2 200 HAN2=((X1-X1/2/Y2^2*Q)^2-(1+X1^2/Y2^2)*(X1^2+Q^2/4/Y2^2-(L1+A)^2)) 210 IF HAN2<0 THEN GOTO 220 ELSE 230 220 PRINT"この長さでは√の中がーになるので計算できません" : STOP 230 XMAX=(X1-X1/2/Y2^2*Q+SQR(HAN2))/(1+X1^2/Y2^2) 240 YMAX=X1/Y2*XMAX+Q/2/Y2-Y2 250 SMAX=ATN(YMAX/XMAX)/RAD 260 '-----θMINからθMAXまでの座標計算 270 FOR Q=1 TO 360 STEP .3# 280 CLS 3 290 R=((SMAX-SMIN)/2)*SIN(Q*RAD) 300 P=R+(SMAX+SMIN)/2 310 AX=L2*COS(P*RAD) 320 AY=Y2+L2*SIN(P*RAD) 330 AA=(X1-L2*COS(P*RAD))/(Y2+L2*SIN(P*RAD)) 340 BB=(L1^2+L2^2-A^2-X1^2+Y2^2+2*Y2*L2*SIN(P*RAD))/2/(Y2+L2*SIN(P*RAD)) 350 HAN3=(L1^2)*(1+AA^2)-(AA*X1+BB)^2 360 IF HAN3<0 THEN GOTO 370 ELSE 380 370 PRINT "この長さでは√のなかがーになるので計算できません" : STOP 380 BX=(X1-AA*BB+SQR(HAN3))/(1+AA^2) 390 BY=AA*BX+BB 400 CX=(-B*AX+(A+B)*BX)/A 410 CY=(-B*AY+(A+B)*BY)/A 420 '------荷物の座標 430 DX=CX-15 440 DY=CY-SQR(81^2-9^2) 450 EX=DX 460 EY=DY-45 470 FX=CX+15 480 FY=DY 490 GX=FX 500 GY=FY-45 510 '------描画と削除 520 LINE (X-20,Y)-(X+200,Y) 530 LINE (X,Y+20)-(X,Y-200) 540 CIRCLE (X+X1,Y),4 550 CIRCLE (X,Y-Y2),4 560 CIRCLE (X+AX,Y-AY),4 570 CIRCLE (X+BX,Y-BY),4 580 CIRCLE (X+CX,Y-CY),4 590 LINE (X+AX,Y-AY)-(X+BX,Y-BY) 600 LINE (X,Y-Y2)-(X+AX,Y-AY) 610 LINE (X+X1,Y)-(X+BX,Y-BY) 620 LINE (X+BX,Y-BY)-(X+CX,Y-CY) 630 LINE (X+CX,Y-CY)-(X+DX,Y-DY) 640 LINE (X+DX,Y-DY)-(X+EX,Y-EY) 650 LINE (X+DX,Y-DY)-(X+FX,Y-FY) 660 LINE (X+CX,Y-CY)-(X+FX,Y-FY) 670 LINE (X+FX,Y-FY)-(X+GX,Y-GY) 680 LINE (X+EX,Y-EY)-(X+GX,Y-GY) 690 '-----画面切り替え 700 IF (T MOD 2)=1 THEN 710 ELSE 720 710 SCREEN 3,0,0,17:GOTO 730 720 SCREEN 3,0,1,1 :GOTO 730 730 T=T+1 750 NEXT Q 760 GOTO 270 770 END