动画
程序
OPTION NOLET
W1=4.1888
XA=0
YA=0
XC=0
XD=30
XE=30
XG=35
YG=60
XH=65
YH=60
XI=65
YI=30
XJ=0
XF=0
XO=-9.708
YO=-50
LOM=21
LKM=15.5
LAB=15
LBC=80
LCD=30
LDE=35
R=1
SET WINDOW -80,130,-80,100
FOR Q1=0 TO 3600 STEP 5
CALL LINK(0, 0, 0, 0, 0, 0, Q1*PI/180, W1, 0,LAB,XB, YB, VBX, VBY, ABX, ABY)
CALL RRP1(+1,0,LBC,XB,VBX,ABX,QBC,WBC,EBC)
CALL LINK(XB,YB,VBX,VBY,ABX,ABY,QBC,WBC,EBC,LBC,0,YC,0,VCY,0,ACY)
!CALL LINK(XK, YK, 0, 0, 0, 0, (Q2+90)*PI/180, W2,E2 ,15.5,XM, YM, VMX, VMY, AMX, AMY)
CALL LINK(XK, YK, 0, 0, 0, 0, (Q1+90)*PI/180, 10, 0,LKM,XM, YM, VMX, VMY, AMX, AMY)
YD=YC
YE=YC-LDE
YP=YE
XP=XI-((YE-YI)*TAN(45*PI/180))
XF=XP-40
YF=YP
YJ=YC-35
XK=XO+25
YK=YO-9.708
CLEAR
PLOT XA,YA;XB,YB;XC,YC
PLOT XC,YC;XD,YD
PLOT XD,YD;XE,YE+1
PLOT XC,YC;XJ,YJ
PLOT -30.708,30;11.292,30
PLOT -30.708,37.5;11.292,37.5
PLOT -30.708,37.5;-30.708,30
PLOT 11.292,30;11.292,37.5
PLOT -28.208,45;8.792,45
PLOT -28.208,37.5;-28.208,45
PLOT 8.792,45;8.792,37.5
PLOT 8.792,37.5;-28.208,37.5
PLOT XE+1,YE+1;XE-1,YE+1
PLOT XE+1,YE-1;XE-1,YE-1
PLOT XJ+5,YJ;XJ-5,YJ
PLOT XG,YG;XH,YH
PLOT XG,YG;XI,YI
PLOT XH,YH;XI,YI
PLOT XF,YF;XP,YP
BOX CIRCLE -R,R,-R,R
PLOT TEXT, AT XA+1,YA:"A"
BOX CIRCLE XB-R,XB+R,YB-R,YB+R
PLOT TEXT, AT XB+1,YB:"B"
BOX CIRCLE XC-R,XC+R,YC-R,YC+R
PLOT TEXT, AT XC+2,YC+2:"C"
PLOT TEXT, AT XJ,YJ-2:"J"
PLOT TEXT, AT XD+1,YD:"D"
PLOT TEXT, AT XG,YG+1:"G"
PLOT TEXT, AT XH,YH+1:"H"
PLOT TEXT, AT XI+1,YI:"I"
PLOT TEXT, AT XE,YE-8:"E"
PLOT TEXT, AT XF,YF-8:"F"
PLOT TEXT, AT XP,YP-8:"P"
PLOT XK,YK;XM,YM
PLOT TEXT, AT XM+2,YM+1:"M"
PLOT TEXT, AT XK+2,YK+1:"K"
PLOT TEXT, AT XO-2,YO+2:"O"
BOX CIRCLE XO-21,XO+21,YO-21,YO+21
BOX CIRCLE XK-R,XK+R,YK-R,YK+R
IF Q1>360 THEN
Q1=Q1-360
END IF
!Q2=Q1-23
Q2=Q1-18
IF Q2<0 THEN
!Q2=216
Q2=113
END IF
IF Q2<115 THEN
!IF Q2<211 THEN
CALL RPR(-1,XO,YO,0,0,0,0,XM,YM,VMX,VMY,AMX,AMY,0,QOM,W2,E2)
QOM=QOM*180/PI
ELSE
QOM=18
W2=0
E2=0
END IF
CALL LINK(XO, YO, 0, 0, 0, 0, QOM*PI/180, W2, E2,LOM,XM1, YM1, VM1X, VM1Y, AM1X, AM1Y)
CALL LINK(XO, YO, 0, 0, 0, 0, (QOM+72) *PI/180, W2, E2,LOM,XM2, YM2, VM2X, VM2Y, AM2X, AM2Y)
CALL LINK(XO, YO, 0, 0, 0, 0, (QOM+144) *PI/180, W2, E2,LOM,XM3, YM3, VM3X, VM3Y, AM3X, AM3Y)
CALL LINK(XO, YO, 0, 0, 0, 0, (QOM+216) *PI/180, W2, E2,LOM,XM4, YM4, VM4X, VM4Y, AM4X, AM4Y)
CALL LINK(XO, YO, 0, 0, 0, 0, (QOM+288)*PI/180, W2, E2,LOM,XM5, YM5, VM5X, VM5Y, AM5X, AM5Y)
PLOT XO,YO;XM1,YM1
PLOT XO,YO;XM2,YM2
PLOT XO,YO;XM3,YM3
PLOT XO,YO;XM4,YM4
PLOT XO,YO;XM5,YM5
!ELSE
PAUSE 0.2
NEXT Q1
END
SUB LINK(XA,YA,VAX,VAY,AAX,AAY,QAB,W,E,L,XB,YB,VBX,VBY,ABX,ABY)
let XB=XA+L*COS(QAB)
let YB=YA+L*SIN(QAB)
let VBX=VAX-L*SIN(QAB)*W
let VBY=VAY+L*COS(QAB)*W
let ABX=AAX-L*COS(QAB)*W^2-L*SIN(QAB)*E
let ABY=AAY-L*SIN(QAB)*W^2+L*COS(QAB)*E
END SUB
SUB RRR(XA,YA,VAX,VAY,AAX,AAY,XC,YC,VCX,VCY,ACX,ACY,LAB,LCB,QAB,WAB,EAB,QCB,WCB,ECB)
let LAC=SQR((XC-XA)^2+(YC-YA)^2)
let COSQAC=(XC-XA)/LAC
let SINQAC=(YC-YA)/LAC
let QAC=ANGLE(COSQAC,SINQAC)
let COSQCBA=(LAB^2+LAC^2-LCB^2)/(2*LAB*LAC)
let SINQCBA=SQR(1-COSQCBA^2)
let QCBA=ANGLE(COSQCBA,SINQCBA)
let QAB=QAC-QCBA
let XB=XA+LAB*COS(QAB)
let YB=YA+LAB*SIN(QAB)
let COSQCB=(XB-XC)/LCB
let SINQCB=(YB-YC)/LCB
let QCB=ANGLE(COSQCB,SINQCB)
let WAB=((VAX-VCX)*COSQCB+(VAY-VCY)*SINQCB)/LAB/SIN(QAB-QCB)
let WCB=((VAX-VCX)*COS(QAB)+(VAY-VCY)*SIN(QAB))/LCB/SIN(QAB-QCB)
let G=AAX-ACX-LAB*COS(QAB)*WAB^2+LCB*COSQCB*WCB^2
let F=AAY-ACY-LAB*SIN(QAB)*WAB^2+LCB*SINQCB*WCB^2
let EAB=(G*COSQCB+F*SINQCB)/LAB/SIN(QAB-QCB)
let ECB=(G*COS(QAB)+F*SIN(QAB))/LCB/SIN(QAB-QCB)
END SUB
SUB RPR(M,XA,YA,VAX,VAY,AAX,AAY,XC,YC,VCX,VCY,ACX,ACY,LAB,QBD,W,E)
let LAC=SQR((XC-XA)^2+(YC-YA)^2)
let COSQAC=(XC-XA)/LAC
let SINQAC=(YC-YA)/LAC
let QAC=ANGLE(COSQAC,SINQAC)
let LBC=SQR(LAC^2-LAB^2)
let QACB=ATN(LAB/LBC)
let QBD=QAC+M*QACB
let DELTA=-(YC-YA)*SIN(QBD)-(XC-XA)*COS(QBD)
let DELTAW=(VCX-VAX)*SIN(QBD)-(VCY-VAY)*COS(QBD)
let DELTAV=-(YC-YA)*(VCY-VAY)-(XC-XA)*(VCX-VAX)
let W=DELTAW/DELTA
let VLBC=DELTAV/DELTA
let T1=(ACX-AAX)+(VCY-VAY)*W+SIN(QBD)*W*VLBC
let T2=(ACY-AAY)-(VCX-VAX)*W-COS(QBD)*W*VLBC
let DELTAE=T1*SIN(QBD)-T2*COS(QBD)
let E=DELTAE/DELTA
END SUB
SUB RRP(M,YB,LAB,YA,VAY,AAY,QAB,W,E)
! THE GUIDEWAY IS HORIZONTAL
! B IS THE REVOLUTE BETWEEN COUPLER AND SLIDING BLOCK
! IF XB>XA THEN M=+1,OTHERWISE, M=-1
let SINQAB=(YB-YA)/LAB
let COSQAB=M*SQR(1-SINQAB^2)
let QAB=ANGLE(COSQAB,SINQAB)
let W=-VAY/(LAB*COSQAB)
let E=(-AAY*COSQAB-VAY*SINQAB*W)/(LAB*COSQAB^2)
END SUB
SUB RRP1(M,XB,LAB,XA,VAX,AAX,QAB,W,E)
! THE GUIDEWAY IS VERTICAL
! B IS THE REVOLUTE BETWEEN COUPLER AND SLIDING BLOCK
! IF YB>YA THEN M=+1,OTHERWISE, M=-1
let COSQAB=(XB-XA)/LAB
let SINQAB=M*SQR(1-COSQAB^2)
let QAB=ANGLE(COSQAB,SINQAB)
let W=VAX/(LAB*SINQAB)
let E=(AAX*SINQAB-VAX*COSQAB*W)/(LAB*SINQAB^2)
END SUB
END