Moteur 3D - calculs spéciaux (type sphère)

Discussion générale entre passionnés et amateurs de mathématiques sur des sujets mathématiques variés
Corax
Messages: 6
Enregistré le: 17 Aoû 2021, 16:20
Localisation: France

Moteur 3D - calculs spéciaux (type sphère)

par Corax » 17 Aoû 2021, 17:01

Bonjour à tous,

Je suis en train de créer un moteur 3D sur une base spéciale (qui reproduit la déformation de la rétine). J'ai recommencé et recommencé mes calculs, changé tout, et il me reste un problème à régler, mathématique bien sûr. Il paraît très simple, pourtant mes calculs ne correspondent pas aux observations...

Entrons dans le vif du sujet : à un certain moment, je dois calculer la position (relative ou absolue, j'utiliserais le symbole D pour dire relatif) du point C au centre de mon champ de vision pour une distance à C "Dp" donnée.
Je connais :
- Rgd, entre -π et π, correspondant à l'angle de mon regard vers la droite ou la gauche en radians ( 0 quand je suis l'axe des x)
- Rhb, entre -π/2 (en bas) et π/2 (en haut), vers le haut et le bas (0 = en face)

- ma position [xM,yM,zM]
-"Dp"


Dès lors je me suis dit que je pouvais faire un parallélépipède tout ce qu'il y a de plus honnête, si on l'appelle ACKZMYWX (en rompant toute nomenclature correcte, mais ça ne change rien)
‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸C
A‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸|‸‸‸‸‸‸‸‸‸‸‸‸‸K
|‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸Z‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸|‸‸‸‸‸‸‸‸‸‸‸‸‸|
|‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸|‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸W‸‸‸‸‸‸‸‸‸‸‸‸|‸
Y‸‸‸‸‸‸‸‸‸‸‸‸‸ |‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸X
‸‸‸‸‸‸‸‸‸‸‸‸‸‸‸M

où MX,MY et MZ suivent les axes xyz.

MX = Dxc selon toute logique, de même que MY,MZ = Dyc, Dzc (x relatif de C par rapport à M, ma position)

pourtant, DyC ne semble pas égale à tan(Rgd) pas plus que DzC à tan(Rhb) car

Ne donne pas la bonne réponse, car pour M[1,1,1] et Rgd=-π/4 et Dp=,
je trouve Rhb = -0,785398 (atan(1)) au lieu de 0.6154797 qui est la bonne réponse trouvée grâce à géogébra 3D.

Donc, comment trouver Dxc, Dyc et Dzc à partir de mes informations de manière correcte ?

Pistes :
- -0,785398 correspond dans l'idée à racine de 2 (ou en tout cas juste le carré axes y/Z) alors que la vraie réponse concerne le cube (axes x/y/z)


- peut-être que Rhb = angle(KMX) n'est pas égal à l'angle (WMC) contrairement à ce que conclurait la méthode précédente (pareil pour Rgd et (KMC)).

- ne fonctionne pas non plus, mais il semble que Rhb ait un impact sur Dy et Rgd sur Dz


Ce problème a l'air plus simple que le reste des calculs... je pense qu'il est facilement résoluble !
Merci beaucoup d'avance pour votre aide !





NB : si vous vous questionnez sur la suite des calculs :
Code: Tout sélectionner
            if not 1.5708>=Rgd>=-1.5708: Dxc*=-1

            Xi = math.sqrt((Dxc+pos[0]-posp[0])**2+(math.tan(Rgd)*Dxc+pos[1]-posp[1])**2+(math.tan(Rhb)*Dxc+pos[2]-posp[2])**2)
                            #             
            Dxg=math.cos(Rgd+1.5708)*Dp
            Zeta = math.sqrt((Dxg+pos[0]-posp[0])**2+(math.sin(Rgd+1.5708)*Dp+pos[1]-posp[1])**2+(pos[2]-posp[2])**2)
            #print("Position c :",Dxc+pos[0],",",math.tan(Rgd)*Dxc+pos[1],",",math.tan(Rhb)*Dxc+pos[2])                                                        # sûr ?
           
            s=Dp+Xi/2
            #print("aire (xi)**2:",abs(s*(s-Dp)**2*(s-Xi)))
            B=math.sqrt(Dp**2-abs(s*(s-Dp)**2*(s-Xi))*4/Dp**2)
            #print("B :",B, "=", Dp)
           
            ss=Dp+Zeta/2
            F=math.sqrt(Dp**2-abs(ss*(ss-Dp)**2*(ss-Zeta))*4/Dp**2)
            #print("F :",F)
            J=math.sqrt(B**2+F**2)
            #print("J :",J)
            prex=(math.acos(B/J)
                    *1.146*200) # entre 0 et 200
            xecran=200-prex if Rgd<0 else prex+200

            prey=(math.acos(J/Dp)
                    *1.432*300)
            yecran=300-prey if Rhb >0 else prey+300



