hschumann2/TempleOS-Source-Code
0838
1 2#define STRENGTH_SCALE 1.5e73#define SPRING_SCALE 6.0e64#define COST_SCALE 375.05#define MASS_RADIUS 3.06#define MASS_MASS 10.07#define WIRE_PERCENT 0.998 9#define RIVER_BANK_COLS 510#define SKY_LINES 4011 12#define FIXED_X1 ((RIVER_BANK_COLS-1)*FONT_WIDTH)13#define FIXED_X2 ((RIVER_BANK_COLS-4)*FONT_WIDTH)14#define FIXED_X3 (TEXT_COLS*FONT_WIDTH>>1)15#define FIXED_Y1 ((SKY_LINES+1)*FONT_HEIGHT)16#define FIXED_Y2 ((SKY_LINES+5)*FONT_HEIGHT)17#define FIXED_Y3 ((TEXT_ROWS-8)*FONT_HEIGHT)18 19#define LOAD_WEIGHTS 820 21U0 SpanBridge1Init(CMathODE *)22{23 I64 i;24 25 MyMass *tmpm;26 tmpm=PlaceMass(GR_WIDTH-FIXED_X1,FIXED_Y1);27 tmpm->flags|=MSF_FIXED;28 tmpm=PlaceMass(GR_WIDTH-FIXED_X2,FIXED_Y1);29 tmpm->flags|=MSF_FIXED;30 tmpm=PlaceMass(GR_WIDTH-FIXED_X1,FIXED_Y2);31 tmpm->flags|=MSF_FIXED;32 tmpm=PlaceMass(FIXED_X1,FIXED_Y1);33 tmpm->flags|=MSF_FIXED;34 tmpm=PlaceMass(FIXED_X2,FIXED_Y1);35 tmpm->flags|=MSF_FIXED;36 tmpm=PlaceMass(FIXED_X1,FIXED_Y2);37 tmpm->flags|=MSF_FIXED;38 tmpm=PlaceMass(FIXED_X3,FIXED_Y3);39 tmpm->flags|=MSF_FIXED;40 41 for (i=0;i<LOAD_WEIGHTS;i++) {42 tmpm=PlaceMass(FIXED_X1+(i+1)*(GR_WIDTH-2*FIXED_X1)/(LOAD_WEIGHTS+1),43 FIXED_Y1);44 tmpm->load_t=(i+1.0)/LOAD_WEIGHTS;45 tmpm->color=RED;46 }47 48 DocClear;49 "$BG,LTCYAN$%h*c",SKY_LINES,'\n';50 for (i=0;i<10;i++) {51 "$BG,BROWN$%h*c",RIVER_BANK_COLS,CH_SPACE;52 "$BG,LTCYAN$%h*c",TEXT_COLS-2*RIVER_BANK_COLS,CH_SPACE;53 "$BG,BROWN$%h*c\n",RIVER_BANK_COLS,CH_SPACE;54 }55 for (i=0;i<5;i++) {56 "$BG,BROWN$%h*c",RIVER_BANK_COLS+i,CH_SPACE;57 "$BG,BLUE$%h*c",TEXT_COLS/2-RIVER_BANK_COLS-2*i,CH_SPACE;58 "$BG,BROWN$%h*c",2*i,CH_SPACE;59 "$BG,BLUE$%h*c",TEXT_COLS/2-RIVER_BANK_COLS-2*i,CH_SPACE;60 "$BG,BROWN$%h*c\n",RIVER_BANK_COLS+i,CH_SPACE;61 }62}63 64U0 AdjustLoads(CMathODE *ode)65{66 MyMass *tmpm=ode->next_mass;67 F64 d,tt=SpanTime/10.0;68 while (tmpm!=&ode->next_mass) {69 if (tmpm->load_t) {70 if (tt) {71 d=Abs(Sin(tmpm->load_t*pi+tt)); //0.0<=d<=1.072 tmpm->mass=100.0*Sqr(Sqr(d+1.0));73 tmpm->radius=7.0*d+2.0;74 } else {75 tmpm->mass=MASS_MASS;76 tmpm->radius=MASS_RADIUS;77 }78 }79 tmpm=tmpm->next;80 }81}82 