begin process at 2012 05 30 17:58:28
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Maths & Algorithmes

 > 

Une sphere englobant tous les points


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Une sphere englobant tous les points

mercredi 9 avril 2003 à 15:05:04 | Une sphere englobant tous les points

MrPatachou

Bonjour
Je dois realiser un programme qui analyse des formes du dos ; mais je reste bloque a une etape a cause de mes lacunes en maths, je m explique :

Je dois dessiner a un moment des spheres qui englobent n points donnees ( des pR3 donc ).
J ai besoin de son centre (3 coordonnees) et de son rayon, en fonction des n points que j aurai recupere d une maniere ou d une autre.

Et evidemment je n ai AUCUNE idee de comment faire ( je sors de DUT info, les maths ne sont pas vraiment approfondies).

Si l un d entre vous peut me mettre sur la voie, je lui en serait tres reconnaissant !

Merci d avance.

Greg.
mercredi 9 avril 2003 à 16:22:51 | Re : Une sphere englobant tous les points

crocejf2000

Moi aussi je sors de IUT info, et c'est vrai que les math c'est pas ca !

Sinon, pour ta sphere, il faut (je propose) que tu fasse la moyenne des coordonéés des points, ca te donne le centre de la sphere
ex :
p1(3,5,2)
p2(10,2,0)
p3(3,9,2)
-->
psphere(5.33,5.33,1.33) -->origine

pour le rayon, c'est la difference entre ton point le plus loin par rapport au centre de la sphere et le centre de la sphere.

Je sais pas si c'est exact mais ca peut marcher

Hart


-------------------------------
Réponse au message :
-------------------------------

> Bonjour
> Je dois realiser un programme qui analyse des formes du dos ; mais je reste bloque a une etape a cause de mes lacunes en maths, je m explique :
>
> Je dois dessiner a un moment des spheres qui englobent n points donnees ( des pR3 donc ).
> J ai besoin de son centre (3 coordonnees) et de son rayon, en fonction des n points que j aurai recupere d une maniere ou d une autre.
>
> Et evidemment je n ai AUCUNE idee de comment faire ( je sors de DUT info, les maths ne sont pas vraiment approfondies).
>
> Si l un d entre vous peut me mettre sur la voie, je lui en serait tres reconnaissant !
>
> Merci d avance.
>
> Greg.
mercredi 9 avril 2003 à 16:26:17 | Re : Une sphere englobant tous les points

payen

je dirais que tu pourrais :

1. calculer le barycentre du nuage de points dans chacune des dimensions (tu calcules en fait la moyenne de tous les points sur chacun des axes)
2. une fois ce point determine, tu calcules la distance entre ce point (le barycentre) et tous les autres points (tu fais en fait des differences de coordonnees sur chacun des axes, puis tu calcules la norme sur les 3 coordonnees)
3. tu as maintenant la plus grande distance entre le barycentre du nuage de points et l'ensemble des points: c'est le rayon de ta sphere ...

cette solution fonctionne certainement, mais je ne sais pas si c'est la solution optimale (c'est a dire la sphere de plus petit rayon) ...

il te reste plus qu'a la tracer!
si t'as des soucis en maths sur ce que j'ai presente, n'hesite pas a envoyer un mail ...



-------------------------------
Réponse au message :
-------------------------------

> Bonjour
> Je dois realiser un programme qui analyse des formes du dos ; mais je reste bloque a une etape a cause de mes lacunes en maths, je m explique :
>
> Je dois dessiner a un moment des spheres qui englobent n points donnees ( des pR3 donc ).
> J ai besoin de son centre (3 coordonnees) et de son rayon, en fonction des n points que j aurai recupere d une maniere ou d une autre.
>
> Et evidemment je n ai AUCUNE idee de comment faire ( je sors de DUT info, les maths ne sont pas vraiment approfondies).
>
> Si l un d entre vous peut me mettre sur la voie, je lui en serait tres reconnaissant !
>
> Merci d avance.
>
> Greg.
samedi 12 avril 2003 à 16:23:43 | Re : Une sphere englobant tous les points

CoreBreaker

Tu calcules un cube qui emglobe les points en calculant le
min(xi), max(xi), min(yi), max(yi), min(zi), max(zi)
{xi, yi, zi} sont chaque point:
les 8 points du cubes sont donc:
{min(xi), min(yi), min(zi)}
{max(xi), min(yi), min(zi)}
{min(xi), max(yi), min(zi)}
{max(xi), max(yi), min(zi)}
{min(xi), min(yi), max(zi)}
{max(xi), min(yi), max(zi)}
{min(xi), max(yi), max(zi)}
{max(xi), max(yi), max(zi)}

