Exemple #1
0
void graphics::NgoiNhaTiHon(QPainter& painter)
{
    QPoint A(150,450);
    QPoint B(350,450);
    QPoint C(350,200);
    QPoint D(250,100);
    QPoint E(150,200);

    QPolygon poly1;
    poly1 << A << B << C << D << E;
    painter.drawPolygon(poly1);
 // cai cua
    QPoint A1(250,450);
    QPoint B1(250,300);
    QPoint C1(200,300);
    QPoint D1(200,450);


    QPolygon poly11;
    poly11 << A1 << B1 << C1 << D1;
    painter.drawPolygon(poly11);
    painter.drawRect(300,250,30,30);
// ong khoi
    QPoint A12(200,150);
    QPoint B12(200,90);
    QPoint C12(175,90);
    QPoint D12(175,175);


    QPolygon poly12;
    poly12 << A12 << B12 << C12 << D12;
    painter.drawPolyline(poly12);

}
void LocalGeometryRef::ComputeProbabilityMatrix()
{
	this->probability_matrix.set_size(this->num_row, this->num_row);
	vnl_matrix< double > D;
	D.set_size(this->num_row, this->num_row);
	D.fill(0);
	for(int i = 0; i < this->num_row; i++)
	{
		D(i, i) = this->similarity_matrix.get_row(i).sum(); 
	}

	for(int row=0; row <this->num_row; row++)
	{
		for(int col=0; col<this->num_row; col++)
		{
			if( fabs(D(row, row)) < 1.0E-6 )
			{
				this->probability_matrix(row,col) = this->similarity_matrix(row,col)/1;
			}
			else
			{
				this->probability_matrix(row,col) = this->similarity_matrix(row,col)/D(row, row);
			}
		}
	}

	for(int row=0; row <this->num_row; row++)
	{
		if( fabs(D(row, row)) < 1.0E-6 )
		{
			D(row, row) = 0.0005;
		}
	}

	vnl_symmetric_eigensystem<double> sysD(D);
	this->D12 = sysD.square_root();
	this->Dn12 = sysD.inverse_square_root();	

	this->probability_matrix = D12 * this->probability_matrix;
	this->probability_matrix = this->probability_matrix * Dn12;

	//output files for debugging
	FILE *fp1 = fopen("D.txt","w");
	for(int i=0; i<this->num_row; i++)
	{
		for(int j=0; j<this->num_row; j++)
		{
			fprintf(fp1,"%f\t",D(i, j));
		}
		fprintf(fp1,"\n");
	}
	fclose(fp1);

	FILE *fp2 = fopen("D12.txt","w");
	for(int i=0; i<this->num_row; i++)
	{
		for(int j=0; j<this->num_row; j++)
		{
			fprintf(fp2,"%f\t",D12(i, j));
		}
		fprintf(fp2,"\n");
	}
	fclose(fp2);

	FILE *fp3 = fopen("similarity.txt","w");
	for(int i=0; i<this->num_row; i++)
	{
		for(int j=0; j<this->num_row; j++)
		{
			fprintf(fp3,"%f\t",this->similarity_matrix(i, j));
		}
		fprintf(fp3,"\n");
	}
	fclose(fp3);

	FILE *fp4 = fopen("probability.txt","w");
	for(int i=0; i<this->num_row; i++)
	{
		for(int j=0; j<this->num_row; j++)
		{
			fprintf(fp4,"%f\t",this->probability_matrix(i, j));
		}
		fprintf(fp4,"\n");
	}
	fclose(fp4);

	FILE *fp5 = fopen("Dn12.txt","w");
	for(int i=0; i<this->num_row; i++)
	{
		for(int j=0; j<this->num_row; j++)
		{
			fprintf(fp5,"%f\t",Dn12(i, j));
		}
		fprintf(fp5,"\n");
	}
	fclose(fp5);
}