
Hi,
I am a Ph.D. student at the Indian Institute of Science, Bangalore, India.
I have been working on a project that requires a polyhedron.
The polyhedron has constraints with floating-point variables, as shown below in the following code snippet. Wher p,u,v and w are floating-point values between 0 and 1, u+v+w =1.
Variable xp0(0); Variable yp0(1); Variable zp0(2);
Variable u(0); Variable v(1); Variable w(2); Variable p(0);
int x0 = vertices[insideVertex*3+0]; int y0 = vertices[insideVertex*3+1]; int z0 = vertices[insideVertex*3+2];
int x1 = vertices[outsideVertex*3+0]; int y1 = vertices[outsideVertex*3+1]; int z1 = vertices[outsideVertex*3+2];
pd->add_constraint( u+v+w == 1); pd->add_constraint( u>=0) ; pd->add_constraint( v>=0); pd->add_constraint( w>=0); pd->add_constraint( p>=0); // pd->add_constraint( q>=0); // pd->add_constraint( p+q ==1); pd->add_constraint( ( (( p*(x0 - xp0)+ (1-p)*(x1 - xp0)) == (u*-35821+v*0+(w)*35821)) ); pd->add_constraint( ((p*(y0 - yp0)+ (1-p)*(y1 - yp0)) == (u*35821+v*0+(w)*35821)) ); pd->add_constraint( ((p*(z0 - zp0)+ (1-p)*(z1 - zp0)) == (u*-100000+v*0+(w)*-100000)));
pd->add_constraint( -( (24*p*(x0-xp0))+(24*(1-p)*(x1-xp0))) >= ((PixelX - 24)*(p*(z0-zp0)+ (1-p)*(z1-zp0)) ) ); pd->add_constraint( -( (24*p*(x0-xp0))+(24*(1-p)*(x1-xp0))) < ((PixelX+1 - 24)*(p*(z0-zp0)+ (1-p)*(z1-zp0)) ) );
pd->add_constraint( ( 24*p*(y0-yp0) + 24* (1-p)*(y1-yp0) ) >= ( (PixelY-24) * (p*(z0-zp0)+ (1-p)*(z1-zp0)) ) ); pd->add_constraint( ( 24*p*(y0-yp0) + 24* (1-p)*(y1-yp0) ) < ( (PixelY-24+1) * (p*(z0-zp0)+ (1-p)*(z1-zp0)) ) );
While compiling the program, I am getting the following error;
error: no match for ‘operator*’ (operand types are ‘Parma_Polyhedra_Library::Variable’ and ‘Parma_Polyhedra_Library::Linear_Expression’) 116 | pd->add_constraint( ( (( p*(x0 - xp0)+ (1-p)*(x1 - xp0)) == (u*-35821+v*0+(w)*35821)) ); | ~^~~~~~~~~~~ | | | | | Parma_Polyhedra_Library::Linear_Expression | Parma_Polyhedra_Library::Variable
Is there any way to get rid of this error?
Is it possible to write my constraints using PPL (using either floating-point expression or intervals)?
Thanks HABEEB