Small changes in the long long way to making meshlab and the vcglib really float/double independent

This commit is contained in:
Paolo Cignoni 2014-06-18 10:38:52 +00:00
parent 4c30ba4672
commit 225af65457
1 changed files with 10 additions and 6 deletions

View File

@ -360,10 +360,11 @@ void Square(MeshType &in)
template <class MeshType> template <class MeshType>
void SphericalCap(MeshType &in, float angleRad, const int subdiv = 3 ) void SphericalCap(MeshType &in, float angleRad, const int subdiv = 3 )
{ {
typedef typename MeshType::CoordType CoordType;
in.Clear(); in.Clear();
tri::Allocator<MeshType>::AddVertex(in,Point3f(0,0,0)); tri::Allocator<MeshType>::AddVertex(in,CoordType(0,0,0));
for(int i=0;i<6;++i) for(int i=0;i<6;++i)
tri::Allocator<MeshType>::AddVertex(in,Point3f(cos(math::ToRad(i*60.0)),sin(math::ToRad(i*60.0)),0)); tri::Allocator<MeshType>::AddVertex(in,CoordType(cos(math::ToRad(i*60.0)),sin(math::ToRad(i*60.0)),0));
for(int i=0;i<6;++i) for(int i=0;i<6;++i)
tri::Allocator<MeshType>::AddFace(in,&(in.vert[0]),&(in.vert[1+i]),&(in.vert[1+(i+1)%6])); tri::Allocator<MeshType>::AddFace(in,&(in.vert[0]),&(in.vert[1+i]),&(in.vert[1+(i+1)%6]));
@ -573,17 +574,20 @@ void Box(MeshType &in, const typename MeshType::BoxType & bb )
template <class MeshType> template <class MeshType>
void Torus(MeshType &m, float hRingRadius, float vRingRadius, int hRingDiv=24, int vRingDiv=12 ) void Torus(MeshType &m, float hRingRadius, float vRingRadius, int hRingDiv=24, int vRingDiv=12 )
{ {
typedef typename MeshType::CoordType CoordType;
typedef typename MeshType::ScalarType ScalarType;
typedef Matrix44<ScalarType> Matrix44x;
m.Clear(); m.Clear();
float angleStepV = (2.0f*M_PI)/vRingDiv; ScalarType angleStepV = (2.0f*M_PI)/vRingDiv;
float angleStepH = (2.0f*M_PI)/hRingDiv; ScalarType angleStepH = (2.0f*M_PI)/hRingDiv;
Allocator<MeshType>::AddVertices(m,(vRingDiv+1)*(hRingDiv+1)); Allocator<MeshType>::AddVertices(m,(vRingDiv+1)*(hRingDiv+1));
for(int i=0;i<hRingDiv+1;++i) for(int i=0;i<hRingDiv+1;++i)
{ {
Matrix44f RotM; RotM.SetRotateRad(float(i%hRingDiv)*angleStepH,Point3f(0,1,0)); Matrix44x RotM; RotM.SetRotateRad(float(i%hRingDiv)*angleStepH,CoordType(0,1,0));
for(int j=0;j<vRingDiv+1;++j) for(int j=0;j<vRingDiv+1;++j)
{ {
Point3f p; CoordType p;
p[0]= vRingRadius*cos(float(j%vRingDiv)*angleStepV) + hRingRadius; p[0]= vRingRadius*cos(float(j%vRingDiv)*angleStepV) + hRingRadius;
p[1]= vRingRadius*sin(float(j%vRingDiv)*angleStepV); p[1]= vRingRadius*sin(float(j%vRingDiv)*angleStepV);
p[2] = 0; p[2] = 0;