Exemplo n.º 1
0
void changement_bezier(bezier* b)
{
	if ( ! (UN_CHAMP_CHANGE(b)||CREATION(b)) )
		return ;  

	if ( CREATION(b)
		|| CHAMP_CHANGE(b, nbPointAffiche) 
		|| CHAMP_CHANGE(b, pt)
		|| CHAMP_CHANGE(b,affiche))
	{
		if(b->tabPointAffiche != NULL)		
			free(b->tabPointAffiche);

		if(b->nbPointAffiche < 0)
			b->nbPointAffiche = 10;

		calcul_bezier(b);
	}
}
Exemplo n.º 2
0
Arquivo: o_sph.c Projeto: Apolerag/MG
static void changement(struct sphere *o)
{
  int i,j ;
  double theta,phi,pas;
  
 if ( ! (UN_CHAMP_CHANGE(o)||CREATION(o)) )
    return ;  

    
 if ( CREATION(o) || CHAMP_CHANGE(o,centre) || CHAMP_CHANGE(o,rayon) ||
     CHAMP_CHANGE(o,nb_point_affiche)  )
   {
     if (o->nb_point_affiche != o->affichage.nb_lignes)
       {
        for (i=0 ; i<o->affichage.nb_lignes ; i++)
          free(o->affichage.grille[i]);
        free(o->affichage.grille);
       }
        
        o->affichage = calcul_sphere(o->centre, o->rayon , o->nb_point_affiche);
        
   }
       
}
static void update(struct approximation_curve* ac)
{
  if (!(UN_CHAMP_CHANGE(ac) || CREATION(ac)))
    return;

  if (CHAMP_CHANGE(ac, points)
      || CHAMP_CHANGE(ac, degree)
      || CHAMP_CHANGE(ac, curve_point_count)
      || CHAMP_CHANGE(ac, use_uniform_parameterization))
  {
    // Intégrité du degré d'approximation spécifié
    if (ac->degree < 0)
      ac->degree = 0;
    else if (ac->degree >= ac->points.nb)
      ac->degree = ac->points.nb - 1;

    // Intégrité du nombre de points de la courbe à afficher
    if (ac->curve_point_count < 0)
      ac->curve_point_count = 0;

    // MàJ globale de la courbe d'approximation
    ac_update_curve(ac);
  }
}