コード例 #1
0
void makePositiveLeadingCoeff(Polynomial *polynomial)
{
    assert(polynomial->deg != DISPOSED_POLYNOMIAL_DEG);
    if (polynomial->coeffs[polynomial->deg] < 0.0) {
        multiplyByScalar(polynomial, -1.0);
    }
}
コード例 #2
0
ファイル: testApp.cpp プロジェクト: stdmtb/3s1e
//--------------------------------------------------------------
//Making image morphing
void testApp::updateMorph( float morphValue, int morphImageIndex )
{
	mapX.allocate( w, h );			//w and h is size of gray1 image
	mapY.allocate( w, h );

	//Get pointers to pixels data
	float *flowXPixels = flowX.getPixelsAsFloats();	
	float *flowYPixels = flowY.getPixelsAsFloats();
	float *mapXPixels = mapX.getPixelsAsFloats();
	float *mapYPixels = mapY.getPixelsAsFloats();
	for (int y=0; y<h; y++) {
		for (int x=0; x<w; x++) {
			int i = x + w * y;		//pixels' index
			mapXPixels[ i ] = x + flowXPixels[ i ] * morphValue; 
			mapYPixels[ i ] = y + flowYPixels[ i ] * morphValue; 
		}
	}
	mapX.flagImageChanged();		//Notify that pixels values were changed
	mapY.flagImageChanged();	

	inverseMapping( mapX, mapY );

	//Create big maps
	int W = color1.width;
	int H = color1.height;
	if ( !bigMapX.bAllocated ) {
		bigMapX.allocate( W, H );
		bigMapY.allocate( W, H );
	}
	//bigMapX and bigMapY have type ofxCvFloatImage
	bigMapX.scaleIntoMe( mapX, CV_INTER_LINEAR );
	bigMapY.scaleIntoMe( mapY, CV_INTER_LINEAR );
	multiplyByScalar( bigMapX, 1.0 * W / w );
	multiplyByScalar( bigMapY, 1.0 * H / h );
	
	//Do warping

	//Select image to morph
	if ( morphImageIndex == 1 ) {
		morph = color1;		//First input image
	}
	else {
		morph = colorTest;	//Checkerboard image
	}
	morph.remap( bigMapX.getCvImage(), bigMapY.getCvImage() );

}
コード例 #3
0
ファイル: main.c プロジェクト: ramntry/numerical_analysis
void makeLagrangePolynomial(Polynomial *polynomial, Table const *table)
{
    size_t const size = table->xs.size;
    initPolynomial(polynomial, size - 1);
    setToScalar(polynomial, 0.0);
    Polynomial term;
    initPolynomial(&term, polynomial->deg);
    for (size_t k = 0; k < size; ++k) {
        setToScalar(&term, 1.0);
        for (size_t j = 0; j < size; ++j) {
            if (j != k) {
                addRoot(&term, table->xs.values[j]);
            }
        }
        long double denominator = 1.0;
        long double const xk = table->xs.values[k];
        for (size_t j = 0; j < size; ++j) {
            denominator *= (j == k ? 1.0 : xk - table->xs.values[j]);
        }
        multiplyByScalar(&term, table->ys.values[k] / denominator);
        addPolynomial(polynomial, &term);
    }
    disposePolynomial(&term);
}