mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-09-03 14:10:33 +03:00
0032133: Modeling Data - Restriction of access to internal arrays for Poly_Triangulation, revision of API
Removed methods from Poly_Triangulation/Poly_PolygonOnTriangulation giving access to internal arrays of 2d and 3d nodes, triangles and normals.
This commit is contained in:
@@ -36,11 +36,8 @@ void Prs3d::AddFreeEdges (TColgp_SequenceOfPnt& theSegments,
|
||||
return;
|
||||
}
|
||||
|
||||
const TColgp_Array1OfPnt& aNodes = thePolyTri->Nodes();
|
||||
|
||||
// Build the connect tool.
|
||||
Poly_Connect aPolyConnect (thePolyTri);
|
||||
|
||||
Standard_Integer aNbTriangles = thePolyTri->NbTriangles();
|
||||
Standard_Integer aT[3];
|
||||
Standard_Integer aN[3];
|
||||
@@ -66,11 +63,10 @@ void Prs3d::AddFreeEdges (TColgp_SequenceOfPnt& theSegments,
|
||||
TColStd_Array1OfInteger aFree (1, 2 * aNbFree);
|
||||
|
||||
Standard_Integer aFreeIndex = 1;
|
||||
const Poly_Array1OfTriangle& aTriangles = thePolyTri->Triangles();
|
||||
for (Standard_Integer anI = 1; anI <= aNbTriangles; ++anI)
|
||||
{
|
||||
aPolyConnect.Triangles (anI, aT[0], aT[1], aT[2]);
|
||||
aTriangles (anI).Get (aN[0], aN[1], aN[2]);
|
||||
thePolyTri->Triangle (anI).Get (aN[0], aN[1], aN[2]);
|
||||
for (Standard_Integer aJ = 0; aJ < 3; aJ++)
|
||||
{
|
||||
Standard_Integer k = (aJ + 1) % 3;
|
||||
@@ -87,8 +83,8 @@ void Prs3d::AddFreeEdges (TColgp_SequenceOfPnt& theSegments,
|
||||
Standard_Integer aFreeHalfNb = aFree.Length() / 2;
|
||||
for (Standard_Integer anI = 1; anI <= aFreeHalfNb; ++anI)
|
||||
{
|
||||
const gp_Pnt aPoint1 = aNodes (aFree (2 * anI - 1)).Transformed (theLocation);
|
||||
const gp_Pnt aPoint2 = aNodes (aFree (2 * anI )).Transformed (theLocation);
|
||||
const gp_Pnt aPoint1 = thePolyTri->Node (aFree (2 * anI - 1)).Transformed (theLocation);
|
||||
const gp_Pnt aPoint2 = thePolyTri->Node (aFree (2 * anI )).Transformed (theLocation);
|
||||
theSegments.Append (aPoint1);
|
||||
theSegments.Append (aPoint2);
|
||||
}
|
||||
|
@@ -100,9 +100,6 @@ Handle(Graphic3d_ArrayOfTriangles) Prs3d_ToolQuadric::CreateTriangulation (const
|
||||
Handle(Poly_Triangulation) Prs3d_ToolQuadric::CreatePolyTriangulation (const gp_Trsf& theTrsf) const
|
||||
{
|
||||
Handle(Poly_Triangulation) aTriangulation = new Poly_Triangulation (VerticesNb(), TrianglesNb(), Standard_False);
|
||||
TColgp_Array1OfPnt& aNodes = aTriangulation->ChangeNodes();
|
||||
Poly_Array1OfTriangle& aTriangles = aTriangulation->ChangeTriangles();
|
||||
|
||||
Standard_ShortReal aStepU = 1.0f / mySlicesNb;
|
||||
Standard_ShortReal aStepV = 1.0f / myStacksNb;
|
||||
|
||||
@@ -116,11 +113,11 @@ Handle(Poly_Triangulation) Prs3d_ToolQuadric::CreatePolyTriangulation (const gp_
|
||||
const Standard_Integer aVertId = aU * (myStacksNb + 1) + (aV + 1);
|
||||
gp_Pnt aVertex = Vertex (aParamU, aParamV).Transformed (theTrsf);
|
||||
|
||||
aNodes.SetValue (aVertId, aVertex);
|
||||
aTriangulation->SetNode (aVertId, aVertex);
|
||||
if (aU != 0 && aV != 0)
|
||||
{
|
||||
aTriangles.SetValue (++anIndex, Poly_Triangle (aVertId, aVertId - myStacksNb - 2, aVertId - 1));
|
||||
aTriangles.SetValue (++anIndex, Poly_Triangle (aVertId - myStacksNb - 2, aVertId, aVertId - myStacksNb - 1));
|
||||
aTriangulation->SetTriangle (++anIndex, Poly_Triangle (aVertId, aVertId - myStacksNb - 2, aVertId - 1));
|
||||
aTriangulation->SetTriangle (++anIndex, Poly_Triangle (aVertId - myStacksNb - 2, aVertId, aVertId - myStacksNb - 1));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user