Go Down

Topic: programmation cartésienne. (Read 7037 times) previous topic - next topic

jfs

#15
Nov 24, 2011, 12:09 am Last Edit: Nov 24, 2011, 12:12 am by Jean-François Reason: 1
Il me semble avoir trouvé une solution graphique pour résoudre ce problème :




Avec une ellipse dont l'excentricité est plus prononcée :




Sur papier j'ai réussi la même chose avec un chiffre impair de segments, mais je n'arrive pas à le reproduire en code  :smiley-mr-green:
Je verrai ça demain.

En gros les lignes bleues sont la projection du cercle sur l'ellipse, en étant dirigée par l'axe des x qui est divisé en parts égales du nombre de segments.

Il faut ensuite que je détermine les points d'intersection enter les lignes bleues et mon ellipse et....  d'autres problèmes arriveront  XD
Pas d'aide par MP !!!

Concernant le fonctionnement du forum tout se trouve dans les messages épinglés en tête de page.

jfs

Avec des nombres extrêmes de segments (soit 5-100) je m'aperçois qu'il subsiste une différence entre les segments des x et des y  =(

Apparemment il faudrait que mes lignes bleues soient paraboliques ou hyperboliques... est ce que quelqu'un pourrait m'expliquer comment définir une fonction des ces deux types qui pourrait correspondre à ce que je recherche ?
Pas d'aide par MP !!!

Concernant le fonctionnement du forum tout se trouve dans les messages épinglés en tête de page.

ekaki

(...)
Apparemment il faudrait que mes lignes bleues soient paraboliques ou hyperboliques... est ce que quelqu'un pourrait m'expliquer comment définir une fonction des ces deux types qui pourrait correspondre à ce que je recherche ?


J'en parlais précédemment, donc...
Si je ne m'abuse, l'intégration numérique entre le périmètre de l'ellipse et l"hyperbole passant par les foyers est :
yc=sqrt(a²sin(theta)²+b²cos(theta)²)
yc étant l'abscisse curviligne.

PS. Penses à mettre un dissipateur sur l'Atmel Jean-François -.^

jfs

#18
Nov 25, 2011, 08:20 am Last Edit: Nov 29, 2011, 06:49 pm by Jean-François Reason: 1

J'en parlais précédemment, donc...

J'avais noté  XD, je ne voulais pas te froisser par ma dernière remarque.


Si je ne m'abuse, l'intégration numérique entre le périmètre de l'ellipse et l"hyperbole passant par les foyers est :
yc=sqrt(a²sin(theta)²+b²cos(theta)²)
yc étant l'abscisse curviligne.

Merci pour cette formule, pour l'instant je n'ai pas encore réussi à la mettre en forme dans mon programme.... mais je en désespère pas  :smiley-mr-green:



PS. Penses à mettre un dissipateur sur l'Atmel Jean-François -.^

J'ai remarqué que ça bouffait pas mal de CPU ces "petits" calculs :smiley-eek:
Pas d'aide par MP !!!

Concernant le fonctionnement du forum tout se trouve dans les messages épinglés en tête de page.

Super_Cinci

J'essaie de comprendre, mais fiou! ça me rappelle de vieux souvenirs de prépa, il y a 14 ans, je t'aurais pondu cela en 2 minutes, pis surtout, j'aurais compris tout de suite ce que tu voulais vraiment faire. Je me demande si tu n'as pas intérêt à basculer sur la platine chipkit max32 (32 bits 80MHz, soit plus que 20 x plus rapide en float, mais sans eeprom...)

bon courage!

jfs

Toujours pas réussi à faire ma fonction para-hyper-bolique.... mais en attendant, j'aimerais trouver le moyen de mettre les cercles rouges à l'intersection entre les lignes bleues et l'ellipse :



Est ce que quelqu'un peut m'indiquer comment déterminer ces points ?
Pas d'aide par MP !!!

Concernant le fonctionnement du forum tout se trouve dans les messages épinglés en tête de page.

jfs

C'est bon, j'ai réussi à faire quelques chose de satisfaisant (sauf la vitesse d'exécution) :



J'ai fait un mix entre ma méthode d'approche de la position du segment par intégration et de rotation polaire.... en gros de l'intégration polaire  XD
Pas d'aide par MP !!!

Concernant le fonctionnement du forum tout se trouve dans les messages épinglés en tête de page.

ekaki

Joli ! ^.^
T'as fait une vérification cyclique de la longueur des segments afin de vérifier ?

jfs

#23
Dec 03, 2011, 05:02 pm Last Edit: Dec 03, 2011, 05:11 pm by Jean-François Reason: 1
En fait je suis en train de faire des contrôles et ça me prend des plombes à chaque essais.(je trace un cercle de la valeur du segments, ça me donne une bonne idée de la "précision").

Pour 10 segments avec un ratio de 70%, il manque environ 1/2 segments de longueur au périmètre pour que les 10 puissent s'inscrire dans l'ellipse.

Pour 51 segments, et un ratio de 50%, j'ai fait un facteur de correction qui me permet d'aller de 15 à 60 segments sans trop d'erreur.

Là je contrôle avec 101 segments et il manque 1/3 de segments pour que le dernier s'ajuste sur le premier.....

Donc la méthode est pas encore au top, mais  ça avance  :D
Pas d'aide par MP !!!

Concernant le fonctionnement du forum tout se trouve dans les messages épinglés en tête de page.

ekaki

#24
Dec 03, 2011, 11:25 pm Last Edit: Dec 03, 2011, 11:27 pm by ekaki Reason: 1
Attention, en faisant une vérification par addition de tous les segments et en comparant par rapport à la formule du périmètre écliptique il est normal que cela soit trop court si tu définis 10 ou 20 segments.
Et ce, même si les segments sont tous de la même taille.
Pour que cela colle "finement" avec la formule du périmètre écliptique il faut mettre un nombre de segment très grand. (en théorie nombre segments infini => périmètre écliptique)

En fait par vérification je pensais plus à comparer la longueur de chaque segments entre eux. Histoire d'être sur qu'ils sont tous de la même longueur (moins une erreur à 10-5 ou dans le genre, liée aux approximations de calcul).

jfs

#25
Dec 03, 2011, 11:43 pm Last Edit: Dec 03, 2011, 11:47 pm by Jean-François Reason: 1
Ce que je voulais dire c'est que je divise la distance (x1-y1) - (x2-y2) de chaque segment. Ce point est le centre d'un cercle dont le diamètre correspond à la valeur espérée du segment, si les cercles se touchent sans se chevaucher, c'est suffisant pour moi... un contrôle graphique-visuel en quelque sorte :



J'essaye de trouver une méthode pour définir un périmètre optimum pour un cercle circonscrit, mais pour l'instant ce n'est pas encore ça.

P=segment/sin(radians(360)/nbrSegments/2)*PI

Ou
P = périmètre
segment= longueur des segments
nbrSegments = le nombre de coté du polygone inscrit

Il subsiste une erreur, même lorsque l'ellipse est un cercle et avec n'importe quel nombre de segments
Pas d'aide par MP !!!

Concernant le fonctionnement du forum tout se trouve dans les messages épinglés en tête de page.

jfs

#26
Dec 04, 2011, 08:19 pm Last Edit: Dec 07, 2011, 11:10 pm by Jean-François Reason: 1
J'ai un peu changé ma formule pour calculer le périmètre de mon cercle circonscrit :

P=segment/sin(radians(360)/nbrSegments)*PI*2*corr

Ou
P = périmètre
segment= longueur des segments
nbrSegments = le nombre de coté du polygone inscrit
corr = facteur de correction en fonction du nombre de segments

Je dois corriger en multipliant par "corr" pour arriver au plus juste, voici les valeurs (approchées) relevées pour la variable "corr" pour différents nombre de segments :

201 > 0.5589
191 > 0.531  
181 > 0.507
171 > 0.952
161 > 0.90
151 > 0.8405
141 > 0.79
131 > 0.73
121 > 0.67885
111 > 0.93
101 > 0.849    
91 > 0.76      
81 > 0.905    
71 > 0.987    
61 > 0.851  
51 > 0.995    
41 > 0.918  
31 > 0.945  
21 > 0.988
20 > 0.989   
19 > 0.946   
18 > 0.987   
17 > 0.979   
16 > 0.969   
15 > 0.979   
14 > 0.959   
13 > 0.955   
12 > 0.97    
11 > 0.945
10 > 0.8641

Je ne sais pas comment trouver une relation entre ces valeurs afin de les calculer automatiquement.... si quelqu'un trouve une relation ou le moyen de la trouver  ;)

Edit : je corrige les valeurs en même temps que je renforce mes essais  ;)
Pas d'aide par MP !!!

Concernant le fonctionnement du forum tout se trouve dans les messages épinglés en tête de page.

ekaki

Depuis quelques jours je suis charrette au taf' et comme ça rame pas mal le forum (à priori ce n'est pas lié à ma connexion VPN farfelue) j'ai pas vraiment eu le temps de me pencher sur tes dernières évolutions. Tout au mieux de lire tes messages... Que je mets déjà plus de 30s à ouvrir (ce n'est pas très pratique).
Mais dès que je peux, je regarde cela -.^

Sinon, placer une variable de premier degré ne me semble pas suffisant pour faire des ajustements dans ces ensembles.
Du reste en voyant les fluctuations f(corr), cela ne parait ni linéaire ni exp/log (?). Logiquement cela doit être fonction de cos/sin, au minimum.

jfs

#28
Dec 04, 2011, 10:55 pm Last Edit: Dec 04, 2011, 11:25 pm by Jean-François Reason: 1
... j'ai pas vraiment eu le temps de me pencher sur tes dernières évolutions. Tout au mieux de lire tes messages...
Mais dès que je peux, je regarde cela -.^

Pas de soucis, c'est déjà super sympa d'y prêter attention.


Du reste en voyant les fluctuations f(corr), cela ne parait ni linéaire ni exp/log (?). Logiquement cela doit être fonction de cos/sin, au minimum.


C'est ce que je me disais également, j'ai cherché tout ce dimanche et je n'ai pas réussi à trouver...  :smiley-sweat:
Pas d'aide par MP !!!

Concernant le fonctionnement du forum tout se trouve dans les messages épinglés en tête de page.

Go Up