int main (int argc, char * argv[]) { srand(time(NULL)); srand((unsigned int)time((time_t *)NULL)); printf("Instructions:\n" "Hold down the left mouse button to rotate image: \n" "\n" "Hold 'm' while holding down the right mouse to move the end\n" "Hold 't' while holding down the right mouse to rotate the tangent \n" "\n" "Press 'Esc' to quit\n" ); InitGLUT(argc, argv); InitLights(); InitStuff (); InitThread(argc, argv); glutMainLoop (); }
bool GetLight(hal::LightType light, hal::LightConfiguration* aConfig) { light_state_t state; #ifdef HAVEGETLIGHT InitLights(); #endif if (light < 0 || light >= hal::eHalLightID_Count || sLights[light] == NULL) { return false; } memset(&state, 0, sizeof(light_state_t)); #ifdef HAVEGETLIGHT sLights[light]->get_light(sLights[light], &state); #else state = sStoredLightState[light]; #endif aConfig->light() = light; aConfig->color() = state.color; aConfig->flash() = hal::FlashMode(state.flashMode); aConfig->flashOnMS() = state.flashOnMS; aConfig->flashOffMS() = state.flashOffMS; aConfig->mode() = hal::LightMode(state.brightnessMode); return true; }
Tutorial36() { m_pGameCamera = NULL; m_scale = 0.0f; m_persProjInfo.FOV = 60.0f; m_persProjInfo.Height = WINDOW_HEIGHT; m_persProjInfo.Width = WINDOW_WIDTH; m_persProjInfo.zNear = 1.0f; m_persProjInfo.zFar = 100.0f; InitLights(); InitBoxPositions(); }
Tutorial36() { m_pGameCamera = NULL; m_scale = 0.0f; m_persProjInfo.FOV = 60.0f; m_persProjInfo.Height = WINDOW_HEIGHT; m_persProjInfo.Width = WINDOW_WIDTH; m_persProjInfo.zNear = 1.0f; m_persProjInfo.zFar = 100.0f; m_frameCount = 0; m_fps = 0.0f; InitLights(); InitBoxPositions(); m_time = glutGet(GLUT_ELAPSED_TIME); }
bool SetLight(hal::LightType light, const hal::LightConfiguration& aConfig) { light_state_t state; InitLights(); if (light < 0 || light >= hal::eHalLightID_Count || sLights[light] == NULL) { return false; } memset(&state, 0, sizeof(light_state_t)); state.color = aConfig.color(); state.flashMode = aConfig.flash(); state.flashOnMS = aConfig.flashOnMS(); state.flashOffMS = aConfig.flashOffMS(); state.brightnessMode = aConfig.mode(); sLights[light]->set_light(sLights[light], &state); sStoredLightState[light] = state; return true; }
GRAPHICS::GRAPHICS(HWND in_hwnd) : hwnd(in_hwnd) { try { d3d = Direct3DCreate9(D3D_SDK_VERSION); if (!d3d) throw 0; try { CreateDirect3DDevice(); try { InitVBCube(); } catch(...) { d3ddev->Release(); throw; } } catch(...) { d3d->Release(); throw; } } catch(...) { throw; } InitLights(); InitMaterials(); strWorld.rotationY = 0.0f; strWorld.rotationZ = 0.0f; strView.camera_pos = D3DXVECTOR3(6.0f, 0.0f, 0.0f); strView.look_at_point = D3DXVECTOR3(0.0f, 0.0f, 0.0f); strView.up_direction = D3DXVECTOR3(0.0f, 0.0f, 1.0f); strProjection.angle = 45; strProjection.plane_near = 1.0f; strProjection.plane_far = 100.0f; UpdateMatrixWorld(); UpdateMatrixView(); UpdateMatrixProjection(); }
int main (int argc, char * argv[]) { //srand(time(NULL)); //srand((unsigned int)time((time_t *)NULL)); printf("Instructions:\n" "Hold down the left mouse button to rotate image: \n" "\n" "Hold 'm' while holding down the right mouse to move the end\n" "Hold 't' while holding down the right mouse to rotate the tangent \n" "\n" "Press 'Esc' to quit\n" ); InitGLUT(argc, argv); InitLights(); InitStuff (); InitThread(argc, argv); signal(SIGINT, &interruptHandler); cout << "Running with CPU Threads = " << NUM_CPU_THREADS << endl; glutMainLoop (); }
VOID ReadEnvFile(CHAR *EnvFileName) { INT i, j; /* Indices. */ INT stat; /* Input var status counter. */ INT dummy; CHAR opcode; /* Environment spec opcode. */ CHAR command[30]; /* Environment spec command. */ CHAR opparam[30]; /* Command parameter. */ CHAR dummy_char[60]; CHAR datafile[10]; BOOL lights_set; /* Lights set? */ FILE *pf; /* Input file pointer. */ LIGHT *lptr, *lastlight; /* Light node pointers. */ /* Open command file. */ pf = fopen(EnvFileName, "r"); if (!pf) { printf("Unable to open environment file %s.\n", EnvFileName); exit(-1); } InitEnv(); /* Set defaults. */ nlights = 0; lights_set = FALSE; /* Process command file according to opcodes. */ while (fscanf(pf, "%s", command) != EOF) { opcode = LookupCommand(command); switch (opcode) { /* Eye position. */ case OP_EYE: stat = fscanf(pf, "%lf %lf %lf", &(View.eye[0]), &(View.eye[1]), &(View.eye[2])); if (stat != 3) { printf("error: eye position.\n"); exit(-1); } break; /* Center of interest position. */ case OP_COI: stat = fscanf(pf, "%lf %lf %lf", &(View.coi[0]), &(View.coi[1]), &(View.coi[2])); if (stat != 3) { printf("error: coi position.\n"); exit(-1); } break; /* Background color. */ case OP_BKGCOL: stat = fscanf(pf, "%lf %lf %lf", &(View.bkg[0]), &(View.bkg[1]), &(View.bkg[2])); if (stat != 3) { printf("error: background color.\n"); exit(-1); } if (!VerifyColorRange(View.bkg)) exit(-1); break; /* Viewing angle in degrees. */ case OP_VANG: stat = fscanf(pf, "%lf", &(View.vang)); if (stat != 1) { printf("error: viewing angle.\n"); exit(-1); } if (View.vang < 0.0 || View.vang > 100.0) { printf("Invalid angle %f.\n", View.vang); exit(-1); } break; /* Ambient. */ case OP_AMBIENT: stat = fscanf(pf, "%lf %lf %lf", &(View.ambient[0]), &(View.ambient[1]), &(View.ambient[2])); if (stat != 3) { printf("error: ambient.\n"); exit(-1); } if (!VerifyColorRange(View.ambient)) exit(-1); break; /* Anti-aliasing level. */ case OP_ANTILEVEL: stat = fscanf(pf, "%ld", &(Display.maxAAsubdiv)); if (stat != 1) { printf("View error: antialias level.\n"); exit(-1); } if (Display.maxAAsubdiv < 0 || Display.maxAAsubdiv > 3) { printf("error: antialias level %ld.\n", Display.maxAAsubdiv); exit(-1); } break; /* Recursion level. */ case OP_MAXLEVEL: stat = fscanf(pf, "%ld", &(Display.maxlevel)); printf("maxlevel of ray recursion = %ld\n",Display.maxlevel); fflush(stdout); if (stat != 1) { printf("error: recursion level.\n"); exit(-1); } if (Display.maxlevel > 5 || Display.maxlevel < 0) { printf("error: recursion level %ld.\n", Display.maxlevel); exit(-1); } break; /* Mininum ray weight. */ case OP_MINWEIGHT: stat = fscanf(pf, "%lf", &(Display.minweight)); if (stat != 1) { printf("error: miniumum ray weight.\n"); exit(-1); } if (Display.minweight < 0.0 || Display.minweight > 1.0) { printf("error: invalid ray weight %f.\n", Display.minweight); exit(-1); } break; /* Anti tolerance weight. */ case OP_ANTITOL: stat = fscanf(pf, "%lf", &(Display.aatolerance)); if (stat != 1) { printf("error: anti tolerance weight.\n"); exit(-1); } if (Display.aatolerance < 0.0 || Display.aatolerance > 1.0) { printf("error: invalid anti tolerance weight %f.\n", Display.aatolerance); exit(-1); } break; /* Resolution. */ case OP_RES: stat = fscanf(pf, "%ld %ld", &(Display.xres), &(Display.yres)); if (stat != 2) { printf("error: resolution.\n"); exit(-1); } break; /* Light positions and colors. */ case OP_LIGHT: lights_set = TRUE; if (nlights > 0) lptr = GlobalMalloc(sizeof(LIGHT), "env.c"); else lptr = lights; stat = fscanf(pf, "%lf %lf %lf %lf %lf %lf", &(lptr->pos[0]), &(lptr->pos[1]), &(lptr->pos[2]), &(lptr->col[0]), &(lptr->col[1]), &(lptr->col[2])); if (stat != 6) { printf("error: Lights.\n"); exit(-1); } if (!VerifyColorRange(lptr->col)) exit(-1); lptr->pos[3] = 1.0; stat = fscanf(pf, "%ld", &(lptr->shadow)); if (stat != 1) { printf("error: Lights shadow indicator.\n"); exit(-1); } lptr->next = NULL; if (nlights > 0) lastlight->next = lptr; nlights++; lastlight = lptr; break; /* Model transformation matrix. */ case OP_MODELMAT: for (i = 0; i < 4; i++) for (j = 0; j < 4; j++) { stat = fscanf(pf, "%lf", &(View.model[i][j])); if (stat != 1) { printf("Error in matrix.\n"); exit(-1); } } ModelTransform = TRUE; break; /* Shadow info. */ case OP_SHAD: stat = fscanf(pf, "%s", opparam); if (stat != 1) { printf("error: shadow.\n"); exit(-1); } if (strcmp(opparam, "on") == 0) View.shad = TRUE; else View.shad = FALSE; break; /* Shading info. */ case OP_SHADING: stat = fscanf(pf, "%s", opparam); if (stat != 1) { printf("error: shading %s.\n", opparam); exit(-1); } if (strcmp(opparam, "on") == 0) View.shading = TRUE; else View.shading = FALSE; break; /* Projection type. */ case OP_PROJECT: stat = fscanf(pf, "%s", opparam); if (stat != 1) { printf("error: projection %s.\n", opparam); exit(-1); } if (strcmp(opparam, "perspective") == 0) View.projection = PT_PERSP; else if (strcmp(opparam, "orthographic") == 0) View.projection = PT_ORTHO; else { printf("Invalid projection %s.\n", opparam); exit(-1); } break; /* Database traversal info. */ case OP_TRAVERSAL: stat = fscanf(pf, "%s", opparam); if (stat != 1) { printf("error: traversal %s.\n", opparam); exit(-1); } if (strcmp(opparam, "list") == 0) TraversalType = TT_LIST; else if (strcmp(opparam, "huniform") == 0) TraversalType = TT_HUG; else { printf("Invalid traversal code %s.\n", opparam); exit(-1); } break; /* Geometry file. */ case OP_GEOM_FILE: stat = fscanf(pf, " %s", GeoFileName); if (stat != 1) { printf("error: geometry file.\n"); exit(-1); } GeoFile = TRUE; break; /* Runlength file. */ case OP_RL_FILE: stat = fscanf(pf, " %s", PicFileName); if (stat != 1) { printf("error: runlength file.\n"); exit(-1); } PicFile = TRUE; break; case OP_PREVIEW_BKCULL: stat = fscanf(pf, "%ld", &dummy); if (stat != 1) { printf("error: Preview bkcull.\n"); exit(-1); } break; case OP_PREVIEW_FILL: stat = fscanf(pf, "%ld", &dummy); if (stat != 1) { printf("error: Preview fill.\n"); exit(-1); } break; case OP_PREVIEW_SPHTESS: stat = fscanf(pf, "%s", dummy_char); if (stat != 1) { printf("error: sphere tess.\n"); exit(-1); } break; case OP_NORM_DB: stat = fscanf(pf, "%s", opparam); if (stat != 1) { printf("error: norm database.\n"); exit(-1); } if (strcmp(opparam, "no") == 0) ModelNorm = FALSE; break; case OP_DATA_TYPE: stat = fscanf(pf, "%s", datafile); if (stat != 1) { printf("error: datatype.\n"); exit(-1); } if (strcmp(datafile, "binary") == 0) DataType = DT_BINARY; break; case OP_HU_MAX_PRIMS_CELL: stat = fscanf(pf, "%ld", &hu_max_prims_cell); if (stat != 1) { printf("error: Huniform prims per cell.\n"); exit(-1); } break; case OP_HU_GRIDSIZE: stat = fscanf(pf, "%ld", &hu_gridsize); if (stat != 1) { printf("error: Huniform gridsize.\n"); exit(-1); } break; case OP_HU_NUMBUCKETS: stat = fscanf(pf, "%ld", &hu_numbuckets); if (stat != 1) { printf("error: Huniform numbuckets.\n"); exit(-1); } break; case OP_HU_MAX_SUBDIV: stat = fscanf(pf, "%ld", &hu_max_subdiv_level); if (stat != 1 || hu_max_subdiv_level > 3) { printf("error: Huniform max subdiv level.\n"); exit(-1); } break; case OP_HU_LAZY: stat = fscanf(pf, "%ld", &hu_lazy); if (stat != 1) { printf("error: Huniform lazy.\n"); exit(-1); } break; case OP_BUNDLE: stat = fscanf(pf, "%ld %ld", &bundlex, &bundley); if (stat != 2 ) { printf("error: bundle.\n"); exit(-1); } break; case OP_BLOCK: stat = fscanf(pf, "%ld %ld", &blockx, &blocky); if (stat != 2 ) { printf("error: block.\n"); exit(-1); } break; default: printf("Warning: unrecognized env command: %s.\n", command); break; } } fclose(pf); /* Display parameters reset. */ Display.numpixels = Display.xres*Display.yres; Display.vWscale = Display.scrWidth/Display.xres; Display.vHscale = Display.scrHeight/Display.yres; /* If no light information given, set default. */ if (!lights_set) InitLights(); /* Set up screen parameters. */ InitDisplay(); /* Parameter check; think about lifting this restriction. */ if ((TraversalType != TT_LIST) && ModelNorm == FALSE) { printf("Data must be normalized with this traversal method!.\n"); ModelNorm = TRUE; } }
void VRSim::init(){ windowWidth = 1920; windowHeight = 1080; InitLights(); InitColorPalette(); m_gbuffer.Init(windowWidth,windowHeight); geomProgram.init(); //initialize point lights pointProgram.init(); //pointProgram.SetPointLight(m_pointLight[0]); dirProgram.init(); dirProgram.SetDirectionalLight(m_dirLight); //not sure what this is used for m_nullTech.init(); //load models tree.loadModel("./bin/tree/tree.obj"); quad.loadModel("./bin/quad.obj"); sphere.loadModel("./bin/sphere.obj"); pen.loadModel("./bin/objects/Pen.obj"); textpaint.loadModel("./bin/earth.obj"); // Terrain terrain = new Terrain(cavr::math::vec3f(1000,300,1000), "./bin/terrain/output.jpg"); terrain->initialize(); //the origins of time t2 = t1 = std::chrono::high_resolution_clock::now(); time = 0; xValOld = 0.0f; yValOld = 0.0f; boost = rotation = false; cam = Engine::getEngine()->graphics->camera; currentColor = cavr::math::vec3f(1,0,0); cursor.init(); skybox = new Skybox(); // Rui sound engine = createIrrKlangDevice(); // init music name list musicName.push_back("media/A0.wav"); musicName.push_back("media/A1.wav"); musicName.push_back("media/A2.wav"); musicName.push_back("media/A3.wav"); musicName.push_back("media/A4.wav"); musicName.push_back("media/A5.wav"); musicName.push_back("media/A6.wav"); musicName.push_back("media/A7.wav"); // Rui fake gravity sphereRadius = 1; //Build the texture list buttonPress = true; textureindex = 0; TextureBall temp; std::string path = "./bin/whatever.jpg"; if (temp.image.load(path.c_str())) { temp.image.convertTo32Bits(); glGenTextures(1, &temp.id); glBindTexture(GL_TEXTURE_2D, temp.id); glTexImage2D(GL_TEXTURE_2D, 7, GL_RGBA, temp.image.getWidth(), temp.image.getHeight(), 0, GL_BGRA, GL_UNSIGNED_BYTE, (GLvoid *) temp.image.accessPixels()); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); textures.push_back(temp); } else { std::cout << "Texture: " << path.c_str() << " failed to load" << std::endl; } //Build the texture list path = "./bin/polkadots.jpg"; if (temp.image.load(path.c_str())) { temp.image.convertTo32Bits(); glGenTextures(1, &temp.id); glBindTexture(GL_TEXTURE_2D, temp.id); glTexImage2D(GL_TEXTURE_2D, 7, GL_RGBA, temp.image.getWidth(), temp.image.getHeight(), 0, GL_BGRA, GL_UNSIGNED_BYTE, (GLvoid *) temp.image.accessPixels()); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); textures.push_back(temp); } else { std::cout << "Texture: " << path.c_str() << " failed to load" << std::endl; } }
void SceneBase::InitShadersAndLights(string vertexShader, string fragmentShader) { const int NUM_LIGHT_PARAMS = U_LIGHT0_EXPONENT - U_NUMLIGHTS; //Load vertex and fragment shaders m_programID = LoadShaders(vertexShader.c_str(), fragmentShader.c_str()); // Use our shader glUseProgram(m_programID); #pragma region Loop to get a handle for all our "colorTexture" uniforms // Individual Texture Params const int NUM_TEX_PARAMS = 2; string texCode[NUM_TEX_PARAMS] = { "colorTextureEnabled[0]", "colorTexture[0]" }; for (int i = 0; i < Mesh::MAX_TEXTURES; ++i) // For every texture { if (i != 0) { // Loop to update array index of strings for (size_t param = 0; param < NUM_TEX_PARAMS; ++param) // For every param for each texture { texCode[param][texCode[param].length() - 2] = static_cast<char>(i + 48) /*convert into char*/; } } m_parameters[U_COLOR_TEXTURE_ENABLED + i] = glGetUniformLocation(m_programID, texCode[0].c_str()); m_parameters[U_COLOR_TEXTURE + i] = glGetUniformLocation(m_programID, texCode[1].c_str()); } #pragma endregion // Get a handle for our "textColor" uniform m_parameters[U_TEXT_ENABLED] = glGetUniformLocation(m_programID, "textEnabled"); m_parameters[U_TEXT_COLOR] = glGetUniformLocation(m_programID, "textColor"); // Get a handle for our uniform m_parameters[U_MVP] = glGetUniformLocation(m_programID, "MVP"); //m_parameters[U_MODEL] = glGetUniformLocation(m_programID, "M"); //m_parameters[U_VIEW] = glGetUniformLocation(m_programID, "V"); m_parameters[U_MODELVIEW] = glGetUniformLocation(m_programID, "MV"); m_parameters[U_MODELVIEW_INVERSE_TRANSPOSE] = glGetUniformLocation(m_programID, "MV_inverse_transpose"); m_parameters[U_MATERIAL_AMBIENT] = glGetUniformLocation(m_programID, "material.kAmbient"); m_parameters[U_MATERIAL_DIFFUSE] = glGetUniformLocation(m_programID, "material.kDiffuse"); m_parameters[U_MATERIAL_SPECULAR] = glGetUniformLocation(m_programID, "material.kSpecular"); m_parameters[U_MATERIAL_SHININESS] = glGetUniformLocation(m_programID, "material.kShininess"); // Global Light Params m_parameters[U_LIGHTENABLED] = glGetUniformLocation(m_programID, "lightEnabled"); m_parameters[U_NUMLIGHTS] = glGetUniformLocation(m_programID, "numLights"); #pragma region Loop to get a handle for all our light related uniforms // Individual Light Params string code[NUM_LIGHT_PARAMS] = { "lights[0].position_cameraspace", "lights[0].color", "lights[0].power", "lights[0].kC", "lights[0].kL", "lights[0].kQ", "lights[0].type", "lights[0].spotDirection", "lights[0].cosCutoff", "lights[0].cosInner", "lights[0].exponent" }; const short INDEX_POS = 7; for (int i = 0; i < m_NUM_LIGHTS; ++i) // For every light { if (i != 0) { // Loop to update array index of strings for (size_t param = 0; param < NUM_LIGHT_PARAMS; ++param) // For every param for each light { code[param][INDEX_POS] = static_cast<char>(i + 48) /*convert into char*/; } } m_parameters[U_LIGHT0_POSITION + i * NUM_LIGHT_PARAMS] = glGetUniformLocation(m_programID, code[0].c_str()); m_parameters[U_LIGHT0_COLOR + i * NUM_LIGHT_PARAMS] = glGetUniformLocation(m_programID, code[1].c_str()); m_parameters[U_LIGHT0_POWER + i * NUM_LIGHT_PARAMS] = glGetUniformLocation(m_programID, code[2].c_str()); m_parameters[U_LIGHT0_KC + i * NUM_LIGHT_PARAMS] = glGetUniformLocation(m_programID, code[3].c_str()); m_parameters[U_LIGHT0_KL + i * NUM_LIGHT_PARAMS] = glGetUniformLocation(m_programID, code[4].c_str()); m_parameters[U_LIGHT0_KQ + i * NUM_LIGHT_PARAMS] = glGetUniformLocation(m_programID, code[5].c_str()); m_parameters[U_LIGHT0_TYPE + i * NUM_LIGHT_PARAMS] = glGetUniformLocation(m_programID, code[6].c_str()); m_parameters[U_LIGHT0_SPOTDIRECTION + i * NUM_LIGHT_PARAMS] = glGetUniformLocation(m_programID, code[7].c_str()); m_parameters[U_LIGHT0_COSCUTOFF + i * NUM_LIGHT_PARAMS] = glGetUniformLocation(m_programID, code[8].c_str()); m_parameters[U_LIGHT0_COSINNER + i * NUM_LIGHT_PARAMS] = glGetUniformLocation(m_programID, code[9].c_str()); m_parameters[U_LIGHT0_EXPONENT + i * NUM_LIGHT_PARAMS] = glGetUniformLocation(m_programID, code[10].c_str()); } glUniform1i(m_parameters[U_NUMLIGHTS], m_NUM_LIGHTS); InitLights(); for (int i = 0; i < m_NUM_LIGHTS; ++i) { if (lights[i].power > Math::EPSILON) { glUniform1i(m_parameters[U_LIGHT0_TYPE + NUM_LIGHT_PARAMS * i], lights[i].type); glUniform3fv(m_parameters[U_LIGHT0_COLOR + NUM_LIGHT_PARAMS * i], 1, &lights[i].color.r); glUniform1f(m_parameters[U_LIGHT0_POWER + NUM_LIGHT_PARAMS * i], lights[i].power); glUniform1f(m_parameters[U_LIGHT0_KC + NUM_LIGHT_PARAMS * i], lights[i].kC); glUniform1f(m_parameters[U_LIGHT0_KL + NUM_LIGHT_PARAMS * i], lights[i].kL); glUniform1f(m_parameters[U_LIGHT0_KQ + NUM_LIGHT_PARAMS * i], lights[i].kQ); glUniform1f(m_parameters[U_LIGHT0_COSCUTOFF + NUM_LIGHT_PARAMS * i], lights[i].cosCutoff); glUniform1f(m_parameters[U_LIGHT0_COSINNER + NUM_LIGHT_PARAMS * i], lights[i].cosInner); glUniform1f(m_parameters[U_LIGHT0_EXPONENT + NUM_LIGHT_PARAMS * i], lights[i].exponent); } } #pragma endregion glUniform1i(m_parameters[U_TEXT_ENABLED], 0); }
int main (int argc, char * argv[]) { srand(time(NULL)); srand((unsigned int)time((time_t *)NULL)); printf("Instructions:\n" "Hold down the left mouse button to rotate image: \n" "\n" "Hold 'm' while holding down the right mouse to move the end\n" "Hold 't' while holding down the right mouse to rotate the tangent \n" "\n" "Press 'Esc' to quit\n" ); InitGLUT(argc, argv); InitLights(); InitStuff (); InitThread(argc, argv); traj_reader_good.read_threads_from_file(); traj_reader_bad.read_threads_from_file(); #ifdef NYLON thread_vision.set_reproj_fix_canny(POINTFILE_NYLON); #elif defined PURPLE thread_vision.set_reproj_fix_canny(POINTFILE_PURPLE); #elif defined BLACK thread_vision.set_reproj_fix_canny(POINTFILE_BLACK); #endif // for (int i=0; i < NUM_PTS; i++) // { // radii[i]=THREAD_RADII; // } // // /* std::cout << (traj_reader.get_all_threads()[0].start_pos() - traj_reader.get_all_threads()[0].end_pos()).norm() << std::endl; std::cout << (traj_reader.get_all_threads()[10].start_pos() - traj_reader.get_all_threads()[10].end_pos()).norm() << std::endl; std::cout << (traj_reader.get_all_threads()[20].start_pos() - traj_reader.get_all_threads()[20].end_pos()).norm() << std::endl; std::cout << (traj_reader.get_all_threads()[30].start_pos() - traj_reader.get_all_threads()[30].end_pos()).norm() << std::endl; std::cout << (traj_reader.get_all_threads()[40].start_pos() - traj_reader.get_all_threads()[40].end_pos()).norm() << std::endl; std::cout << (traj_reader.get_all_threads()[50].start_pos() - traj_reader.get_all_threads()[50].end_pos()).norm() << std::endl; std::cout << (traj_reader.get_all_threads().back().start_pos() - traj_reader.get_all_threads().back().end_pos()).norm() << std::endl; */ if (TRY_ALL) { char filename_errs[256]; #ifdef NYLON sprintf(filename_errs, "%s%s.txt", POINTS_ERR_SAVE_BASE, "nylon"); #elif defined PURPLE sprintf(filename_errs, "%s%s.txt", POINTS_ERR_SAVE_BASE, "purple"); #elif defined BLACK sprintf(filename_errs, "%s%s.txt", POINTS_ERR_SAVE_BASE, "black"); #else sprintf(filename_errs, "%s%s.txt", POINTS_ERR_SAVE_BASE, "notype"); #endif std::ofstream points_err_out; points_err_out.precision(10); points_err_out.open(filename_errs); while (thread_ind < all_threads.size()) { processNormalKeys('v', lastx_R, lasty_R); points_err_out << thread_ind << " " << err_fullopt << " " << err_visiononly << " " << twistAngle_correct << " " <<score_correct_twist << " " << " " << twistAngle_best << " " << score_best_twist << "\n"; points_err_out.flush(); processNormalKeys('s', lastx_R, lasty_R); } points_err_out.close(); exit(0); } glutMainLoop (); }