本文整理汇总了C++中ARRAY::Contains方法的典型用法代码示例。如果您正苦于以下问题:C++ ARRAY::Contains方法的具体用法?C++ ARRAY::Contains怎么用?C++ ARRAY::Contains使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ARRAY
的用法示例。
在下文中一共展示了ARRAY::Contains方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GetTangentialSurfaceIndices
void Primitive :: GetTangentialSurfaceIndices (const Point<3> & p,
ARRAY<int> & surfind, double eps) const
{
for (int j = 0; j < GetNSurfaces(); j++)
if (fabs (GetSurface(j).CalcFunctionValue (p)) < eps)
if (!surfind.Contains (GetSurfaceId(j)))
surfind.Append (GetSurfaceId(j));
}
示例2:
void Polyhedra :: GetTangentialVecSurfaceIndices2 (const Point<3> & p, const Vec<3> & v1, const Vec<3> & v2,
ARRAY<int> & surfind, double eps) const
{
Vec<3> v1n = v1;
v1n.Normalize();
Vec<3> v2n = v2; // - (v2 * v1n) * v1n;
v2n.Normalize();
for (int i = 0; i < faces.Size(); i++)
{
const Point<3> & p1 = points[faces[i].pnums[0]];
Vec<3> v0 = p - p1;
if (fabs (v0 * faces[i].nn) > eps) continue; // n->nn
if (fabs (v1n * faces[i].nn) > eps_base1) continue; // n->nn
if (fabs (v2n * faces[i].nn) > eps_base1) continue; // n->nn
double lam01 = (faces[i].w1 * v0);
double lam02 = (faces[i].w2 * v0);
double lam03 = 1-lam01-lam02;
double lam11 = (faces[i].w1 * v1);
double lam12 = (faces[i].w2 * v1);
double lam13 = -lam11-lam12;
double lam21 = (faces[i].w1 * v2);
double lam22 = (faces[i].w2 * v2);
double lam23 = -lam21-lam22;
bool ok1 = lam01 > eps_base1 ||
lam01 > -eps_base1 && lam11 > eps_base1 ||
lam01 > -eps_base1 && lam11 > -eps_base1 && lam21 > eps_base1;
bool ok2 = lam02 > eps_base1 ||
lam02 > -eps_base1 && lam12 > eps_base1 ||
lam02 > -eps_base1 && lam12 > -eps_base1 && lam22 > eps_base1;
bool ok3 = lam03 > eps_base1 ||
lam03 > -eps_base1 && lam13 > eps_base1 ||
lam03 > -eps_base1 && lam13 > -eps_base1 && lam23 > eps_base1;
if (ok1 && ok2 && ok3)
{
if (!surfind.Contains (GetSurfaceId(faces[i].planenr)))
surfind.Append (GetSurfaceId(faces[i].planenr));
}
}
}
示例3: GetSurface
void Primitive ::
GetTangentialVecSurfaceIndices2 (const Point<3> & p, const Vec<3> & v1, const Vec<3> & v2,
ARRAY<int> & surfind, double eps) const
{
for (int j = 0; j < GetNSurfaces(); j++)
{
if (fabs (GetSurface(j).CalcFunctionValue (p)) < eps)
{
Vec<3> grad;
GetSurface(j).CalcGradient (p, grad);
if (sqr (grad * v1) < 1e-6 * v1.Length2() * grad.Length2() &&
sqr (grad * v2) < 1e-6 * v2.Length2() * grad.Length2() ) // new, 18032006 JS
{
if (!surfind.Contains (GetSurfaceId(j)))
surfind.Append (GetSurfaceId(j));
}
}
}
}
示例4: GetTangentialSurfaceIndices
void Polyhedra :: GetTangentialSurfaceIndices (const Point<3> & p,
ARRAY<int> & surfind, double eps) const
{
for (int i = 0; i < faces.Size(); i++)
{
const Point<3> & p1 = points[faces[i].pnums[0]];
Vec<3> v0 = p - p1;
double lam3 = -(faces[i].nn * v0); // n->nn
if (fabs (lam3) > eps) continue;
double lam1 = (faces[i].w1 * v0);
double lam2 = (faces[i].w2 * v0);
if (lam1 >= -eps_base1 && lam2 >= -eps_base1 && lam1+lam2 <= 1+eps_base1)
if (!surfind.Contains (GetSurfaceId(i)))
surfind.Append (GetSurfaceId(i));
}
}
示例5: WriteTETFormat
//.........这里部分代码省略.........
<< numedges << " "
<< numnodes << endl << endl;
outfile << "// NodeID, X, Y, Z, Type (0=Reg 1=PMaster 2=PSlave 3=CPMaster 4=CPSlave), "<< uidpid <<":\n" \
<< "// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n";
id_num.SetSize(mesh.GetNP()+1);
id_type.SetSize(mesh.GetNP()+1);
id_num = 0;
id_type = 0;
int n2,n4,n8;
n2 = n4 = n8 = 0;
for(int i=PointIndex::BASE; i<mesh.GetNP()+PointIndex::BASE; i++)
{
if(id_num[i] != 0)
continue;
if(nodenum[i] == -1)
continue;
ARRAY<int> group;
group.Append(i);
for(int j=0; j<idmaps.Size(); j++)
{
startsize = group.Size();
for(int k=0; k<startsize; k++)
{
int id = (*idmaps[j])[group[k]];
if(id != 0 && !group.Contains(id) && nodenum[id] != -1)
{
group.Append(id);
id_num[id] = j+1+id_num[group[k]];
}
}
}
if(group.Size() > 1)
{
id_groups.Append(new ARRAY<int>(group));
if(group.Size() == 2)
{
id_type[i] = 1;
id_type[group[1]] = 2;
n2++;
}
else if(group.Size() == 4)
{
id_type[i] = 3;
for(int j=1; j<group.Size(); j++)
id_type[group[j]] = 4;
n4++;
}
else if(group.Size() == 8)
{
id_type[i] = 5;
for(int j=1; j<group.Size(); j++)
id_type[group[j]] = 6;
n8++;
}
else
cerr << "ERROR: Identification group size = " << group.Size() << endl;
}