Les diagonales du cubes sont donc le diamètre de ta sphère
centre: {(min(xi)+max(xi))/2, (min(yi)+max(yi))/2, (min(zi)+max(zi))/2}
et le rayon est la moitié de la longueur d'une diagonale:
sqrt((max(xi)-min(xi))²+(max(yi)-min(yi))²+(max(zi)-min(zi))²)/2

Voici un exemple en C pour calculer:

typedef struct {double x, y, y} point;
typedef struct {point min, max} minmax;
typedef struct {point centre; double rayon} sphere;

// Calcule les minima et maxima
void cal_minmax(point *nuage, int n, minmax *resultat)
{
int i;

resultat->min= resultat->max= nuage[0];
if( n > 1 )
{
for(i= 1; i < n; i++)
{
if( resultat->min.x > nuage[i].x )
resultat->min.x= nuage[i].x;
if( resultat->max.x < nuage[i].x )
resultat->max.x= nuage[i].x;

if( resultat->min.y > nuage[i].y )
resultat->min.y= nuage[i].y;
if( resultat->max.y < nuage[i].y )
resultat->max.y= nuage[i].y;

if( resultat->min.z > nuage[i].z )
resultat->min.z= nuage[i].z;
if( resultat->max.z < nuage[i].z )
resultat->max.z= nuage[i].z;
}
}
}

// Calcule la sphère englobante
void cal_sphere(point *nuage, int n, sphere *resultat)
{
minmax cube;
point vect;

cal_minmax(nuage, n, &cube);

resultat->centre.x= (cube.max.x + cube.min.x) / 2;
resultat->centre.y= (cube.max.y + cube.min.y) / 2;
resultat->centre.z= (cube.max.z + cube.min.z) / 2;

vect->x= cube.max.x - cube.min.x;
vect->y= cube.max.y - cube.min.y;
vect->z= cube.max.z - cube.min.z;

resultat->rayon= sqrt((vect->x * vect->x) +
(vect->y * vect->y) +
(vect->z * vect->z)) / 2;
}

Core Breaker


-------------------------------
Réponse au message :
-------------------------------

> Moi aussi je sors de IUT info, et c'est vrai que les math c'est pas ca !
>
> Sinon, pour ta sphere, il faut (je propose) que tu fasse la moyenne des coordonéés des points, ca te donne le centre de la sphere
> ex :
> p1(3,5,2)
> p2(10,2,0)
> p3(3,9,2)
> -->
> psphere(5.33,5.33,1.33) -->origine
>
> pour le rayon, c'est la difference entre ton point le plus loin par rapport au centre de la sphere et le centre de la sphere.
>
> Je sais pas si c'est exact mais ca peut marcher
>
> Hart
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Bonjour
> > Je dois realiser un programme qui analyse des formes du dos ; mais je reste bloque a une etape a cause de mes lacunes en maths, je m explique :
> >
> > Je dois dessiner a un moment des spheres qui englobent n points donnees ( des pR3 donc ).
> > J ai besoin de son centre (3 coordonnees) et de son rayon, en fonction des n points que j aurai recupere d une maniere ou d une autre.
> >
> > Et evidemment je n ai AUCUNE idee de comment faire ( je sors de DUT info, les maths ne sont pas vraiment approfondies).
> >
> > Si l un d entre vous peut me mettre sur la voie, je lui en serait tres reconnaissant !
> >
> > Merci d avance.
> >
> > Greg.
>
samedi 12 avril 2003 à 18:02:54 | Re : Une sphere englobant tous les points

CoreBreaker

Tu calcules un cube qui emglobe les points en calculant le
min(xi), max(xi), min(yi), max(yi), min(zi), max(zi)
{xi, yi, zi} sont chaque point:
les 8 points du cubes sont donc:
{min(xi), min(yi), min(zi)}
{max(xi), min(yi), min(zi)}
{min(xi), max(yi), min(zi)}
{max(xi), max(yi), min(zi)}
{min(xi), min(yi), max(zi)}
{max(xi), min(yi), max(zi)}
{min(xi), max(yi), max(zi)}
{max(xi), max(yi), max(zi)}

Les diagonales du cubes sont donc le diamètre de ta sphère
centre: {(min(xi)+max(xi))/2, (min(yi)+max(yi))/2, (min(zi)+max(zi))/2}
et le rayon est la moitié de la longueur d'une diagonale:
sqrt((max(xi)-min(xi))²+(max(yi)-min(yi))²+(max(zi)-min(zi))²)/2