GaBuZoMeu
Habitué(e)
Messages: 6123
Enregistré le: 05 Mai 2019, 09:07

Re: Moteur 3D - calculs spéciaux (type sphère)

par GaBuZoMeu » 17 Aoû 2021, 17:53

Bonsoir,

Je ne comprends pas vraiment ce que tu tentes d'expliquer.
Est-ce que ton problème est un problème passage des coordonnées sphériques aux coordonnées cartésiennes ?
https://fr.wikipedia.org/wiki/Coordonn%C3%A9es_sph%C3%A9riques
Ton Dp est le rayon, ton Rgd la longitude et ton Rhb la latitude, c'est ça ?

Si ce n'est pas ça, essaie de mieux spécifier ton problème.

Corax
Messages: 6
Enregistré le: 17 Aoû 2021, 16:20
Localisation: France

Re: Moteur 3D - calculs spéciaux (type sphère)

par Corax » 17 Aoû 2021, 20:30

.
Modifié en dernier par Corax le 17 Aoû 2021, 20:31, modifié 1 fois.

Corax
Messages: 6
Enregistré le: 17 Aoû 2021, 16:20
Localisation: France

Re: Moteur 3D - calculs spéciaux (type sphère)

par Corax » 17 Aoû 2021, 20:31

GaBuZoMeu a écrit:
Si ce n'est pas ça, essaie de mieux spécifier ton problème.

Bonsoir,
Pas exactement. Le but est juste de trouver les coords réelles de C pour ensuite faire d'autres calculs. Je ne peux pas utiliser de coordonnées sphériques qui me feraient basculer dans un autre système de coordonnées, et ne me donneraient pas la position absolue de C dont j'ai besoin.


(En fait j'ai essayé avec les coordonnées sphériques mais ça ne fonctionnait pas, j'ai trouvé une autre technique qui marche avec juste les coordonnées de C)


Récapitulons donc (en plus clair):

Soit M(xm,ym,zm), Dp (>0)
et Rgd, Rhb qui sont deux angles (rad) et qui correspondent à vers où on regarde (Rgd de combien on est tourné vers la gauche ou la droite, Rhb de combien on est tourné vers le haut ou le bas)

Quelles sont les coordonnées du point C, pile en face de nous (dans l'axe où on regarde) situé à une distance Dp de M ?

GaBuZoMeu
Habitué(e)
Messages: 6123
Enregistré le: 05 Mai 2019, 09:07

Re: Moteur 3D - calculs spéciaux (type sphère)

par GaBuZoMeu » 17 Aoû 2021, 21:27

Corax a écrit:Soit M(xm,ym,zm), Dp (>0)
et Rgd, Rhb qui sont deux angles (rad) et qui correspondent à vers où on regarde (Rgd de combien on est tourné vers la gauche ou la droite,

autrement dit, la longitude dans les coordonnées sphériques avec origine en M
Rhb de combien on est tourné vers le haut ou le bas)

autrement dit, la latitude
Quelles sont les coordonnées du point C, pile en face de nous (dans l'axe où on regarde) situé à une distance Dp de M ?

Autrement dit, Dp est le rayon.
Donc :

Corax
Messages: 6
Enregistré le: 17 Aoû 2021, 16:20
Localisation: France

Re: Moteur 3D - calculs spéciaux (type sphère)

par Corax » 18 Aoû 2021, 09:52

GaBuZoMeu a écrit:Donc :


Ca marche bien ! J'ai toujours pensé à utiliser les coordonnées sphériques après, mais pas pour C :gene: ! Il reste encore quelques problèmes à régler pour la suite, mais c'est déjà beaucoup !

 

Retourner vers ⚜ Salon Mathématique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 24 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite