예제 #1
0
void Sculpture::interpolateColor(int x, int y, int z, double xPart, double yPart, double zPart, byte& r, byte& g, byte& b, byte& a) {
    getColor(x, y, z, r, g, b, a);
    x += 1 - doubleEqual(xPart, 0.0);
    y += 1 - doubleEqual(yPart, 0.0);
    z += 1 - doubleEqual(zPart, 0.0);
    byte r2,g2,b2,a2;
    getColor(x, y, z, r2, g2, b2, a2);
    r = (r + r2) / 2;
    g = (g + g2) / 2;
    b = (b + b2) / 2;
    a = (a + a2) / 2;
}
예제 #2
0
double Power(double base, int exponent)
{
  if(doubleEqual(base, 0) && exponent <= 0){
    return -1.0;
  }
  if(exponent == 0){
    return 1.0;
  }
  bool negative = false;
  if(exponent < 0){
    negative = true;
    exponent = -exponent;
  }
  double res = 1.0*base;
  for(int i = 2; i <= exponent; i +=2){
    res *= res;
  }
  if(exponent % 2 == 1){
    res *= base;
  }
  if(negative == true){
    return 1/res;
  }
  else{
    return res;
  }
}
예제 #3
0
	int doubleCmp(double val1,double val2) {
		if (doubleEqual(val1,val2))
			return 0;
		if (val1<val2)
			return 1;
		else
			return 2;
	}
예제 #4
0
파일: vertex.cpp 프로젝트: tkuhlengel/Alpha
bool Vertex::equals(Vertex * other){
	bool isEqual=true;
	for (int i=0; i<3; i++){
		if (!doubleEqual(arry[i], other->arry[i])){
			isEqual=false;
		}
	}
	return isEqual;
}
예제 #5
0
	void fprintfReportLine(FILE *out,int instance, int f_res1_iter, int f_res2_iter, char *additional_col) {
		//print instance name, rlt,opt,anureet results

		//prints an error line if rlt bounds do no match
		bool rlt_bound_error = false;
		if(getF_res(1)->getIter(instance) >= 0) {
			if (!(doubleEqual(-getF_res(1)->getDoubleField(instance,0,F_RES_UBOUND), 
					  getSolutions()->getDoubleField(instance,SOLUTIONS_RLT)))) {
//				fprintf(out,". . . . . rlt != bound @iter0 = %.2f ",-getF_res(1)->getDoubleField(instance,0,F_RES_UBOUND));
				rlt_bound_error = true;
			}
		}
		if(getF_res(2)->getIter(instance) >= 0) {
			if (!(doubleEqual(-getF_res(2)->getDoubleField(instance,0,F_RES_UBOUND), 
					  getSolutions()->getDoubleField(instance,SOLUTIONS_RLT)))) {
//				fprintf(out,"rlt != bound @iter0 = %.2f",-getF_res(1)->getDoubleField(instance,0,F_RES_UBOUND));
				rlt_bound_error = true;
			}
		}
//		if (rlt_bound_error) fprintf(out,"\n");


		fprintf(out,"%-13s %10.2f %10.2f | %5.2f %7.2f | "
				,getSolutions()->getInstanceName(instance)
				,getSolutions()->getDoubleField(instance,SOLUTIONS_RLT)
				,getSolutions()->getDoubleField(instance,SOLUTIONS_OPT)
				,getSolutions()->getDoubleField(instance,SOLUTIONS_V1GAP)
				,getSolutions()->getDoubleField(instance,SOLUTIONS_V1TIME));

		//print line from f_res1
		if ((f_res1_iter >= 0) && (f_res1_iter < getF_res(1)->getIter(instance))) {
			fprintf(out,"%10.2f %5.2f"
				,getF_res(1)->getDoubleField(instance,f_res1_iter,F_RES_UBOUND)*F_RES_MULTIPLIER
				,getF_res(1)->boundClosedGap(instance,f_res1_iter));

			if (getF_res(1)->getDoubleField(instance,f_res1_iter,F_RES_BESTHEUR) <= -COIN_DBL_MAX)
				fprintf(out,"\t%10s","N/A ");
			else
				fprintf(out,"\t%10.2f "
					,getF_res(1)->getDoubleField(instance,f_res1_iter,F_RES_BESTHEUR)*F_RES_MULTIPLIER);

			fprintf(out,"%7.2f %5d %5d"
				,getF_res(1)->getDoubleField(instance,f_res1_iter,F_RES_TIME)
				,getF_res(1)->getIntField(instance,f_res1_iter,F_RES_ITER)
				,getF_res(1)->getIntField(instance,f_res1_iter,F_RES_TOTCONS));
		} else {
			fprintf(out,"%10s %5s %10s %7s %5s %5s"
				,TEST_NOT_RUN_STRING
				,TEST_NOT_RUN_STRING
				,TEST_NOT_RUN_STRING
				,TEST_NOT_RUN_STRING
				,TEST_NOT_RUN_STRING
				,TEST_NOT_RUN_STRING);
		}

		fprintf(out," | ");

		//print line from f_res2
		if ((f_res2_iter >= 0) && (f_res2_iter < getF_res(2)->getIter(instance))) {
			fprintf(out,"%10.2f %5.2f"
				,getF_res(2)->getDoubleField(instance,f_res2_iter,F_RES_UBOUND)*F_RES_MULTIPLIER
				,getF_res(2)->boundClosedGap(instance,f_res2_iter));

			if (getF_res(2)->getDoubleField(instance,f_res2_iter,F_RES_BESTHEUR) <= -COIN_DBL_MAX)
				fprintf(out,"\t%10s","N/A ");
			else
				fprintf(out,"\t%10.2f "
					,getF_res(2)->getDoubleField(instance,f_res2_iter,F_RES_BESTHEUR)*F_RES_MULTIPLIER);

			fprintf(out,"%7.2f %5d %5d"
				,getF_res(2)->getDoubleField(instance,f_res2_iter,F_RES_TIME)
				,getF_res(2)->getIntField(instance,f_res2_iter,F_RES_ITER)
				,getF_res(2)->getIntField(instance,f_res2_iter,F_RES_TOTCONS));
		} else {
			fprintf(out,"%10s %5s %10s %7s %5s"
				,TEST_NOT_RUN_STRING
				,TEST_NOT_RUN_STRING
				,TEST_NOT_RUN_STRING
				,TEST_NOT_RUN_STRING
				,TEST_NOT_RUN_STRING);
		}

		//print comparison column
		fprintf(out," | %3s\n",additional_col);
	}