begin process at 2012 02 11 06:19:52
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Algorithme

 > 

Maths

 > 

Formules 3D


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

Formules 3D

dimanche 2 novembre 2008 à 21:50:53 | Formules 3D

Bacterius

Membre Club

Bonsoir,
je cherche, dans mes moments perdus, à réaliser un labyrinthe en 3D, rien d'extraordinaire, juste des murs avec des textures, et une caméra que l'on peut contrôler.
Première approche avec la 3D : j'ouvre mon projet, je l'enregistre, et je coince.
Retour au papier : quelques formules utiles improvisées :

Distance entre deux points 3D A et B :

Soient C1 et C2 deux longueurs.
C1 est égal à A.X - B.X
C2 est égal à A.Y - B.Y
On utilise le théorème de Pythagore ...
Soit D la distance des deux points, en dehors de leur coordonnée Z (2D quoi) :
D² = C1² + C2²
Soit D = Sqrt(C1² + C2²)

Jusque là pas de problème

Ensuite, soit L la valeur de A.Z - B.Z
Pythagore ...
Soit T la distance des deux points 3D (on y arrive ...)
T² = L² + D²
T = Sqrt(L² + D²)

Voilà ! Je suppose que cette formule est correcte.

Ensuite (eh oui cette formule est secondaire  ...) :

Calcul de la position d'un point A dans le champ de vision d'un point B, relative à la distance entre les deux points et à l'angle du point B sur la parallèle X (vous allez comprendre ...) :

Soient C1 et C2 deux longueurs :
C1 est égal à A.Y - B.Y
C2 est égal à A.Z - B.Z

On utilisera le rapport C1 / Distance et C2 / Distance.

Bien ...

Ensuite, j'ai réussi à sortir ça de ma tête, je ne sais même pas comment :

Coefficient Angulaire (c.a) = Amplitude du champ de vision B (longueur ou hauteur) / 180

Positions relatives de A dans B

A.Y := B.Y + (C1 / Distance) - (c.a [de longueur] x Angle de B)
A.Z := B.Z + (C2 / Distance) - (c.a [de hauteur] x Angle de B)

Voilà ... mais après un rapide test avec un rectangle sur lequel est appliqué une texture, niet ... rien du tout.
Donc, je me demandais si mes formules  au-dessus étaient correctes ... la première je suppose, mais la seconde ... doit avoir des bons points mais doit être fausse dans l'ensemble.
J'ai abandonné la recherche dans mes  bouquins de maths, ça doit être des maths de relativement haut niveau, et je n'ai, pour le coup, rien trouvé sur google.
Si vous aviez ces formules (surtout la deuxième),  pourriez-vous me dire de quelle façon il faut procéder ?
Je pense que si j'ai les bonnes formules, la prog' devrait aller toute seule.
Sinon, ne vous inquiétez pas pour l'application des textures, j'ai mon idée.

Merci d'avance :)

Cordialement, Bacterius !

dimanche 2 novembre 2008 à 21:51:41 | Re : Formules 3D

Bacterius

Membre Club

Ah j'ai oublié de préciser que l'angle de B peut varier de -180° à 180°.

Cordialement, Bacterius !

lundi 3 novembre 2008 à 22:35:59 | Re : Formules 3D

cantador

Membre Club Administrateur CodeS-SourceS
bonsoir,
cherche à "espace 3d" sur le site..
sinon "3d" ça marche pas car il n'y a que deux caractères..

cantador
mardi 4 novembre 2008 à 10:36:07 | Re : Formules 3D

Bacterius

Membre Club

Ok merci du conseil Cantador, je vais chercher :)

Cordialement, Bacterius !

mardi 4 novembre 2008 à 21:28:14 | Re : Formules 3D

WhiteHippo

Membre Club
Bonsoir

"Calcul de la position d'un point A dans le champ de vision d'un point B, relative à la distance entre les deux points et à l'angle du point B sur la parallèle X (vous allez comprendre ...)"

Désolé mais moi j'ai rien compris à ce que tu veux faire, alors pour t'aider cela va être difficile.

P.S. Pourrais-tu joindre un croquis de ce que tu souhaites ou même un petit schéma en "ASCII art" histoire d'éclaircir le problème ? Quelque chose du style :

Y                  A
 |                  x
 |  Z                \
 | /                  \
 |/                    \
-/------->              \
 |        X              \ B
                          x

Cordialement.

"L'imagination est plus importante que le savoir." Albert Einstein
mardi 4 novembre 2008 à 21:40:02 | Re : Formules 3D

Bacterius

Membre Club

Wouah j'ai jamais su faire les ascii-art, j'y comprends rien, bref.
En fait, dans un plan 3D orthonormé :

Il y a 3 types de droites, voici un croquis :