Voici un exemple en C pour calculer:

typedef struct {double x, y, y} point;
typedef struct {point min, max} minmax;
typedef struct {point centre; double rayon} sphere;

// Calcule les minima et maxima
void cal_minmax(point *nuage, int n, minmax *resultat)
{
int i;

resultat->min= resultat->max= nuage[0];
if( n > 1 )
{
for(i= 1; i < n; i++)
{
if( resultat->min.x > nuage[i].x )
resultat->min.x= nuage[i].x;
if( resultat->max.x < nuage[i].x )
resultat->max.x= nuage[i].x;

if( resultat->min.y > nuage[i].y )
resultat->min.y= nuage[i].y;
if( resultat->max.y < nuage[i].y )
resultat->max.y= nuage[i].y;

if( resultat->min.z > nuage[i].z )
resultat->min.z= nuage[i].z;
if( resultat->max.z < nuage[i].z )
resultat->max.z= nuage[i].z;
}
}
}

// Calcule la sphère englobante
void cal_sphere(point *nuage, int n, sphere *resultat)
{
minmax cube;
point vect;

cal_minmax(nuage, n, &cube);

resultat->centre.x= (cube.max.x + cube.min.x) / 2;
resultat->centre.y= (cube.max.y + cube.min.y) / 2;
resultat->centre.z= (cube.max.z + cube.min.z) / 2;

vect->x= cube.max.x - cube.min.x;
vect->y= cube.max.y - cube.min.y;
vect->z= cube.max.z - cube.min.z;

resultat->rayon= sqrt((vect->x * vect->x) +
(vect->y * vect->y) +
(vect->z * vect->z)) / 2;
}

Core Breaker


-------------------------------
Réponse au message :
-------------------------------

> Bonjour
> Je dois realiser un programme qui analyse des formes du dos ; mais je reste bloque a une etape a cause de mes lacunes en maths, je m explique :
>
> Je dois dessiner a un moment des spheres qui englobent n points donnees ( des pR3 donc ).
> J ai besoin de son centre (3 coordonnees) et de son rayon, en fonction des n points que j aurai recupere d une maniere ou d une autre.
>
> Et evidemment je n ai AUCUNE idee de comment faire ( je sors de DUT info, les maths ne sont pas vraiment approfondies).
>
> Si l un d entre vous peut me mettre sur la voie, je lui en serait tres reconnaissant !
>
> Merci d avance.
>
> Greg.
lundi 14 avril 2003 à 17:46:36 | Re : Une sphere englobant tous les points

MrPatachou

Merci Beaucoup pour toute vos reponses !!!!
Je vais pouvoir avancer, merci !


-------------------------------
Réponse au message :
-------------------------------

