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); } }
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); } }