btVector3 randomBVec3InRange( std::pair< btVector3, btVector3 > range = std::pair< btVector3, btVector3 >( btVector3( -1, -1, -1), btVector3( 1, 1, 1) ) ) { return( btVector3( randomFloatInRange( std::pair< float, float >( range.first[0], range.second[0] ) ), randomFloatInRange( std::pair< float, float >( range.first[1], range.second[1] ) ), randomFloatInRange( std::pair< float, float >( range.first[2], range.second[2] ) ) ) ); }
void init(){ mouseX = 0; mouseY = 0; selectedIndex = -1; //use time to get more random initial SOM arrangement srand(time(NULL)); TSPFileReader trainingVectorFactory; vector<neuron> TrainingNeurons; //TrainingNeurons = trainingVectorFactory.retrieveTrainingVectors("./maps/RGB.tsp"); neuron myNewNeuron; //data randomly generated for(int i=0; i<300; i++){ for (int j=0;j<3;j++){ myNewNeuron.push_back(randomFloatInRange(0,255)); } TrainingNeurons.push_back(myNewNeuron); myNewNeuron.clear(); } //clustered data added for(int i=0; i<100; i++){ for(int j=0;j<3;j++){ //add only high-blue values if(j==0){ myNewNeuron.push_back(randomFloatInRange(0,255)); }else{ myNewNeuron.push_back(0); } } TrainingNeurons.push_back(myNewNeuron); myNewNeuron.clear(); } //clustered data added for(int i=0; i<100; i++){ for(int j=0;j<3;j++){ //add only high-blue values if(j==1){ myNewNeuron.push_back(randomFloatInRange(0,255)); }else{ myNewNeuron.push_back(0); } } TrainingNeurons.push_back(myNewNeuron); myNewNeuron.clear(); } //clustered data added for(int i=0; i<100; i++){ for(int j=0;j<3;j++){ //add only high-blue values if(j==2){ myNewNeuron.push_back(randomFloatInRange(0,255)); }else{ myNewNeuron.push_back(0); } } TrainingNeurons.push_back(myNewNeuron); myNewNeuron.clear(); } cam = new camera(); cam->translateRight(0.75); cam->translateUp(0.75); cam->translateForward(-1.75); //colourcube: 3d data, 3d mesh(10x10x10), 1000 training iterations mySOM.init(TrainingNeurons,7,7,7,50); terminateProgram = false; }