//这里我们尝试生存一个简单的网格。我们只生成一个正方形的网格,即 //n*n*n的网格 #pragma once #include"../display/getindata.h" #include"../geo/geodisplay.h" #include"../mesh/AddObj.h" #include"../display/ReadandWrite.h" #include"../display/Struct3d.h" #include"../generate/PlaneRollingBoundary.h" class CHoCCMesh{ //生成网格 public: Struct3d meshoutput[MESHN][MESHN][MESHN]; map>> mesh[MESHN][MESHN][MESHN]; int startnum[MESHN][MESHN][MESHN]; void getmesh(){ Interface meshinput[MESHN][MESHN][MESHN]; for(int i=0;i x,pair y,print3d& result,Vector3d tmpVec,int m1,int m2){ Matrix equation(tmpVec); FullPivLU> solve(equation); auto vertica0=(Matrix(solve.kernel()).col(0)).normalized(); auto vertica1=tmpVec.cross(vertica0).normalized(); double angle,minangle=100; int l1,l2; x.first=x.first+m1; x.second=x.second+m1; y.first=y.first+m2; y.second=y.second+m2; Vector3d s; for(int i=x.first;i-s2) { if(compare(i,s1,-j,s2)){ i++; result.f.push_back(Vector3i(x.first+getmod(i+l1,s1),x.first+getmod(i+l1-1,s1),y.first+getmod(l2+j,s2))); } else{ j--; result.f.push_back(Vector3i(x.first+getmod(i+l1,s1),y.first+getmod(l2+j,s2),y.first+getmod(l2+(j+1),s2))); } } if(j==-s2){ while (i-s2) { j--; result.f.push_back(Vector3i(x.first+getmod(i+l1,s1),y.first+getmod(l2+j,s2),y.first+getmod(l2+(j+1),s2))); } } } };