示例#1
0
// Tessellate the curve
// The points are stored in m_vPts
// virtual 
bool MH_CrvBezier::Tessellate(float fTolerance)
{
	Cleanup();

#ifdef _DEBUG
	DWORD dw1 = GetTickCount();
#endif
	bool bOK = Subdivision(fTolerance, m_vCrvPt);

#ifdef _DEBUG
	DWORD dwTimeCost = GetTickCount() - dw1;
#endif
	return bOK;
}
示例#2
0
//Display
void display (void) 
{ 
    glClearColor(rosso_sf,verde_sf,blu_sf,0.0);//rendo variabili i parametri che mi definiscono il colore 
    glClear(GL_COLOR_BUFFER_BIT); 
    int i; 

    glColor3f(0.0,0.0,1.0); 
    glPointSize(dimpunto); 
    glBegin(GL_POINTS);//per visualizzare anche i punti dove si clicca di colore blu
        for (i=1;i<=last;i++) 
            glVertex2f(Punti[i].x,Punti[i].y); 
    glEnd(); 
    glColor3f(rosso_dis,verde_dis,blu_dis); 
    glBegin(GL_LINE_STRIP); //poligono di controllo
        for (i=1;i<=last;i++) 
            glVertex2f(Punti[i].x,Punti[i].y); 
    glEnd(); 
    n=last;//setto n al numero di punti disegnato
  
	for(i=1;i<=n;i++)
		w[i]=1;//metto tutti i pesi a 1

	//scelta parametrizzazione
    if (scelta_param==0) 
    { 
        Parametrizzazione_Uniforme();    
    } 
    else if(scelta_param==1) 
    { 
        Parametrizzazione_Corde(); 
    } 
  
	//scelta della funzione
	glPointSize(2);//la curva la disegno sempre di dimensione 2
    if (metodo=='H' && last>1) 
    { 
        Hermite(); 
        Disegna_Funzioni_Base(); 
    } 
  
    if (metodo=='B' && last>1) 
    { 
        if(mod_pesi_bez==1)
			w[i_p_b]=val_peso;
		Bezier(); 
        if (subd==1) 
            Subdivision(); 
        if (d_el==1) 
            Degree_Elevation(); 
        Disegna_fBaseBernstein(); 
    } 
  
    if (metodo=='S' && last>3) 
    { 
        if(mod_pesi_spline==1)
			w[i_p_s]=val_pesos;
		Costruisci_Nodi(); 
        Funzioni_Bspline(Nodi); 
        De_Boor();   
    } 
    //glutPostRedisplay();//è per questo che le funzioni base saltellano :)...se non lo metti però quando cambi il metodo non viene cambiato immediatamente ma dopo aver spinto un altro punto 
    glFlush(); 
} 
示例#3
0
void ComplexMesh::Subdivision()
{
    Mesh M;
    Subdivision(M);
    Load(M);
}