fixed some edge angle stuff

This commit is contained in:
James E McClure 2018-09-13 13:07:59 -04:00
parent fa9294e0d1
commit 96d08f6bd8
2 changed files with 24 additions and 2 deletions

View File

@ -366,7 +366,7 @@ double DECL::EdgeAngle(int edge)
double dotprod=U.x*V.x + U.y*V.y + U.z*V.z;
if (dotprod > 1.f) dotprod=1.f;
angle = acos(dotprod);
if (edge < 0 ){
if (halfedge.twin(edge) < 0 ){
// turn in outward normal at cube face is pi/2 from each side of the cube
angle-=1.570796326794897;
}
@ -388,7 +388,11 @@ double DECL::EdgeAngle(int edge)
angle *= 0.5; // half edge value
}
//1.570796326794897
if (angle > 0.f) printf(" %f, %f: U={%f, %f, %f}, V={%f, %f, %f}\n",angle,dotprod,U.y,U.z,V.x,V.y,V.z);
/* if (fabs(angle) > 0.f){
printf("%f, %f (Edge=%i, twin=%i): U={%f, %f, %f}, V={%f, %f, %f}\n",angle,dotprod,edge,halfedge.twin(edge),U.x,U.y,U.z,V.x,V.y,V.z);
printf(" P={%f, %f, %f}, Q={%f, %f, %f}, R={%f, %f, %f} \n",P.x,P.y,P.z,Q.x,Q.y,Q.z,R.x,R.y,R.z);
}
*/
return angle;
}

View File

@ -60,6 +60,24 @@ int main(int argc, char **argv)
printf("Surface area = %f (analytical = %f) \n", sphere.Ai,4*3.14159*0.3*0.3*double(Nx*Nx));
printf("Mean curvature = %f (analytical = %f) \n", sphere.Ji,8*3.14159*0.3*double(Nx));
printf("Euler characteristic = %f (analytical = 2.0) \n",sphere.Xi);
Minkowski plane(Dm);
printf("Set distance map \n");
for (k=0; k<Nz; k++){
for (j=0; j<Ny; j++){
for (i=0; i<Nx; i++){
Phase(i,j,k) = k-0.5*double(Nz+1);
}
}
}
printf("Construct local isosurface \n");
plane.ComputeScalar(Phase,0.f);
printf("Surface area = %f (analytical = %f) \n", plane.Ai,double((Nx-2)*(Ny-2)));
printf("Mean curvature = %f (analytical =0) \n", plane.Ji);
printf("Euler characteristic = %f (analytical = 2.0) \n",plane.Xi);
}