Archived issue #0029446
Parameter U should used for GeomFill_CoonsAlgPatch::Value()
Description
According to the Coons parametric equation(see the attach picture),
the parameter U should used to evaluate the point on Coons patch,
in the 7.2.0 source code, the parameter U is commented as follows:
//gp_Pnt GeomFill_CoonsAlgPatch::Value(const Standard_Real U,
gp_Pnt GeomFill_CoonsAlgPatch::Value(const Standard_Real ,
const Standard_Real V) const
{
...
}
Besides in GeomFill_ConstrainedFilling::Init(B1, B2, B3) function:
void GeomFill_ConstrainedFilling::Init(const Handle(GeomFill_Boundary)& B1,
const Handle(GeomFill_Boundary)& B2,
const Handle(GeomFill_Boundary)& B3,
const Standard_Boolean NoCheck)
{
for (i = 0; i <= 3; i++){
mig[i] = 1.;
if(!tgalg[i].IsNull()) {
if(!CheckTgte(i)) {
Handle(Law_Function) fu1,fu2;
ptch->Func(fu1,fu2);
fu1 = Law::MixBnd(Handle(Law_Linear)::DownCast (fu1));
fu2 = Law::MixBnd(Handle(Law_Linear)::DownCast (fu2));
ptch->Func(fu1,fu2);
break;
}
}
}
}
The blending function fu1 and fu2 only get not set back. The last ptch->Func() should change to ptch->SetFunc();
whereas in GeomFill_ConstrainedFilling::Init(B1, B2, B3, B4):
void GeomFill_ConstrainedFilling::Init(const Handle(GeomFill_Boundary)& B1,
const Handle(GeomFill_Boundary)& B2,
const Handle(GeomFill_Boundary)& B3,
const Handle(GeomFill_Boundary)& B4,
const Standard_Boolean NoCheck)
{
// On verifie les champs tangents ne changent pas de direction.
for (i = 0; i <= 3; i++){
mig[i] = 1.;
if(!tgalg[i].IsNull()) {
if(!CheckTgte(i)) {
Handle(Law_Function) fu1,fu2;
ptch->Func(fu1,fu2);
Handle(Law_Function) ffu1 = Law::MixBnd(Handle(Law_Linear)::DownCast (fu1));
Handle(Law_Function) ffu2 = Law::MixBnd(Handle(Law_Linear)::DownCast (fu2));
ptch->SetFunc(ffu1,ffu2);
break;
}
}
}
}
the parameter U should used to evaluate the point on Coons patch,
in the 7.2.0 source code, the parameter U is commented as follows:
//gp_Pnt GeomFill_CoonsAlgPatch::Value(const Standard_Real U,
gp_Pnt GeomFill_CoonsAlgPatch::Value(const Standard_Real ,
const Standard_Real V) const
{
...
}
Besides in GeomFill_ConstrainedFilling::Init(B1, B2, B3) function:
void GeomFill_ConstrainedFilling::Init(const Handle(GeomFill_Boundary)& B1,
const Handle(GeomFill_Boundary)& B2,
const Handle(GeomFill_Boundary)& B3,
const Standard_Boolean NoCheck)
{
for (i = 0; i <= 3; i++){
mig[i] = 1.;
if(!tgalg[i].IsNull()) {
if(!CheckTgte(i)) {
Handle(Law_Function) fu1,fu2;
ptch->Func(fu1,fu2);
fu1 = Law::MixBnd(Handle(Law_Linear)::DownCast (fu1));
fu2 = Law::MixBnd(Handle(Law_Linear)::DownCast (fu2));
ptch->Func(fu1,fu2);
break;
}
}
}
}
The blending function fu1 and fu2 only get not set back. The last ptch->Func() should change to ptch->SetFunc();
whereas in GeomFill_ConstrainedFilling::Init(B1, B2, B3, B4):
void GeomFill_ConstrainedFilling::Init(const Handle(GeomFill_Boundary)& B1,
const Handle(GeomFill_Boundary)& B2,
const Handle(GeomFill_Boundary)& B3,
const Handle(GeomFill_Boundary)& B4,
const Standard_Boolean NoCheck)
{
// On verifie les champs tangents ne changent pas de direction.
for (i = 0; i <= 3; i++){
mig[i] = 1.;
if(!tgalg[i].IsNull()) {
if(!CheckTgte(i)) {
Handle(Law_Function) fu1,fu2;
ptch->Func(fu1,fu2);
Handle(Law_Function) ffu1 = Law::MixBnd(Handle(Law_Linear)::DownCast (fu1));
Handle(Law_Function) ffu2 = Law::MixBnd(Handle(Law_Linear)::DownCast (fu2));
ptch->SetFunc(ffu1,ffu2);
break;
}
}
}
}
Steps to reproduce
d
Public activity
1 archived note
Participants are labeled by their role within this record.