#include <Standard_OutOfRange.hxx>
#include <StdFail_NotDone.hxx>
+static const Standard_Integer aNbSolMAX = 8;
+
Geom2dGcc_Circ2d2TanOnGeo::
Geom2dGcc_Circ2d2TanOnGeo (const GccEnt_QualifiedCirc& Qualified1 ,
const GccEnt_QualifiedCirc& Qualified2 ,
const Geom2dAdaptor_Curve& OnCurv ,
const Standard_Real Tolerance ):
- cirsol(1,8) ,
- qualifier1(1,8),
- qualifier2(1,8),
- TheSame1(1,8) ,
- TheSame2(1,8) ,
- pnttg1sol(1,8) ,
- pnttg2sol(1,8) ,
- pntcen(1,8) ,
- par1sol(1,8) ,
- par2sol(1,8) ,
- pararg1(1,8) ,
- pararg2(1,8) ,
- parcen3(1,8)
+ cirsol(1, aNbSolMAX) ,
+ qualifier1(1, aNbSolMAX),
+ qualifier2(1, aNbSolMAX),
+ TheSame1(1, aNbSolMAX) ,
+ TheSame2(1, aNbSolMAX) ,
+ pnttg1sol(1, aNbSolMAX) ,
+ pnttg2sol(1, aNbSolMAX) ,
+ pntcen(1, aNbSolMAX) ,
+ par1sol(1, aNbSolMAX) ,
+ par2sol(1, aNbSolMAX) ,
+ pararg1(1, aNbSolMAX) ,
+ pararg2(1, aNbSolMAX) ,
+ parcen3(1, aNbSolMAX)
{
WellDone = Standard_False;
Standard_Real thefirst = -100000.;
}
}
if (nnsol > 0) {
- for (Standard_Integer k = 1 ; k <= nnsol ; k++) {
+ for (Standard_Integer k = 1 ; k <= nnsol && NbrSol < aNbSolMAX; k++) {
NbrSol++;
cirsol(NbrSol) = gp_Circ2d(gp_Ax2d(Center,dirx),Radius(k));
// ==========================================================
const GccEnt_QualifiedLin& Qualified2 ,
const Geom2dAdaptor_Curve& OnCurv ,
const Standard_Real Tolerance ):
-cirsol(1,8) ,
-qualifier1(1,8),
-qualifier2(1,8),
-TheSame1(1,8) ,
-TheSame2(1,8) ,
-pnttg1sol(1,8) ,
-pnttg2sol(1,8) ,
-pntcen(1,8) ,
-par1sol(1,8) ,
-par2sol(1,8) ,
-pararg1(1,8) ,
-pararg2(1,8) ,
-parcen3(1,8)
+cirsol(1, aNbSolMAX) ,
+qualifier1(1, aNbSolMAX),
+qualifier2(1, aNbSolMAX),
+TheSame1(1, aNbSolMAX) ,
+TheSame2(1, aNbSolMAX) ,
+pnttg1sol(1, aNbSolMAX) ,
+pnttg2sol(1, aNbSolMAX) ,
+pntcen(1, aNbSolMAX) ,
+par1sol(1, aNbSolMAX) ,
+par2sol(1, aNbSolMAX) ,
+pararg1(1, aNbSolMAX) ,
+pararg2(1, aNbSolMAX) ,
+parcen3(1, aNbSolMAX)
{
WellDone = Standard_False;
}
if (Intp.IsDone()) {
if (!Intp.IsEmpty()) {
- for (Standard_Integer j = 1 ; j <= Intp.NbPoints() ; j++) {
+ for (Standard_Integer j = 1 ; j <= Intp.NbPoints() && NbrSol < aNbSolMAX; j++) {
gp_Pnt2d Center(Intp.Point(j).Value());
Standard_Real dist1 = Center.Distance(center1);
// Standard_Integer nbsol = 1;
const GccEnt_QualifiedLin& Qualified2 ,
const Geom2dAdaptor_Curve& OnCurv ,
const Standard_Real Tolerance ):
-cirsol(1,8) ,
-qualifier1(1,8),
-qualifier2(1,8),
-TheSame1(1,8) ,
-TheSame2(1,8) ,
-pnttg1sol(1,8) ,
-pnttg2sol(1,8) ,
-pntcen(1,8) ,
-par1sol(1,8) ,
-par2sol(1,8) ,
-pararg1(1,8) ,
-pararg2(1,8) ,
-parcen3(1,8)
+cirsol(1, aNbSolMAX) ,
+qualifier1(1, aNbSolMAX),
+qualifier2(1, aNbSolMAX),
+TheSame1(1, aNbSolMAX) ,
+TheSame2(1, aNbSolMAX) ,
+pnttg1sol(1, aNbSolMAX) ,
+pnttg2sol(1, aNbSolMAX) ,
+pntcen(1, aNbSolMAX) ,
+par1sol(1, aNbSolMAX) ,
+par2sol(1, aNbSolMAX) ,
+pararg1(1, aNbSolMAX) ,
+pararg2(1, aNbSolMAX) ,
+parcen3(1, aNbSolMAX)
{
WellDone = Standard_False;
Intp.Perform(Bis.ThisSolution(i),D1,C2,D2,Tol1,Tol2);
if (Intp.IsDone()) {
if ((!Intp.IsEmpty())) {
- for (Standard_Integer j = 1 ; j <= Intp.NbPoints() ; j++) {
+ for (Standard_Integer j = 1 ; j <= Intp.NbPoints() && NbrSol < aNbSolMAX; j++) {
gp_Pnt2d Center(Intp.Point(j).Value());
Standard_Real dist1 = L1.Distance(Center);
Standard_Real dist2 = L2.Distance(Center);
const gp_Pnt2d& Point2 ,
const Geom2dAdaptor_Curve& OnCurv ,
const Standard_Real Tolerance ):
-cirsol(1,8) ,
-qualifier1(1,8),
-qualifier2(1,8),
-TheSame1(1,8) ,
-TheSame2(1,8) ,
-pnttg1sol(1,8) ,
-pnttg2sol(1,8) ,
-pntcen(1,8) ,
-par1sol(1,8) ,
-par2sol(1,8) ,
-pararg1(1,8) ,
-pararg2(1,8) ,
-parcen3(1,8)
+cirsol(1, aNbSolMAX) ,
+qualifier1(1, aNbSolMAX),
+qualifier2(1, aNbSolMAX),
+TheSame1(1, aNbSolMAX) ,
+TheSame2(1, aNbSolMAX) ,
+pnttg1sol(1, aNbSolMAX) ,
+pnttg2sol(1, aNbSolMAX) ,
+pntcen(1, aNbSolMAX) ,
+par1sol(1, aNbSolMAX) ,
+par2sol(1, aNbSolMAX) ,
+pararg1(1, aNbSolMAX) ,
+pararg2(1, aNbSolMAX) ,
+parcen3(1, aNbSolMAX)
{
WellDone = Standard_False;
}
if (Intp.IsDone()) {
if ((!Intp.IsEmpty())) {
- for (Standard_Integer j = 1 ; j <= Intp.NbPoints() ; j++) {
+ for (Standard_Integer j = 1 ; j <= Intp.NbPoints() && NbrSol < aNbSolMAX; j++) {
gp_Pnt2d Center(Intp.Point(j).Value());
Radius = Center.Distance(Point2);
Standard_Real dist1 = center1.Distance(Center);
const gp_Pnt2d& Point2 ,
const Geom2dAdaptor_Curve& OnCurv ,
const Standard_Real Tolerance ):
-cirsol(1,8) ,
-qualifier1(1,8),
-qualifier2(1,8),
-TheSame1(1,8) ,
-TheSame2(1,8) ,
-pnttg1sol(1,8) ,
-pnttg2sol(1,8) ,
-pntcen(1,8) ,
-par1sol(1,8) ,
-par2sol(1,8) ,
-pararg1(1,8) ,
-pararg2(1,8) ,
-parcen3(1,8)
+cirsol(1, aNbSolMAX) ,
+qualifier1(1, aNbSolMAX),
+qualifier2(1, aNbSolMAX),
+TheSame1(1, aNbSolMAX) ,
+TheSame2(1, aNbSolMAX) ,
+pnttg1sol(1, aNbSolMAX) ,
+pnttg2sol(1, aNbSolMAX) ,
+pntcen(1, aNbSolMAX) ,
+par1sol(1, aNbSolMAX) ,
+par2sol(1, aNbSolMAX) ,
+pararg1(1, aNbSolMAX) ,
+pararg2(1, aNbSolMAX) ,
+parcen3(1, aNbSolMAX)
{
WellDone = Standard_False;
}
if (Intp.IsDone()) {
if ((!Intp.IsEmpty())) {
- for (Standard_Integer j = 1 ; j <= Intp.NbPoints() ; j++) {
+ for (Standard_Integer j = 1 ; j <= Intp.NbPoints() && NbrSol < aNbSolMAX; j++) {
gp_Pnt2d Center(Intp.Point(j).Value());
Standard_Real Radius = L1.Distance(Center);
// Standard_Integer nbsol = 1;
const gp_Pnt2d& Point2 ,
const Geom2dAdaptor_Curve& OnCurv ,
const Standard_Real Tolerance ):
-cirsol(1,8) ,
-qualifier1(1,8),
-qualifier2(1,8),
-TheSame1(1,8) ,
-TheSame2(1,8) ,
-pnttg1sol(1,8) ,
-pnttg2sol(1,8) ,
-pntcen(1,8) ,
-par1sol(1,8) ,
-par2sol(1,8) ,
-pararg1(1,8) ,
-pararg2(1,8) ,
-parcen3(1,8)
+cirsol(1, aNbSolMAX) ,
+qualifier1(1, aNbSolMAX),
+qualifier2(1, aNbSolMAX),
+TheSame1(1, aNbSolMAX) ,
+TheSame2(1, aNbSolMAX) ,
+pnttg1sol(1, aNbSolMAX) ,
+pnttg2sol(1, aNbSolMAX) ,
+pntcen(1, aNbSolMAX) ,
+par1sol(1, aNbSolMAX) ,
+par2sol(1, aNbSolMAX) ,
+pararg1(1, aNbSolMAX) ,
+pararg2(1, aNbSolMAX) ,
+parcen3(1, aNbSolMAX)
{
WellDone = Standard_False;
Intp.Perform(Bis.ThisSolution(),D1,Cu2,D2,Tol1,Tol2);
if (Intp.IsDone()) {
if ((!Intp.IsEmpty())) {
- for (Standard_Integer j = 1 ; j <= Intp.NbPoints() ; j++) {
+ for (Standard_Integer j = 1 ; j <= Intp.NbPoints() && NbrSol < aNbSolMAX; j++) {
gp_Pnt2d Center(Intp.Point(j).Value());
Standard_Real Radius = Point2.Distance(Center);
NbrSol++;