IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

Question Math numéro 2 :)


Sujet :

Langage Delphi

  1. #1
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 457
    Points
    28 457
    Par défaut Question Math numéro 2 :)
    Bon hier j'avais un soucis pour déterminer la position 3D de la souris sur un plan orienté par une rotation suivant X et Y

    finalement j'ai trouvé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
      SinCos(FRotateX * PI/180,sx,cx);
      SinCos(FRotateY * PI/180,sy,cy);
      w := ClientWidth div 2;
      h := ClientHeight div 2;
      tx := x - w;
      ty := y - h;
      if cy<>0 then
        tx := tx / cy;
      if cx<>0 then
        ty := (ty - sx * sy * tx) / cx;
      x3D := w + Round(tx);
      y3D := h + Round(ty);
    Maintenant, plus compliqué, quand je déplace la souris avec le bouton enfoncé, je voudrais que mon point 3D suive la souris 2D...et que donc mes rotations soient ajustées de tel sorte que le point déterminé ci-dessus se retrouve sous la souris !

    là encore c'est facile pour un des deux axes, mais plus compliqué pour l'autre

    pour FRotateY c'est relativement facile
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
      w := ClientWidth div 2;
      h := ClientHeight div 2;
     
    // sachant que
    //  x = X3D * cos(FRotateY*PI/180) 
     
     FRotateY := ArcCos( Clamp((x-w)/(x3D-w),-1,+1) ) * PI/180;
     
    // maintenant
    // y = Y3D * cos(FRotateX*PI/180) + X2D * Sin(FRotateX*PI/180) + Cos(FRotateY*PI/180);
     FRotateX := ????
    comme j'ai déjà détermine FRotateY, il me reste une équation de type

    a * cos(x) + b * sin(x) = c

    j'essai ceci mais le résultat n'est pas génial

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            a := (Y3D - h);
            b := (X3D - w)* sin(FRotateY*PI/180);
            c := (y-h);
            d := b/a;
            FRotateX := (ArcCos( Clamp(c*cos(d)/a,-1,+1) ) + d) * 180/PI;

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 457
    Points
    28 457
    Par défaut
    hihi, il manquait juste un ArcTan


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Question de maths.
    Par Invité dans le forum Ada
    Réponses: 10
    Dernier message: 06/12/2011, 16h37
  2. Question math par rapport à la procédure varclus
    Par joyeux_lapin13 dans le forum SAS STAT
    Réponses: 5
    Dernier message: 01/08/2011, 16h18
  3. Question de math simplissime mais par pour moi
    Par denis.ws dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 09/04/2008, 13h50
  4. Question de math je pense
    Par blastafarie dans le forum C++
    Réponses: 5
    Dernier message: 27/02/2008, 20h49
  5. Numéro auto ===== Question bête
    Par Nicos77 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 16/06/2003, 14h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo