#define STRENGTH_SCALE 1.5e7 #define SPRING_SCALE 6.0e6 #define COST_SCALE 375.0 #define MASS_RADIUS 3.0 #define MASS_MASS 10.0 #define WIRE_PERCENT 0.99 #define RIVER_BANK_COLS 5 #define SKY_LINES 40 #define FIXED_X1 ((RIVER_BANK_COLS-1)*FONT_WIDTH) #define FIXED_X2 ((RIVER_BANK_COLS-4)*FONT_WIDTH) #define FIXED_X3 (TEXT_COLS*FONT_WIDTH>>1) #define FIXED_Y1 ((SKY_LINES+1)*FONT_HEIGHT) #define FIXED_Y2 ((SKY_LINES+5)*FONT_HEIGHT) #define FIXED_Y3 ((TEXT_ROWS-8)*FONT_HEIGHT) #define LOAD_WEIGHTS 8 U0 SpanBridge1Init(CMathODE *) { I64 i; MyMass *tmpm; tmpm=PlaceMass(GR_WIDTH-FIXED_X1,FIXED_Y1); tmpm->flags|=MSF_FIXED; tmpm=PlaceMass(GR_WIDTH-FIXED_X2,FIXED_Y1); tmpm->flags|=MSF_FIXED; tmpm=PlaceMass(GR_WIDTH-FIXED_X1,FIXED_Y2); tmpm->flags|=MSF_FIXED; tmpm=PlaceMass(FIXED_X1,FIXED_Y1); tmpm->flags|=MSF_FIXED; tmpm=PlaceMass(FIXED_X2,FIXED_Y1); tmpm->flags|=MSF_FIXED; tmpm=PlaceMass(FIXED_X1,FIXED_Y2); tmpm->flags|=MSF_FIXED; tmpm=PlaceMass(FIXED_X3,FIXED_Y3); tmpm->flags|=MSF_FIXED; for (i=0; i<LOAD_WEIGHTS; i++) { tmpm=PlaceMass(FIXED_X1+(i+1)*(GR_WIDTH-2*FIXED_X1)/(LOAD_WEIGHTS+1), FIXED_Y1); tmpm->load_t=(i+1.0)/LOAD_WEIGHTS; tmpm->color=RED; } DocClear; "$BG,LTCYAN$%h*c" ,SKY_LINES,'\n'; for (i=0; i<10; i++) { "$BG,BROWN$%h*c",RIVER_BANK_COLS,CH_SPACE; "$BG,LTCYAN$%h*c" ,TEXT_COLS-2*RIVER_BANK_COLS,CH_SPACE; "$BG,BROWN$%h*c\n" ,RIVER_BANK_COLS,CH_SPACE; } for (i=0; i<5; i++) { "$BG,BROWN$%h*c",RIVER_BANK_COLS+i,CH_SPACE; "$BG,BLUE$%h*c" ,TEXT_COLS/2-RIVER_BANK_COLS-2*i,CH_SPACE; "$BG,BROWN$%h*c" ,2*i,CH_SPACE; "$BG,BLUE$%h*c" ,TEXT_COLS/2-RIVER_BANK_COLS-2*i,CH_SPACE; "$BG,BROWN$%h*c\n" ,RIVER_BANK_COLS+i,CH_SPACE; } } U0 AdjustLoads(CMathODE *ode) { MyMass *tmpm=ode->next_mass; F64 d,tt=SpanTime/10.0; while (tmpm!=&ode->next_mass) { if (tmpm->load_t) { if (tt) { d=Abs(Sin(tmpm->load_t*pi+tt)); //0.0<=d<=1.0 tmpm->mass=100.0*Sqr(Sqr(d+1.0)); tmpm->radius=7.0*d+2.0; } else { tmpm->mass=MASS_MASS; tmpm->radius=MASS_RADIUS; } } tmpm=tmpm->next; } }