(je tente l'ascii-art ...)


DE FACE :

     z
     |
x ---¤----
     |y (vue de haut, c'est le rond)


DE HAUT :

     y
     |
x ---¤---
     |z (vue de haut, c'est le rond)


Bon tout le monde connaît ça à un moment ou à un autre, c'est un principe de base, bref.

Bon.

Quand tu joues à un jeu 3D, tu diriges une caméra : c'est à dire un point qui bouge, et qui te montre ce que tu verrais à sa place, dans l'environnement 3D, selon un angle précis.

Deuxièmement, vous connaissez l'effet logique qui fait que lorsqu'on s'approche d'un arbre (qui est 1 mètre à notre gauche, sinon on se fait mal), l'arbre a tendance à s'éloigner du centre de notre vision.
Mais si on s'eloigne, il a tendance à se rapprocher du centre.
Je ne suis pas sûr mais je crois qu'il s'agit du principe de parallaxe.

Je voudrais adapter cela à un jeu 3D (ici un labyrinthe), en considérant l'arbre comme un point, et notre vue comme un point également.

Voilà, je pense que c'est plus clair, c'est vrai que ce n'était pas évident la dernière fois ^^

Cordialement, Bacterius !

mardi 4 novembre 2008 à 21:41:15 | Re : Formules 3D

Bacterius

Membre Club

Oups, petite précision sur les ascii-art : normalement le rond (Alt Gr + la touche à droite des trémas et du circonflexe) s'est transformé en euro. Considérez-le comme un rond :)

Cordialement, Bacterius !

mardi 4 novembre 2008 à 23:08:24 | Re : Formules 3D

WhiteHippo

Membre Club
J'ai l'impression que ce que tu veux faire, est une simple projection perspective !
La formule la plus basique (On ne l'applique jamais tel quel) pour faire cela est :
  x(2D) = x(3D)/z(3D)
  y(2D) = y(3D)/z(3D)
Plus l'élément est loin (z(3D) grand) et plus celui ci paraitra petit.

Va voir sur google les liens comme celui-ci, ou encore celui-là ne manque pas.

P.S. J'ai peut être encore rien compris à ce que tu souhaites, auquel cas, on verra si demain mes idées seront plus claires.

Cordialement.

"L'imagination est plus importante que le savoir." Albert Einstein
mardi 4 novembre 2008 à 23:28:54 | Re : Formules 3D

cantador

Membre Club Administrateur CodeS-SourceS
magnez vous un peu !
chuis coincé dans le labyrinthe dans le 3e virage sur la droite..

cantador
mercredi 5 novembre 2008 à 11:07:47 | Re : Formules 3D

Bacterius

Membre Club

Ouais voilà WhiteHippo c'est une projection perspective que je voudrais appliquer
Je n'arrive plus à m'exprimer correctement rhalala
Je vais voir tes liens pour voir si cela correspond à mon problème.

[Clique sur le 2eme lien, car le premier déclenche une erreur chez moi]

"The perspective projection requires greater definition. A conceptual aid to understanding the mechanics of this projection involves treating the 2D projection as being viewed through a camera viewfinder. The camera's position, orientation, and field of view control the behaviour of the projection transformation. The following variables are defined to describe this transformation"

Parfait, exactement ce que je cherchais
Merci pour ton aide précieuse WhiteHippo :) je garde le lien en favoris

Cordialement, Bacterius !



Cette discussion est classée dans : 3d, distance, c1, c2, formules


Répondre à ce message

Sujets en rapport avec ce message

mastermind turbo pascal [ par eric62100 ] salut à tous, je suis etudiant et j'ai un tp à rendre, il s'agit de créer un mastermind en turbo pascal. je viens ici car je l'ai commencé, et je bute les supers heaxadecimal [ par Shadow ] J'ai deux variable de type byte, et j'aimerais en faire qu'un chiffre en hexadecimal;ex : c1 : byte; c2 : byte; c1 := 4; c2 := F; j TComboBox [ par cloudlouda ] Salut ce code permet de pinger des adreses ce trouve dans un c: TComboBox.si une @ est connecter il l'ajoute dans c1 si non dans c2. comment faire po probleme avec pchar et int [ par knetus ] bonjour a vous tous je débute en delphi et je n'arrive pas a comprendre ou est l'erreur dans ce petit bout de code : [code=pas] var currentBuffer Erreur de Calcul d'un cosinus (sous Delphi 7 personnel) [ par Fushi ] Bonjour J'ai un petit problème avec Delphi 7. Avec la partie de programme si dessous la valeur des résulats est érroné. En exécutant le programme pas ping de reseau local en delphi [ par mouna23 ] Bonjour je veut corriger ce code afain q'il fait pinger un ensemble d'adresse se trouve dans un combobox c.si une adresse est connecté il la met dans biométrie du visage [ par sousoi ] Bonjours; je suis intéressé sur la biométrie du visage 3D et j'ai une question concernant la méthode ACP pour la reconnaissance du visage 3D (extract controle à distance de 4 sorties (carte éléctronique port parellèle) [ par rabbouba1 ] salut, je suis une étudiante en master réseau communication et mon pfe est de faire une application de controle à distance en utilisant delphi et php, Affichage surface 3D [ par thor35 ] Bonjour , Je voudrais afficher des données issue d'une acquisition sous la forme d'une surface 3D . les donnes sont latitude (x) et longitude (y) iss Carte de distance [ par maxime0038 ] Bonjour, Je cherche à dessiner le plus grand cercle inscrit dans divers polygones convexes. Apparemment la méthode la plus simple serait de détermine


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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 : 2,356 sec (4)

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