int gamehsp::makeNewMat2D( char *fname, int matopt ) { gpmat *mat = addMat(); if ( mat == NULL ) return -1; Material *mesh_material = makeMaterialTex2D( fname, matopt ); if ( mesh_material == NULL ) return -1; VertexFormat::Element elements[] = { VertexFormat::Element(VertexFormat::POSITION, 3), VertexFormat::Element(VertexFormat::TEXCOORD0, 2), VertexFormat::Element(VertexFormat::COLOR, 4) }; unsigned int elementCount = sizeof(elements) / sizeof(VertexFormat::Element); MeshBatch *meshBatch = MeshBatch::create(VertexFormat(elements, elementCount), Mesh::TRIANGLE_STRIP, mesh_material, true, 16, 256 ); mat->_mesh = meshBatch; mat->_material = mesh_material; mat->_mode = GPMAT_MODE_2D; mat->_sx = _tex_width; mat->_sy = _tex_height; mat->_texratex = 1.0f / (float)_tex_width; mat->_texratey = 1.0f / (float)_tex_height; return mat->_id; }
Mat minusMat (const Mat * pMatA, const Mat * pMatB) { Mat pResult, pMatNB; pMatNB = productK (pMatB, -1); pResult = addMat (pMatA, &pMatNB); return pResult; }
int gamehsp::makeNewMat( Material* material, int mode ) { gpmat *mat = addMat(); if ( mat == NULL ) return -1; mat->_material = material; mat->_mode = mode; return mat->_id; }
void from_frame(struct mat * pw, struct mat * PW_f, struct mat * PW_pf, struct mat * F, struct mat * pf) { struct mat * t = mat(2, 1); double a = MGET(F, 2, 0); sub_mat(t, F, 0, 0); struct mat * R = mat(2, 2); MSET(R, 0, 0, cos(a)); MSET(R, 0, 1, -sin(a)); MSET(R, 1, 0, sin(a)); MSET(R, 1, 1, cos(a)); struct mat * temp = mat(2, 1); prodMat(temp, R, pf); addMat(pw, temp, t); free(temp); double px = MGET(pf, 0, 0); double py = MGET(pf, 1, 0); MSET(PW_f, 0, 0, 1); MSET(PW_f, 0, 2, -py*cos(a) - px * sin(a)); MSET(PW_f, 1, 1, 1); MSET(PW_f, 1, 2, px * cos(a) - py * sin(a)); memcpy(&PW_pf->values[0], &R->values[0], sizeof(double) * (R->rows * R->columns)); free(R); }
int main(int argc, char ** argv){ NcError error(NcError::verbose_nonfatal); try{ std::string inFile; std::string outFile; std::string varName; std::string inList; // bool calcStdDev; BeginCommandLine() CommandLineString(inFile, "in", ""); CommandLineString(inList, "inlist",""); CommandLineString(varName, "var", ""); CommandLineString(outFile, "out", ""); // CommandLineBool(calcStdDev, "std"); ParseCommandLine(argc, argv); EndCommandLine(argv) AnnounceBanner(); if ((inFile != "") && (inList != "")){ _EXCEPTIONT("Can only open one file (--in) or list (--inlist)."); } //file list vector std::vector<std::string> vecFiles; if (inFile != ""){ vecFiles.push_back(inFile); } if (inList != ""){ GetInputFileList(inList,vecFiles); } //open up first file NcFile readin(vecFiles[0].c_str()); if (!readin.is_valid()){ _EXCEPTION1("Unable to open file %s for reading",\ vecFiles[0].c_str()); } int tLen,latLen,lonLen; NcDim * time = readin.get_dim("time"); tLen = time->size(); NcVar * timeVar = readin.get_var("time"); NcDim * lat = readin.get_dim("lat"); latLen = lat->size(); NcVar * latVar = readin.get_var("lat"); NcDim * lon = readin.get_dim("lon"); lonLen = lon->size(); NcVar * lonVar = readin.get_var("lon"); //read input variable NcVar * inVar = readin.get_var(varName.c_str()); //Create output matrix DataMatrix<double> outMat(latLen,lonLen); densCalc(inVar,outMat); //Option for calculating the yearly standard deviation /* if (calcStdDev){ for (int a=0; a<latLen; a++){ for (int b=0; b<lonLen; b++){ storeMat[0][a][b] = outMat[a][b]; } } } */ //If multiple files, add these values to the output if (vecFiles.size()>1){ DataMatrix<double> addMat(latLen,lonLen); std::cout<<"There are "<<vecFiles.size()<<" files."<<std::endl; for (int v=1; v<vecFiles.size(); v++){ NcFile addread(vecFiles[v].c_str()); NcVar * inVar = addread.get_var(varName.c_str()); densCalc(inVar,addMat); for (int a=0; a<latLen; a++){ for (int b=0; b<lonLen; b++){ outMat[a][b]+=addMat[a][b]; } } /* if (calcStdDev){ for (int a=0; a<latLen; a++){ for (int b=0; b<lonLen; b++){ storeMat[v][a][b] = addMat[a][b]; } } }*/ addread.close(); } //Divide output by number of files double div = 1./((double) vecFiles.size()); for (int a=0; a<latLen; a++){ for (int b=0; b<lonLen; b++){ outMat[a][b]*=div; } } } NcFile readout(outFile.c_str(),NcFile::Replace, NULL,0,NcFile::Offset64Bits); NcDim * outLat = readout.add_dim("lat", latLen); NcDim * outLon = readout.add_dim("lon", lonLen); NcVar * outLatVar = readout.add_var("lat",ncDouble,outLat); NcVar * outLonVar = readout.add_var("lon",ncDouble,outLon); std::cout<<"Copying dimension attributes."<<std::endl; copy_dim_var(latVar,outLatVar); copy_dim_var(lonVar,outLonVar); std::cout<<"Creating density variable."<<std::endl; NcVar * densVar = readout.add_var("dens",ncDouble,outLat,outLon); densVar->set_cur(0,0); densVar->put((&outMat[0][0]),latLen,lonLen); /* if (calcStdDev){ NcVar * stdDevVar = readout.add_var("stddev", ncDouble,outLat,outLon); DataMatrix<double> stdDevMat(latLen,lonLen); yearlyStdDev(storeMat,vecFiles.size(),latLen,lonLen,stdDevMat); stdDevVar->set_cur(0,0); stdDevVar->put(&(stdDevMat[0][0]),latLen,lonLen); std::cout<<" created sd variable"<<std::endl; } */ readout.close(); readin.close(); } catch (Exception &e){ std::cout<<e.ToString()<<std::endl; } }