145963 (729018), страница 11
Текст из файла (страница 11)
#include
#include
#include
#include
#include
/* описание постоянных */
#define pi M_PI
#define RAD M_PI/180
/* Описание функций */
void elips();
void raschet(float);
void draw(float);
void stoyka(float,float);
void polzushka(float,float,float);
void okno(float,float,float,float);
void ramka(float,float,float,float);
void grafiki();
void grafik(int);
void osi(float,float,float,float,int);
void help();
int traek1();
/* Описание глобальных переменных */
float n=1,t=4,R_C=3,DEK=0.7;
double O1A1=4., O5A2=0.6,
O1F=1.8,
KO4=24.,
FK=52.,
A1B=41.3,
A2H=69.,
O7H=66.5,
O7I=73.,
DB=18.,
O3C=20.,
BC=18.,
O2D=18.,
O3E=24.,
O4M=25.,
MN=18.,
EN=98.66,
EP=95.7,
PN=24.,
CR=204.,
O6R=15.,
O6S=20.,
O8V=43.,
O8W=52.5,
SV=100.,
SR=20.,
WL=23.25,
LX=20.,
IJ=33.5,
JU=26.,
UY=19.4,
Xo1=285, X=290,
Yo1=350, Y=210,
Xo2=-37.6,
Yo2=-16.6,
Xo3=-63.,
Yo3=-1.,
Xo4=56.,
Yo4=7.5,
Xo6=25.,
Yo6=181.,
Xo8=-55.5,
Yo8=104.9,
Xo5=0.,
Yo5=220.,
Xo7=-70.,
Yo7=160.9,
Xx=-32.,
Yx=72.,
Ystola=30.,
Xu=Xx-4,
Yu=Yx-10,
gam1=88,
gam2=-98,
gam3=360-136,
gam4=-180/M_PI*acos((O6R*O6R+O6S*O6S-SR*SR)/2/O6R/O6S),
gam5=-99.56,
gam6=90.,
QQ=90.,
beta=30.,
xq=64.1,
yq=9.3,
ZQb=27.9,
L1zb=29.,
LL1=8.;
double Xa1,Ya1,Xa2,Ya2,Xb,Yb,Xc,Yc,Xk,Yk,Xm,Ym,Xe,Ye,Xn,Yn,Xp,Yp,Xf,Yf,Xd,Yd,Xq,Yq,
Xz,Yz,Xr,Yr,Xs,Ys,Xv,Yv,Xw,Yw,Xh,Yh,Xi,Yi,Xl,Yl,Xj,Yj,Xy,Yy,Xqb,Yqb,Xzb,Yzb,Xl1,Yl1,
A,B,C,A2,B2,C2,A3,B3,C3,A4,B4,C4,A5,B5,C5,A6,B6,C6,A7,B7,C7,
A8,B8,C8,A9,B9,C9,EQ,R,A10,B10,C10,BB,CC,q,L1y,RRR,
cosfi2,sinfi2,cosfi5,sinfi5,cosfi4,sinfi4,cosfi3,sinfi3,alfa,
cosfi7,sinfi7,cosfi6,sinfi6,cosfi9,sinfi9,cosfi8,sinfi8,
cosfi11,sinfi11,cosfi10,sinfi10,cosfi13,sinfi13,cosfi12,sinfi12,
cosfi15,sinfi15,cosfi14,sinfi14,cosfi17,sinfi17,cosfi16,sinfi16,
cosfi19,sinfi19,cosfi18,sinfi18,cosfi20,sinfi20,cosfi21,sinfi21,
fi2,fi3,fi4,fi5,fi6,fi7,fi8,fi9,fi10,fi11,fi12,fi13,fi14,fi15,
fi16,fi17,fi18,fi19,fi20,fi21,fi22;
main()
{
float fi;
int GD=VGA,GM=1;
int key,sing=1,v_p=0,a_p=1,x_x=0;
char buffer [80];
initgraph(&GD,&GM,"c:\\borlandc\\bgi\\");
setbkcolor(0);
for(fi=0;fi<=360;fi+=5)
{
key=bioskey(1);
if(key!=0 && x_x==0) {x_x=1;getch();}
if(key==0x4400) break;
if(key==0x3b00) help();
if(key==0x3d00) {grafiki();key=0;n=1;t=4;Xo1=285;Yo1=350;okno(X-280,DEK*(Y-200),X+240,DEK*(Y+250));}
//if(key==0x231) sing=1;
//if(key==0x332) sing=2;
//if(key==0xb30) sing=0;
if(key==0x3920) getch();
if(key==0x11b) {n=1;t=4;Xo1=285;Yo1=350;}
if(key==0x4e2b ) {n+=1;}
if(key==0x4a2d && n>1) {n-=1;}
if(key==0x4800 ) {Yo1+=10*n;getch();}
if(key==0x5000 ) {Yo1-=10*n;getch();}
if(key==0x4b00 ) {Xo1+=10*n;getch();}
if(key==0x4d00 ) {Xo1-=10*n;getch();}
if(key==0x4e2b) t+=1;
if(key==0x4a2d) t-=1;
if(key!=0) {key=0;getch();}
setvisualpage(v_p);
setactivepage(a_p);
setfillstyle(1,3);
okno(X-280,DEK*(Y-200),X+240,DEK*(Y+250));
elips();
raschet(fi);
draw(fi);
setfillstyle(1,8);
bar(0,0,X-281,350);
bar(X+241,0,640,350);
bar(0,0,640,DEK*(Y-200));
bar(0,DEK*(Y+252),640,350);
okno(535,7,635,348);
okno(10,324,530,348);
setcolor(14);
outtextxy(290,338," - Пауза");
outtextxy(15,338," - Начальные параметры");
outtextxy(15,328," - Увеличение и уменьшение");
outtextxy(540,35,"-График");
outtextxy(540,50,"-Выход");
outtextxy(540,20,"-Помощь");
ramka(X-280,DEK*(Y-200),X+240,DEK*(Y+250));
sprintf(buffer,"fi21= %.1f°",RRR);
outtextxy(538,65,buffer);
sprintf(buffer,"fi22= %.1f°",fi22-360);
outtextxy(538,80,buffer);
sprintf(buffer,"fi3= %.1f°",fi3);
outtextxy(538,95,buffer);
sprintf(buffer,"fi4= %.1f°",fi4);
outtextxy(538,110,buffer);
sprintf(buffer,"fi5= %.1f°",fi5);
outtextxy(538,125,buffer);
sprintf(buffer,"fi6= %.1f°",fi6);
outtextxy(538,140,buffer);
sprintf(buffer,"fi7= %.1f°",fi7);
outtextxy(538,155,buffer);
sprintf(buffer,"fi8= %.1f°",fi8);
outtextxy(538,170,buffer);
sprintf(buffer,"fi9= %.1f°",fi9);
outtextxy(538,185,buffer);
sprintf(buffer,"fi10= %.1f°",fi10);
outtextxy(538,200,buffer);
sprintf(buffer,"fi11= %.1f°",fi11);
outtextxy(538,215,buffer);
sprintf(buffer,"fi12= %.1f°",fi12);
outtextxy(538,230,buffer);
sprintf(buffer,"fi13= %.1f°",fi13);
outtextxy(538,245,buffer);
sprintf(buffer,"fi14= %.1f°",fi14);
outtextxy(538,260,buffer);
sprintf(buffer,"fi15= %.1f°",fi15);
outtextxy(538,275,buffer);
sprintf(buffer,"fi16= %.1f°",fi16);
outtextxy(538,290,buffer);
sprintf(buffer,"fi17= %.1f°",fi17);
outtextxy(538,305,buffer);
sprintf(buffer,"fi18= %.1f°",fi18);
outtextxy(538,320,buffer);
sprintf(buffer,"fi19= %.1f°",fi19);
outtextxy(538,335,buffer);
setvisualpage(a_p);
delay(67);
if(v_p==0) v_p=1; else v_p=0;
if(a_p==0) a_p=1; else a_p=0;
if(fi>=360) fi=0;
}
getch();
closegraph();
return 0;
}
traek1()
{
float fi;
float N,M,Xmin=+32768,Xmax=-32768,Ymin=+32768,Ymax=-32768;
int i=0;
for(fi=0;fi<=360;fi+=1)
{
raschet(fi);
if(Xq if(Xq>Xmax) Xmax=Xq; if(Yq if(Yq>Ymax) Ymax=Yq; } for(fi=0;fi<=360;fi++) { raschet(fi); if(i==1){setcolor(4);line(n*N+Xo1,n*(-M)+Yo1,n*Xq+Xo1,n*(-Yq)+Yo1);} N=Xq;M=Yq;i=1; } setcolor(14); line(n*Xmin+Xo1,n*(-(Ymin+Ymax)/2)+Yo1,n*Xmax+Xo1,n*(-(Ymin+Ymax)/2)+Yo1); line(n*(Xmin+Xmax)/2+Xo1,n*(-Ymax)+Yo1,n*(Xmin+Xmax)/2+Xo1,n*(-Ymin)+Yo1); fi=0; return 0; } void raschet(float fi) { Xa1=O1A1*cos(fi*RAD); Ya1=O1A1*sin(fi*RAD); Xa2=Xo5+O5A2*cos((87-fi)*RAD); Ya2=Yo5+O5A2*sin((87-fi)*RAD); Xf=O1F*cos((fi+gam3)*RAD); Yf=O1F*sin((fi+gam3)*RAD); A=pow(Xf-Xo4,2)+pow(Yf-Yo4,2)+KO4*KO4-FK*FK; B=2*(Xf-Xo4)*KO4; C=2*(Yf-Yo4)*KO4; cosfi3=(A*B-C*sqrt(B*B+C*C-A*A))/(B*B+C*C); sinfi3=(A*C+B*sqrt(B*B+C*C-A*A))/(B*B+C*C); if(cosfi3>=0 && sinfi3>=0) fi3=180/M_PI*acos(cosfi3); if(cosfi30) fi3=180/M_PI*acos(cosfi3); if(cosfi3<0 && sinfi3<0) fi3=180+fabs(180/M_PI*asin(sinfi3)); if(cosfi3>0 && sinfi3<0) fi3=360-180/M_PI*acos(cosfi3); cosfi2=(KO4*cosfi3-(Xf-Xo4))/FK; sinfi2=(KO4*sinfi3-(Yf-Yo4))/FK; if(cosfi2>=0 && sinfi2>=0) fi2=180/M_PI*acos(cosfi2); if(cosfi20) fi2=180/M_PI*acos(cosfi2); if(cosfi2<0 && sinfi2<0) fi2=180+fabs(180/M_PI*asin(sinfi2)); if(cosfi2>0 && sinfi2<0) fi2=360-180/M_PI*acos(cosfi2); Xm=Xo4+O4M*(cosfi3*cos(gam2*RAD)-sinfi3*sin(gam2*RAD)); Ym=Yo4+O4M*(sinfi3*cos(gam2*RAD)+sin(gam2*RAD)*cosfi3); Xk=Xf+FK*cosfi2; Yk=Yf+FK*sinfi2; Xd=Xo2+O2D*cos((90+beta)*RAD); Yd=Yo2+O2D*sin((90+beta)*RAD); A2=pow(Xa1-Xd,2)+pow(Ya1-Yd,2)+DB*DB-A1B*A1B; B2=2*(Xa1-Xd)*DB; C2=2*(Ya1-Yd)*DB; cosfi5=(A2*B2+C2*sqrt(B2*B2+C2*C2-A2*A2))/(B2*B2+C2*C2); sinfi5=(A2*C2-B2*sqrt(B2*B2+C2*C2-A2*A2))/(B2*B2+C2*C2); if(cosfi5>=0 && sinfi5>=0) fi5=180/M_PI*acos(cosfi5); if(cosfi50) fi5=180/M_PI*acos(cosfi5); if(cosfi5<0 && sinfi5<0) fi5=180+fabs(180/M_PI*asin(sinfi5)); if(cosfi5>0 && sinfi5<0) fi5=360-180/M_PI*acos(cosfi5); cosfi4=(DB*cosfi5-(Xa1-Xd))/A1B; sinfi4=(DB*sinfi5-(Ya1-Yd))/A1B; if(cosfi4>=0 && sinfi4>=0) fi4=180/M_PI*acos(cosfi4); if(cosfi40) fi4=180/M_PI*acos(cosfi4); if(cosfi4<0 && sinfi4<0) fi4=180+fabs(180/M_PI*asin(sinfi4)); if(cosfi4>0 && sinfi4<0) fi4=360-180/M_PI*acos(cosfi4); Xb=Xa1+A1B*cosfi4; Yb=Ya1+A1B*sinfi4; A3=pow(Xb-Xo3,2)+pow(Yb-Yo3,2)+O3C*O3C-BC*BC; B3=2*(Xb-Xo3)*O3C; C3=2*(Yb-Yo3)*O3C; cosfi7=(A3*B3-C3*sqrt(B3*B3+C3*C3-A3*A3))/(B3*B3+C3*C3); sinfi7=(A3*C3+B3*sqrt(B3*B3+C3*C3-A3*A3))/(B3*B3+C3*C3); if(cosfi7>=0 && sinfi7>=0) fi7=180/M_PI*acos(cosfi7); if(cosfi70) fi7=180/M_PI*acos(cosfi7); if(cosfi7<0 && sinfi7<0) fi7=180+fabs(180/M_PI*asin(sinfi7)); if(cosfi7>0 && sinfi7<0) fi7=360-180/M_PI*acos(cosfi7); cosfi6=(O3C*cosfi7-(Xb-Xo3))/BC; sinfi6=(O3C*sinfi7-(Yb-Yo3))/BC; if(cosfi6>=0 && sinfi6>=0) fi6=180/M_PI*acos(cosfi6); if(cosfi60) fi6=180/M_PI*acos(cosfi6); if(cosfi6<0 && sinfi6<0) fi6=180+fabs(180/M_PI*asin(sinfi6)); if(cosfi6>0 && sinfi6<0) fi6=360-180/M_PI*acos(cosfi6); Xc=Xo3+O3C*cosfi7; Yc=Yo3+O3C*sinfi7; Xe=Xo3+O3E*(cosfi7*cos(gam1*RAD)-sinfi7*sin(gam1*RAD)); Ye=Yo3+O3E*(sinfi7*cos(gam1*RAD)+sin(gam1*RAD)*cosfi7); A4=pow(Xe-Xm,2)+pow(Ye-Ym,2)+MN*MN-EN*EN; B4=2*(Xe-Xm)*MN; C4=2*(Ye-Ym)*MN; cosfi9=(A4*B4-C4*sqrt(B4*B4+C4*C4-A4*A4))/(B4*B4+C4*C4); sinfi9=(A4*C4+B4*sqrt(B4*B4+C4*C4-A4*A4))/(B4*B4+C4*C4); if(cosfi9>=0 && sinfi9>=0) fi9=180/M_PI*acos(cosfi9); if(cosfi90) fi9=180/M_PI*acos(cosfi9); if(cosfi9<0 && sinfi9<0) fi9=180+fabs(180/M_PI*asin(sinfi9)); if(cosfi9>0 && sinfi9<0) fi9=360-180/M_PI*acos(cosfi9); cosfi8=(MN*cosfi9-(Xe-Xm))/EN; sinfi8=(MN*sinfi9-(Ye-Ym))/EN; if(cosfi8>=0 && sinfi8>=0) fi8=180/M_PI*acos(cosfi8); if(cosfi80) fi8=180/M_PI*acos(cosfi8); if(cosfi8<0 && sinfi8<0) fi8=180+fabs(180/M_PI*asin(sinfi8)); if(cosfi8>0 && sinfi8<0) fi8=360-180/M_PI*acos(cosfi8); Xn=Xe+EN*cosfi8; Yn=Ye+EN*sinfi8; Xp=Xe+EP*(cosfi8*EP/EN-sinfi8*PN/EN); Yp=Ye+EP*(sinfi8*EP/EN+cosfi8*PN/EN); Xz=Xe+xq*(cosfi8*EP/EN-sinfi8*PN/EN); Yz=Ye+xq*(sinfi8*EP/EN+cosfi8*PN/EN); Xq=Xz+yq*((cosfi8*EP/EN-sinfi8*PN/EN)*cos(pi/2)-sin(pi/2)*(sinfi8*EP/EN+cosfi8*PN/EN)); Yq=Yz+yq*((sinfi8*EP/EN+cosfi8*PN/EN)*cos(pi/2)+sin(pi/2)*(cosfi8*EP/EN-sinfi8*PN/EN)); A5=pow(Xc-Xo6,2)+pow(Yc-Yo6,2)+O6R*O6R-CR*CR; B5=2*(Xc-Xo6)*O6R; C5=2*(Yc-Yo6)*O6R; cosfi11=(A5*B5-C5*sqrt(B5*B5+C5*C5-A5*A5))/(B5*B5+C5*C5); sinfi11=(A5*C5+B5*sqrt(B5*B5+C5*C5-A5*A5))/(B5*B5+C5*C5); if(cosfi11>=0 && sinfi11>=0) fi11=180/M_PI*acos(cosfi11); if(cosfi110) fi11=180/M_PI*acos(cosfi11); if(cosfi11<0 && sinfi11<0) fi11=180+fabs(180/M_PI*asin(sinfi11)); if(cosfi11>0 && sinfi11<0) fi11=360-180/M_PI*acos(cosfi11); cosfi10=(O6R*cosfi11-(Xc-Xo6))/CR; sinfi10=(O6R*sinfi11-(Yc-Yo6))/CR; if(cosfi10>=0 && sinfi10>=0) fi10=180/M_PI*acos(cosfi10); if(cosfi100) fi10=180/M_PI*acos(cosfi10); if(cosfi10<0 && sinfi10<0) fi10=180+fabs(180/M_PI*asin(sinfi10)); if(cosfi10>0 && sinfi10<0) fi10=360-180/M_PI*acos(cosfi10); Xr=Xc+CR*cosfi10; Yr=Yc+CR*sinfi10; Xs=Xo6+O6S*(cosfi11*cos(gam4*RAD)-sinfi11*sin(gam4*RAD)); Ys=Yo6+O6S*(sinfi11*cos(gam4*RAD)+sin(gam4*RAD)*cosfi11); A6=pow(Xs-Xo8,2)+pow(Ys-Yo8,2)+O8V*O8V-SV*SV; B6=2*(Xs-Xo8)*O8V; C6=2*(Ys-Yo8)*O8V; cosfi13=(A6*B6-C6*sqrt(B6*B6+C6*C6-A6*A6))/(B6*B6+C6*C6); sinfi13=(A6*C6+B6*sqrt(B6*B6+C6*C6-A6*A6))/(B6*B6+C6*C6); if(cosfi13>=0 && sinfi13>=0) fi13=180/M_PI*acos(cosfi13); if(cosfi130) fi13=180/M_PI*acos(cosfi13); if(cosfi13<0 && sinfi13<0) fi13=180+fabs(180/M_PI*asin(sinfi13)); if(cosfi13>0 && sinfi13<0) fi13=360-180/M_PI*acos(cosfi13); cosfi12=(O8V*cosfi13-(Xs-Xo8))/SV; sinfi12=(O8V*sinfi13-(Ys-Yo8))/SV; if(cosfi12>=0 && sinfi12>=0) fi12=180/M_PI*acos(cosfi12); if(cosfi120) fi12=180/M_PI*acos(cosfi12); if(cosfi12<0 && sinfi12<0) fi12=180+fabs(180/M_PI*asin(sinfi12)); if(cosfi12>0 && sinfi12<0) fi12=360-180/M_PI*acos(cosfi12); Xv=Xs+SV*cosfi12; Yv=Ys+SV*sinfi12; Xw=Xo8-O8W*cosfi13; Yw=Yo8-O8W*sinfi13; A7=pow(Xa2-Xo7,2)+pow(Ya2-Yo7,2)+O7H*O7H-A2H*A2H; B7=2*(Xa2-Xo7)*O7H; C7=2*(Ya2-Yo7)*O7H; cosfi15=(A7*B7-C7*sqrt(B7*B7+C7*C7-A7*A7))/(B7*B7+C7*C7); sinfi15=(A7*C7+B7*sqrt(B7*B7+C7*C7-A7*A7))/(B7*B7+C7*C7); if(cosfi15>=0 && sinfi15>=0) fi15=180/M_PI*acos(cosfi15); if(cosfi150) fi15=180/M_PI*acos(cosfi15); if(cosfi15<0 && sinfi15<0) fi15=180+fabs(180/M_PI*asin(sinfi15)); if(cosfi15>0 && sinfi15<0) fi15=360-180/M_PI*acos(cosfi15); cosfi14=(O7H*cosfi15-(Xa2-Xo7))/A2H; sinfi14=(O7H*sinfi15-(Ya2-Yo7))/A2H; if(cosfi14>=0 && sinfi14>=0) fi14=180/M_PI*acos(cosfi14); if(cosfi140) fi14=180/M_PI*acos(cosfi14); if(cosfi14<0 && sinfi14<0) fi14=180+fabs(180/M_PI*asin(sinfi14)); if(cosfi14>0 && sinfi14<0) fi14=360-180/M_PI*acos(cosfi14); Xh=Xa2+A2H*cosfi14; Yh=Ya2+A2H*sinfi14; Xi=Xo7-O7I*cosfi15; Yi=Yo7-O7I*sinfi15; A8=pow(Xw-Xx,2)+pow(Yw-Yx,2)+LX*LX-WL*WL; B8=2*(Xw-Xx)*LX; C8=2*(Yw-Yx)*LX; cosfi17=(A8*B8-C8*sqrt(B8*B8+C8*C8-A8*A8))/(B8*B8+C8*C8); sinfi17=(A8*C8+B8*sqrt(B8*B8+C8*C8-A8*A8))/(B8*B8+C8*C8); if(cosfi17>=0 && sinfi17>=0) fi17=180/M_PI*acos(cosfi17); if(cosfi170) fi17=180/M_PI*acos(cosfi17); if(cosfi17<0 && sinfi17<0) fi17=180+fabs(180/M_PI*asin(sinfi17)); if(cosfi17>0 && sinfi17<0) fi17=360-180/M_PI*acos(cosfi17); cosfi16=(LX*cosfi17-(Xw-Xx))/WL; sinfi16=(LX*sinfi17-(Yw-Yx))/WL; if(cosfi16>=0 && sinfi16>=0) fi16=180/M_PI*acos(cosfi16); if(cosfi160) fi16=180/M_PI*acos(cosfi16); if(cosfi16<0 && sinfi16<0) fi16=180+fabs(180/M_PI*asin(sinfi16)); if(cosfi16>0 && sinfi16<0) fi16=360-180/M_PI*acos(cosfi16); Xl=Xw+WL*cosfi16; Yl=Yw+WL*sinfi16; A9=pow(Xi-Xu,2)+pow(Yi-Yu,2)+JU*JU-IJ*IJ; B9=2*(Xi-Xu)*JU; C9=2*(Yi-Yu)*JU; cosfi19=(A9*B9+C9*sqrt(B9*B9+C9*C9-A9*A9))/(B9*B9+C9*C9); sinfi19=(A9*C9-B9*sqrt(B9*B9+C9*C9-A9*A9))/(B9*B9+C9*C9); if(cosfi19>=0 && sinfi19>=0) fi19=180/M_PI*acos(cosfi19); if(cosfi190) fi19=180/M_PI*acos(cosfi19); if(cosfi19<0 && sinfi19<0) fi19=180+fabs(180/M_PI*asin(sinfi19)); if(cosfi19>0 && sinfi19<0) fi19=360-180/M_PI*acos(cosfi19); cosfi18=(JU*cosfi19-(Xi-Xu))/IJ; sinfi18=(JU*sinfi19-(Yi-Yu))/IJ; if(cosfi18>=0 && sinfi18>=0) fi18=180/M_PI*acos(cosfi18); if(cosfi180) fi18=180/M_PI*acos(cosfi18); if(cosfi18<0 && sinfi18<0) fi18=180+fabs(180/M_PI*asin(sinfi18)); if(cosfi18>0 && sinfi18<0) fi18=360-180/M_PI*acos(cosfi18); Xj=Xi+IJ*cosfi18; Yj=Yi+IJ*sinfi18; Xy=Xu+UY*(cosfi19*cos(gam5*RAD)-sinfi19*sin(gam5*RAD)); Yy=Yu+UY*(sinfi19*cos(gam5*RAD)+sin(gam5*RAD)*cosfi19); q=sqrt(pow(Xl-Xy,2)+pow(Yl-Yy,2)); L1y=sqrt(q*q-LL1*LL1); A10=LL1; B10=L1y; C10=Yl-Yy; sinfi20=(-B10*C10-A10*sqrt(A10*A10+B10*B10-C10*C10))/(A10*A10+B10*B10); cosfi20=(-A10*C10+B10*sqrt(A10*A10+B10*B10-C10*C10))/(A10*A10+B10*B10); if(cosfi20>=0 && sinfi20>=0) fi20=180/M_PI*acos(cosfi20); if(cosfi200) fi20=180/M_PI*acos(cosfi20); if(cosfi20<0 && sinfi20<0) fi20=180+fabs(180/M_PI*asin(sinfi20)); if(cosfi20>0 && sinfi20<0) fi20=360-180/M_PI*acos(cosfi20); Xl1=Xl+LL1*cos((fi20+QQ)*RAD); Yl1=Yl+LL1*sin((fi20+QQ)*RAD); Xzb=Xl1+L1zb*cos(fi20*RAD); Yzb=Yl1+L1zb*sin(fi20*RAD); Xqb=Xzb+ZQb*cos((fi20-QQ)*RAD); Yqb=Yzb+ZQb*sin((fi20-QQ)*RAD); RRR=sqrt(pow(Xl-Xqb,2)+pow(Yl-Yqb,2)); return; } void elips() { float fi; for(fi=0;fi<=360;fi++) { raschet(fi); putpixel(n*Xq+Xo1,DEK*(n*(-Yq)+Yo1),4); putpixel(n*Xqb+Xo1,DEK*(n*(-Yqb)+Yo1),4); } return; } void draw(float fi) { /*Стойки*/ stoyka(Xo1,Yo1); stoyka(n*Xo2+Xo1,n*(-Yo2)+Yo1); stoyka(n*Xo3+Xo1,n*(-Yo3)+Yo1); stoyka(n*Xo4+Xo1,n*(-Yo4)+Yo1); stoyka(n*Xd+Xo1,n*(-Yd)+Yo1); stoyka(n*Xo6+Xo1,n*(-Yo6)+Yo1); stoyka(n*Xo8+Xo1,n*(-Yo8)+Yo1); stoyka(n*Xo5+Xo1,n*(-Yo5)+Yo1); stoyka(n*Xo7+Xo1,n*(-Yo7)+Yo1); /*Звенья*/ setlinestyle(0,1,3); setcolor(1); line(Xo1,DEK*Yo1,n*Xa1+Xo1,DEK*(n*(-Ya1)+Yo1)); line(Xo1,DEK*Yo1,n*Xf+Xo1,DEK*(n*(-Yf)+Yo1)); line(n*Xo4+Xo1,DEK*(n*(-Yo4)+Yo1),n*Xk+Xo1,DEK*(n*(-Yk)+Yo1)); line(n*Xf+Xo1,DEK*(n*(-Yf)+Yo1),n*Xk+Xo1,DEK*(n*(-Yk)+Yo1)); line(n*Xm+Xo1,DEK*(n*(-Ym)+Yo1),n*Xk+Xo1,DEK*(n*(-Yk)+Yo1)); line(n*Xo4+Xo1,DEK*(n*(-Yo4)+Yo1),n*Xm+Xo1,DEK*(n*(-Ym)+Yo1)); line(n*Xd+Xo1,DEK*(n*(-Yd)+Yo1),n*Xb+Xo1,DEK*(n*(-Yb)+Yo1)); line(n*Xa1+Xo1,DEK*(n*(-Ya1)+Yo1),n*Xb+Xo1,DEK*(n*(-Yb)+Yo1)); line(n*Xc+Xo1,DEK*(n*(-Yc)+Yo1),n*Xb+Xo1,DEK*(n*(-Yb)+Yo1)); line(n*Xc+Xo1,DEK*(n*(-Yc)+Yo1),n*Xo3+Xo1,DEK*(n*(-Yo3)+Yo1)); line(n*Xo2+Xo1,DEK*(n*(-Yo2)+Yo1),n*Xd+Xo1,DEK*(n*(-Yd)+Yo1)); line(n*Xe+Xo1,DEK*(n*(-Ye)+Yo1),n*Xc+Xo1,DEK*(n*(-Yc)+Yo1)); line(n*Xo3+Xo1,DEK*(n*(-Yo3)+Yo1),n*Xe+Xo1,DEK*(n*(-Ye)+Yo1)); line(n*Xe+Xo1,DEK*(n*(-Ye)+Yo1),n*Xn+Xo1,DEK*(n*(-Yn)+Yo1)); line(n*Xn+Xo1,DEK*(n*(-Yn)+Yo1),n*Xm+Xo1,DEK*(n*(-Ym)+Yo1)); line(n*Xe+Xo1,DEK*(n*(-Ye)+Yo1),n*Xp+Xo1,DEK*(n*(-Yp)+Yo1)); line(n*Xn+Xo1,DEK*(n*(-Yn)+Yo1),n*Xp+Xo1,DEK*(n*(-Yp)+Yo1)); line(n*Xz+Xo1,DEK*(n*(-Yz)+Yo1),n*Xq+Xo1,DEK*(n*(-Yq)+Yo1)); line(n*Xc+Xo1,DEK*(n*(-Yc)+Yo1),n*Xr+Xo1,DEK*(n*(-Yr)+Yo1)); line(n*Xr+Xo1,DEK*(n*(-Yr)+Yo1),n*Xo6+Xo1,DEK*(n*(-Yo6)+Yo1)); line(n*Xs+Xo1,DEK*(n*(-Ys)+Yo1),n*Xo6+Xo1,DEK*(n*(-Yo6)+Yo1)); line(n*Xr+Xo1,DEK*(n*(-Yr)+Yo1),n*Xs+Xo1,DEK*(n*(-Ys)+Yo1)); line(n*Xs+Xo1,DEK*(n*(-Ys)+Yo1),n*Xv+Xo1,DEK*(n*(-Yv)+Yo1)); line(n*Xv+Xo1,DEK*(n*(-Yv)+Yo1),n*Xo8+Xo1,DEK*(n*(-Yo8)+Yo1)); line(n*Xw+Xo1,DEK*(n*(-Yw)+Yo1),n*Xo8+Xo1,DEK*(n*(-Yo8)+Yo1)); line(n*Xo5+Xo1,DEK*(n*(-Yo5)+Yo1),n*Xa2+Xo1,DEK*(n*(-Ya2)+Yo1)); line(n*Xh+Xo1,DEK*(n*(-Yh)+Yo1),n*Xa2+Xo1,DEK*(n*(-Ya2)+Yo1)); line(n*Xh+Xo1,DEK*(n*(-Yh)+Yo1),n*Xo7+Xo1,DEK*(n*(-Yo7)+Yo1)); line(n*Xo7+Xo1,DEK*(n*(-Yo7)+Yo1),n*Xi+Xo1,DEK*(n*(-Yi)+Yo1)); line(n*Xw+Xo1,DEK*(n*(-Yw)+Yo1),n*Xl+Xo1,DEK*(n*(-Yl)+Yo1)); line(n*Xl+Xo1,DEK*(n*(-Yl)+Yo1),n*Xx+Xo1,DEK*(n*(-Yx)+Yo1)); line(n*Xx+Xo1,DEK*(n*(-Yx)+Yo1),n*Xu+Xo1,DEK*(n*(-Yu)+Yo1)); line(n*Xi+Xo1,DEK*(n*(-Yi)+Yo1),n*Xj+Xo1,DEK*(n*(-Yj)+Yo1)); line(n*Xj+Xo1,DEK*(n*(-Yj)+Yo1),n*Xu+Xo1,DEK*(n*(-Yu)+Yo1)); line(n*Xx+Xo1,DEK*(n*(-Yx)+Yo1),n*(Xx+16)+Xo1,DEK*(n*(-Yx)+Yo1)); line(n*Xu+Xo1,DEK*(n*(-Yu)+Yo1),n*Xy+Xo1,DEK*(n*(-Yy)+Yo1)); line(n*Xj+Xo1,DEK*(n*(-Yj)+Yo1),n*Xy+Xo1,DEK*(n*(-Yy)+Yo1)); //line(n*Xl+Xo1,DEK*(n*(-Yl)+Yo1),n*Xzb+Xo1,DEK*(n*(-Yzb)+Yo1)); line(n*Xzb+Xo1,DEK*(n*(-Yzb)+Yo1),n*Xqb+Xo1,DEK*(n*(-Yqb)+Yo1)); line(n*Xl+Xo1,DEK*(n*(-Yl)+Yo1),n*Xl1+Xo1,DEK*(n*(-Yl1)+Yo1)); line(n*Xl1+Xo1,DEK*(n*(-Yl1)+Yo1),n*Xzb+Xo1,DEK*(n*(-Yzb)+Yo1)); setlinestyle(0,0,1); setcolor(4); line(50,DEK*(n*(-Ystola)+Yo1),450,DEK*(n*(-Ystola)+Yo1)); line(50,DEK*(n*(-Ystola-2.5)+Yo1),450,DEK*(n*(-Ystola-2.5)+Yo1)); line(50,DEK*(n*(-Ystola-3.5)+Yo1),450,DEK*(n*(-Ystola-3.5)+Yo1)); line(Xo1,DEK*(n*(-0)+Yo1),Xo1,DEK*(n*(-Ystola-40)+Yo1)); polzushka(n*Xy+Xo1,n*(-Yy)+Yo1,-fi20); setlinestyle(0,0,3); arc(Xo1,DEK*Yo1,fi+gam3,fi,6); arc(Xo1+n*Xo8,DEK*(n*(-Yo8)+Yo1),fi13+180,fi13,8); arc(Xo1+n*Xo7,DEK*(n*(-Yo7)+Yo1),fi15+180,fi15,8); arc(Xo1+n*Xu,DEK*(n*(-Yu)+Yo1),fi19,fi19+gam5,7); arc(Xo1+n*Xx,DEK*(n*(-Yx)+Yo1),0,240,7); setlinestyle(0,0,1); setfillstyle(1,3); setcolor(1); fillellipse(Xo1,DEK*Yo1,R_C,R_C); fillellipse(Xo1+Xo3*n,DEK*(Yo1-Yo3*n),R_C,R_C); fillellipse(Xo1+Xo4*n,DEK*(Yo1-Yo4*n),R_C,R_C); fillellipse(Xo1+Xo2*n,DEK*(Yo1-Yo2*n),R_C,R_C); fillellipse(Xo1+Xo6*n,DEK*(Yo1-Yo6*n),R_C,R_C); fillellipse(Xo1+Xo7*n,DEK*(Yo1-Yo7*n),R_C,R_C); fillellipse(Xo1+Xo5*n,DEK*(Yo1-Yo5*n),R_C,R_C); fillellipse(Xo1+Xo8*n,DEK*(Yo1-Yo8*n),R_C,R_C); fillellipse(n*Xa1+Xo1,DEK*(n*(-Ya1)+Yo1),R_C,R_C); fillellipse(n*Xa2+Xo1,DEK*(n*(-Ya2)+Yo1),R_C,R_C); fillellipse(n*Xh+Xo1,DEK*(n*(-Yh)+Yo1),R_C,R_C); fillellipse(n*Xl+Xo1,DEK*(n*(-Yl)+Yo1),R_C,R_C); fillellipse(n*Xf+Xo1,DEK*(n*(-Yf)+Yo1),R_C,R_C); fillellipse(n*Xr+Xo1,DEK*(n*(-Yr)+Yo1),R_C,R_C); fillellipse(n*Xs+Xo1,DEK*(n*(-Ys)+Yo1),R_C,R_C); fillellipse(n*Xk+Xo1,DEK*(n*(-Yk)+Yo1),R_C,R_C); fillellipse(n*Xm+Xo1,DEK*(n*(-Ym)+Yo1),R_C,R_C); fillellipse(n*Xd+Xo1,DEK*(n*(-Yd)+Yo1),R_C,R_C); fillellipse(n*Xb+Xo1,DEK*(n*(-Yb)+Yo1),R_C,R_C); fillellipse(n*Xc+Xo1,DEK*(n*(-Yc)+Yo1),R_C,R_C); fillellipse(n*Xe+Xo1,DEK*(n*(-Ye)+Yo1),R_C,R_C); fillellipse(n*Xn+Xo1,DEK*(n*(-Yn)+Yo1),R_C,R_C); fillellipse(n*Xp+Xo1,DEK*(n*(-Yp)+Yo1),R_C,R_C); fillellipse(n*Xv+Xo1,DEK*(n*(-Yv)+Yo1),R_C,R_C); fillellipse(n*Xw+Xo1,DEK*(n*(-Yw)+Yo1),R_C,R_C); fillellipse(n*Xi+Xo1,DEK*(n*(-Yi)+Yo1),R_C,R_C); fillellipse(n*Xx+Xo1,DEK*(n*(-Yx)+Yo1),R_C,R_C); fillellipse(n*Xu+Xo1,DEK*(n*(-Yu)+Yo1),R_C,R_C); fillellipse(n*Xj+Xo1,DEK*(n*(-Yj)+Yo1),R_C,R_C); fillellipse(n*Xy+Xo1,DEK*(n*(-Yy)+Yo1),R_C,R_C); /*Текст*/ setcolor(14); outtextxy(Xo1,DEK*Yo1+20,"O1"); outtextxy(Xo1+Xo3*n,DEK*(Yo1-Yo3*n)+20,"O3"); outtextxy(Xo1+Xo4*n-35,DEK*(Yo1-Yo4*n)+10,"O4"); outtextxy(Xo1+Xo6*n-5,DEK*(Yo1-Yo6*n)-17,"O6"); outtextxy(Xo1+Xo8*n+15,DEK*(Yo1-Yo8*n)-7,"O8"); outtextxy(Xo1+Xo7*n+15,DEK*(Yo1-Yo7*n)-7,"O7"); outtextxy(Xo1+Xo5*n+15,DEK*(Yo1-Yo5*n)-7,"O5"); outtextxy(Xo1+Xo2*n,DEK*(Yo1-Yo2*n)+20,"O2"); outtextxy(n*Xa1+Xo1-5,DEK*(n*(-Ya1)+Yo1-15),"A1"); outtextxy(n*Xa2+Xo1-5,DEK*(n*(-Ya2)+Yo1-15),"A2"); outtextxy(n*Xh+Xo1-5,DEK*(n*(-Yh)+Yo1-15),"H"); outtextxy(n*Xi+Xo1-5,DEK*(n*(-Yi)+Yo1-15),"I"); outtextxy(n*Xf+Xo1+5,DEK*(n*(-Yf)+Yo1-15),"F"); outtextxy(n*Xk+Xo1-3,DEK*(n*(-Yk)+Yo1+10),"K"); outtextxy(n*Xm+Xo1-15,DEK*(n*(-Ym)+Yo1),"M"); outtextxy(n*Xd+Xo1-15,DEK*(n*(-Yd)+Yo1+5),"D"); outtextxy(n*Xb+Xo1-3,DEK*(n*(-Yb)+Yo1+10),"B"); outtextxy(n*Xc+Xo1+10,DEK*(n*(-Yc)+Yo1-10),"C"); outtextxy(n*Xe+Xo1,DEK*(n*(-Ye)+Yo1-17),"E"); outtextxy(n*Xn+Xo1-3,DEK*(n*(-Yn)+Yo1+10),"N"); outtextxy(n*Xp+Xo1,DEK*(n*(-Yp)+Yo1-17),"P"); outtextxy(n*Xs+Xo1-7,DEK*(n*(-Ys)+Yo1-17),"S"); outtextxy(n*Xr+Xo1,DEK*(n*(-Yr)+Yo1-17),"R"); outtextxy(n*Xv+Xo1,DEK*(n*(-Yv)+Yo1-17),"V"); outtextxy(n*Xw+Xo1,DEK*(n*(-Yw)+Yo1-17),"W"); outtextxy(n*Xl+Xo1,DEK*(n*(-Yl)+Yo1-17),"L"); outtextxy(n*Xx+Xo1,DEK*(n*(-Yx)+Yo1-17),"X"); outtextxy(n*Xu+Xo1,DEK*(n*(-Yu)+Yo1-17),"U"); outtextxy(n*Xj+Xo1,DEK*(n*(-Yj)+Yo1-17),"J"); outtextxy(n*Xy+Xo1,DEK*(n*(-Yy)+Yo1-17),"Y"); return; } void stoyka(float X, float Y) { setlinestyle(0,0,3); setfillstyle(1,3); setcolor(4); line(X,DEK*Y,X+5,DEK*Y+10); line(X,DEK*Y,X-5,DEK*Y+10); line(X-10,DEK*Y+10,X+10,DEK*Y+10); setlinestyle(0,0,1); //fillellipse(X,DEK*Y,R_C,R_C); line(X-5,DEK*Y+10,X-9,DEK*Y+14); line(X,DEK*Y+10,X-4,DEK*Y+14); line(X+5,DEK*Y+10,X+1,DEK*Y+14); line(X+10,DEK*Y+10,X+6,DEK*Y+14); return; } void polzushka(float X, float Y, float fi) { setlinestyle(0,0,3); setfillstyle(1,3); setcolor(1); line(X+15*cos((fi+30)*RAD),DEK*(Y+15*sin((fi+30)*RAD)),X+15*cos((fi+150)*RAD),DEK*(Y+15*sin((fi+150)*RAD))); line(X+15*cos((fi+210)*RAD),DEK*(Y+15*sin((fi+210)*RAD)),X+15*cos((fi+330)*RAD),DEK*(Y+15*sin((fi+330)*RAD))); line(X+15*cos((fi+30)*RAD),DEK*(Y+15*sin((fi+30)*RAD)),X+15*cos((fi+330)*RAD),DEK*(Y+15*sin((fi+330)*RAD))); line(X+15*cos((fi+210)*RAD),DEK*(Y+15*sin((fi+210)*RAD)),X+15*cos((fi+150)*RAD),DEK*(Y+15*sin((fi+150)*RAD))); setlinestyle(0,0,1); //fillellipse(X,DEK*Y,R_C,R_C); return; } void okno(float x1,float y1,float x2,float y2) { setfillstyle(1,7); setlinestyle(0,1,1); bar(x1+2,y1+2,x2-2,y2-2); setcolor(15); line(x1,y1,x2,y1); line(x1,y1,x1,y2); line(x1+1,y1+1,x1+1,y2-1); line(x1+1,y1+1,x2-1,y1+1); setcolor(8); line(x2-1,y1+1,x2-1,y2-1); line(x1+1,y2-1,x2-1,y2-1); setcolor(0); line(x1,y2,x2,y2); line(x2,y1,x2,y2); return; } void ramka(float x1,float y1,float x2,float y2) { setlinestyle(0,1,1); setcolor(15); line(x1,y1,x2,y1); line(x1,y1,x1,y2); line(x1+1,y1+1,x1+1,y2-1); line(x1+1,y1+1,x2-1,y1+1); setcolor(8); line(x2-1,y1+1,x2-1,y2-1); line(x1+1,y2-1,x2-1,y2-1); setcolor(0); line(x1,y2,x2,y2); line(x2,y1,x2,y2); return; } void help() { char text[]="Машина 131 ряда"; int key; setfillstyle(1,8); bar(0,0,640,350); okno(140,50,500,300); setcolor(1); outtextxy(150,60,text); do { key=bioskey(1); if(key==0x11b) break; if(key!=0) {key=0;getch();} } while(key!=0x11b); return; } void grafiki() { int key,x_x=0,fi,t=1; setgraphmode(2); setfillstyle(1,8); bar(0,0,640,480); okno(X-280,DEK*(Y-200),X+235,DEK*(Y+450)); osi(45,430,475,400,1); setcolor(14); outtextxy(640,20,"Вывод графика:"); outtextxy(640,450,"-Выход"); grafik(1); do { key=bioskey(1); if(key!=0 && x_x==0) {x_x=1;getch();} if(key==0x4b00 && t>1) {t--;getch();} if(key==0x4d00 && t<19) {t++;getch();} if(key!=0) grafik(t); if(key==0x11b) break; if(key!=0) {key=0;getch();} if(fi>=360) fi=0; } while(1==1); getch(); setgraphmode(1); return; } void osi(float x, float y, float l_x, float l_y, int color) { int i; char buffer [80]; setcolor(color); line(x,y,x+l_x,y); line(x,y,x,y-l_y); line(x,y-l_y,x-2,y-l_y+10); line(x,y-l_y,x+2,y-l_y+10); line(x+l_x,y,x+l_x-10,y+2); line(x+l_x,y,x+l_x-10,y-2); for(i=10;i<=360;i+=10) { setcolor(6); line(x+i*1.2,y-l_y+40,x+i*1.2,y+1); line(x-1,y-i,x+l_x-45,y-i); setcolor(0); sprintf(buffer,"%d",i); settextstyle(0,0,0); settextjustify(2,1); outtextxy(x-2,y-i+1,buffer); settextstyle(0,1,0); settextjustify(1,2); outtextxy(x+i*1.2,y+3,buffer); } settextstyle(0,0,0); settextjustify(2,1); return; } void grafik(int sign) { float i; okno(X-280,DEK*(Y-200),X+235,DEK*(Y+450)); osi(45,430,475,400,1); if(sign==1)outtextxy(44,45,"fi2"); if(sign==2)outtextxy(44,45,"fi3"); if(sign==3)outtextxy(44,45,"fi4"); if(sign==4)outtextxy(44,45,"fi5"); if(sign==5)outtextxy(44,45,"fi6"); if(sign==6)outtextxy(44,45,"fi7"); if(sign==7)outtextxy(44,45,"fi8"); if(sign==8)outtextxy(44,45,"fi9"); if(sign==9)outtextxy(44,45,"fi10"); if(sign==10)outtextxy(44,45,"fi11"); if(sign==11)outtextxy(44,45,"fi12"); if(sign==12)outtextxy(44,45,"fi13"); if(sign==13)outtextxy(44,45,"fi14"); if(sign==14)outtextxy(44,45,"fi15"); if(sign==15)outtextxy(44,45,"fi16"); if(sign==16)outtextxy(44,45,"fi17"); if(sign==17)outtextxy(44,45,"fi18"); if(sign==18)outtextxy(44,45,"fi19"); if(sign==19)outtextxy(44,45,"fi20"); outtextxy(510,440,"fi"); for(i=0;i<=360;i++) { raschet(i); if(sign==1)putpixel(45+i*1.2,430-fi2,0); if(sign==2)putpixel(45+i*1.2,430-fi3,0); if(sign==3)putpixel(45+i*1.2,430-fi4,0); if(sign==4)putpixel(45+i*1.2,430-fi5,0); if(sign==5)putpixel(45+i*1.2,430-fi6,0); if(sign==6)putpixel(45+i*1.2,430-fi7,0); if(sign==7)putpixel(45+i*1.2,430-fi8,0); if(sign==8)putpixel(45+i*1.2,430-fi9,0); if(sign==9)putpixel(45+i*1.2,430-fi10,0); if(sign==10)putpixel(45+i*1.2,430-fi11,0); if(sign==11)putpixel(45+i*1.2,430-fi12,0); if(sign==12)putpixel(45+i*1.2,430-fi13,0); if(sign==13)putpixel(45+i*1.2,430-fi14,0); if(sign==14)putpixel(45+i*1.2,430-fi15,0); if(sign==15)putpixel(45+i*1.2,430-fi16,0); if(sign==16)putpixel(45+i*1.2,430-fi17,0); if(sign==17)putpixel(45+i*1.2,430-fi18,0); if(sign==18)putpixel(45+i*1.2,430-fi19,0); if(sign==19)putpixel(45+i*1.2,430-fi20,0); } return; }