> Tu calcules un cube qui emglobe les points en calculant le
> min(xi), max(xi), min(yi), max(yi), min(zi), max(zi)
> {xi, yi, zi} sont chaque point:
> les 8 points du cubes sont donc:
> {min(xi), min(yi), min(zi)}
> {max(xi), min(yi), min(zi)}
> {min(xi), max(yi), min(zi)}
> {max(xi), max(yi), min(zi)}
> {min(xi), min(yi), max(zi)}
> {max(xi), min(yi), max(zi)}
> {min(xi), max(yi), max(zi)}
> {max(xi), max(yi), max(zi)}
>
> Les diagonales du cubes sont donc le diamètre de ta sphère
> centre: {(min(xi)+max(xi))/2, (min(yi)+max(yi))/2, (min(zi)+max(zi))/2}
> et le rayon est la moitié de la longueur d'une diagonale:
> sqrt((max(xi)-min(xi))²+(max(yi)-min(yi))²+(max(zi)-min(zi))²)/2
>
> Voici un exemple en C pour calculer:
>
> typedef struct {double x, y, y} point;
> typedef struct {point min, max} minmax;
> typedef struct {point centre; double rayon} sphere;
>
> // Calcule les minima et maxima
> void cal_minmax(point *nuage, int n, minmax *resultat)
> {
> int i;
>
> resultat->min= resultat->max= nuage[0];
> if( n > 1 )
> {
> for(i= 1; i < n; i++)
> {
> if( resultat->min.x > nuage[i].x )
> resultat->min.x= nuage[i].x;
> if( resultat->max.x < nuage[i].x )
> resultat->max.x= nuage[i].x;
>
> if( resultat->min.y > nuage[i].y )
> resultat->min.y= nuage[i].y;
> if( resultat->max.y < nuage[i].y )
> resultat->max.y= nuage[i].y;
>
> if( resultat->min.z > nuage[i].z )
> resultat->min.z= nuage[i].z;
> if( resultat->max.z < nuage[i].z )
> resultat->max.z= nuage[i].z;
> }
> }
> }
>
> // Calcule la sphère englobante
> void cal_sphere(point *nuage, int n, sphere *resultat)
> {
> minmax cube;
> point vect;
>
> cal_minmax(nuage, n, &cube);
>
> resultat->centre.x= (cube.max.x + cube.min.x) / 2;
> resultat->centre.y= (cube.max.y + cube.min.y) / 2;
> resultat->centre.z= (cube.max.z + cube.min.z) / 2;
>
> vect->x= cube.max.x - cube.min.x;
> vect->y= cube.max.y - cube.min.y;
> vect->z= cube.max.z - cube.min.z;
>
> resultat->rayon= sqrt((vect->x * vect->x) +
> (vect->y * vect->y) +
> (vect->z * vect->z)) / 2;
> }
>
> Core Breaker
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Moi aussi je sors de IUT info, et c'est vrai que les math c'est pas ca !
> >
> > Sinon, pour ta sphere, il faut (je propose) que tu fasse la moyenne des coordonéés des points, ca te donne le centre de la sphere
> > ex :
> > p1(3,5,2)
> > p2(10,2,0)
> > p3(3,9,2)
> > -->
> > psphere(5.33,5.33,1.33) -->origine
> >
> > pour le rayon, c'est la difference entre ton point le plus loin par rapport au centre de la sphere et le centre de la sphere.
> >
> > Je sais pas si c'est exact mais ca peut marcher
> >
> > Hart
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Bonjour
> > > Je dois realiser un programme qui analyse des formes du dos ; mais je reste bloque a une etape a cause de mes lacunes en maths, je m explique :
> > >
> > > Je dois dessiner a un moment des spheres qui englobent n points donnees ( des pR3 donc ).
> > > J ai besoin de son centre (3 coordonnees) et de son rayon, en fonction des n points que j aurai recupere d une maniere ou d une autre.
> > >
> > > Et evidemment je n ai AUCUNE idee de comment faire ( je sors de DUT info, les maths ne sont pas vraiment approfondies).
> > >
> > > Si l un d entre vous peut me mettre sur la voie, je lui en serait tres reconnaissant !
> > >
> > > Merci d avance.
> > >
> > > Greg.
> >
>


Cette discussion est classée dans : points, maths, sphere, englobant


Répondre à ce message

Sujets en rapport avec ce message

Pavé minimum (parallélépipède) englobant n points... [ par brindillee ] Bonjour à tous,Bon, je suis à la recherche (je suis à la bourre sévère...) d'une fonction sous C++ permettant de calculer le pavé englobant (bounding Code pour Sphere en OPENGL [ par fcoutel ] BOnjour!Est ce que quelqu'un aurait le code pour creer une sphere avec les parametres radius stacks slices?Merci Histoire de pixels et de points [ par elflink ] Jamais les pixels n'ont connu de tels points.car les pixels sont des pixels,et les points des points.Mais à connaitre la couleur d'un points, autant c marquage de point [ par maigmoc ] Je fais une appli  dans laquelle je calcule le barycentre des differentes images. Mon souci est de marquer par un point en couleur ces points caracter transformer un fichier de points en une image ( urgent) [ par aurelien070 ] je dois transformer mon fichier contenant des points en une image (.jpeg)avec du code en c++. Je n'ai pas d'idée comment faire donc si quelqu'un peutm probleme d'affichage bizarre [ par mikey84 ] Bonjour. j'ai un probleme d'affichage concernant une application de texture sur une sphere. La sphere prend la couleur du premier pixel de la texture. Maths 3d [ par Cornell711 ] Salut, Je ne suis pas très bon en graphisme en général mais j'ai besoin de quelque chose de précis. Je crois comprendre que du point de vue d'un progr Image Jpeg( urgent) [ par aurelien070 ] J'ai créer mon image et en fait je dois recuperer des points sur une base de .donnée)!Ensuite je les stockes dans un fichier( .txt)du style (x1=12; y1 Problem : Sphere/Scene qui s'efface.. [ par barraq ] Salut, voila mon projet avance pas trop mal, mais j'ai un dernier petit soucis en OpenGL : 1) j'aimerai dessiner un sphere dont la moitié serait noir Un quadrillage et des petits points qui se déplacent dessus [ par chandler8692 ] Salut, dans le cadre de mon TIPE sur les automates cellulaires (ca ne vous dit surement rien mais c'est super interessant), j'aimerai programmer ceci


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,011 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales