// Create a random field object void AK_uav_create_field(AK_uav_field &field,int sim_seed_ID) { srand(sim_seed_ID); field.state="setup"; field.uav=vec2(0.0,0.0); // takeoff position field.hikers=field.obstacles=std::vector<vec2>(); // clear lists int nobs=2; for (int o=0;o<nobs;o++) // obstacles { vec2 p=rand_field(); if (length(p-field.uav)<field_closest // near origin || point_near(p,field.obstacles)) o--; // try again else field.obstacles.push_back(p); } int nhiker=2+(rand()%2); for (int h=0;h<nhiker;h++) // hikers { vec2 p=rand_field(); if (point_near(p,field.hikers) // near another hiker || point_near(p,field.obstacles)) // near an obstacle { h--; // try a different point } else field.hikers.push_back(p); } }
int main(int argc, char *argv[]) { if(argc != 2) { usage(argv); exit(1); } char *e; size_t L = (int)strtoul(argv[1], &e, 10); if(*e != '\0') { usage(argv); exit(2); } _Complex float *b = new_field(L); _Complex float *x = new_field(L); _Complex float *u = new_links(L); rand_links(L, u); rand_field(L, b); zero_field(L, x); cg(L, x, b, u); free(b); free(x); free(u); return 0; }
int main(int argc, char *argv[]) { if(argc != 4) { usage(argv); exit(1); } char *e; size_t L = (int)strtoul(argv[1], &e, 10); if(*e != '\0') { usage(argv); exit(2); } size_t Sy = (int)strtoul(argv[2], &e, 10); if(*e != '\0') { usage(argv); exit(2); } size_t Sx = (int)strtoul(argv[3], &e, 10); if(*e != '\0') { usage(argv); exit(2); } latparams lp = init_latparams(L, Sy, Sx); field **b = new_field(lp); field **x = new_field(lp); link **g = new_links(lp); rand_links(lp, g); rand_field(lp, b); zero_field(lp, x); cg(lp, x, b, g); del_field(b); del_field(x); del_links(g); return 0; }