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

C++Builder Discussion :

calculer l'intersection d'une ligne avec un quadrique


Sujet :

C++Builder

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 12
    Points : 10
    Points
    10
    Par défaut calculer l'intersection d'une ligne avec un quadrique
    bonjour!,je travaille sur le 3D "opengl" je veux calculer les coordonnées de l'intersection d'une droite avec un quadrique un cylindre ou un cube alors je veux connaitre comment calculer les coordonnées de ce point,en sachant que je connais pas la position de mon cube et cylindre.

    et si c'est possible de faire la détection de la couleur des pixels des quadriques
    je serai très reconnaissante.

    Si c'est possible de faire ça ou s'il y'a une méthode proche de ça n'hésitez à me la passer.
    et merci.

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 390
    Points : 1 777
    Points
    1 777
    Par défaut
    Salut !

    Le plus important serait de parvenir à bien comprendre le problème !
    En fait ... je pense qu'il y a plusieurs algos, soit au plus simple soit à l'aide de la matrice de Sobel ...

    Prenons le cas d'une droite qui traverse une sphère sans passer par son centre.
    Pour une rotation/inclinaison données, il peut exister quatre points après projection en 2D :
    - les deux points sur la circonférence de la sphère
    + les deux points où la droite "épingle" la sphère et qui délimitent une corde à l'intérieur de la sphère.

    Donc quand tu dis "un point" ... c'est lequel des quatre ? Le premier à être détecté ?
    Et si on en prend deux, s'agit-il de ceux de la circonférence ou ceux de la corde ?

    Par contre, il existe bien un cas de figure où les quatre points sont confondus (après projection) ...

    Donc ... ???

    La couleur d'un pixel est donnée par : Canvas->Pixels[X][Y] ... mais encore faut-il connaître (calculer) X et Y et surtout d'être certain de la couleur !

    La pire des choses qui pourait t'arriver ... ce serait d'être obligé de passer par du traitement d'image (analyse de contours etc ...) ...
    Heureusement qu'il existe :

    http://www.developpez.net/forums/f60...s/algorithmes/

    A plus !

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 33
    Points : 29
    Points
    29
    Par défaut Intersection droite-quadrique,...
    Excusez-moi d'intervenir dans la discussion (curiosité).
    Si je comprends bien,d'après votre esquisse d'analyse,il y a deux problèmes en 1:
    celui de l'intersection de la droite avec une surface frontière d'un volume
    celui du masquage d'une partie de la droite par ce volume (et des points de la droite à la limite de la visibilité) ?
    Mais peut-être que son problème est uniquement celui de l'intersection ?Dans ce cas,il me semble pas trop compliqué à résoudre mathématiquement si la surface est définie par une équation .Un peu plus,si la surface est définie par plusieurs équations (ex. le cube).
    Je ne parle pas d'opengl,car je ne connais pas le logiciel.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 573
    Points : 713
    Points
    713
    Par défaut
    Salut

    Ca me fait penser à la mise en oeuvre d un jeu type fps , où ton souci serait de savoir si tu as touché la cible .

    Ben pour une sphere , c est simple

    referentiel ab,y
    i € [ab]
    is = R où s est le centre de ta sphere

    C est evident qu on ne peut pas calculer la distance oi pour chaque point de ab , on peut utiliser soit la dicotomie , soit la façon suivante
    Donc pour faire simple on travaille , en decoupant la droite en n morceau de longueur R-e où e est une valeur tres petite
    On boucle jusqu à avoir is < R , à ce moment on peut executer une autre fonction plus fine pour detecter la collision

    je sais pas si c est clair à comprendre

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 33
    Points : 29
    Points
    29
    Par défaut Nécessité de connaitre les équations
    Pour calculer l'intersection de la droite avec une quadrique.Vous connaissez forcément les équations de la droite dans un repère.Vous devez connaître aussi la position de la quadrique,c'est-à-dire son équation dans le repère.En dimension 3 (x,y,z),l'équation de la quadrique est un polynôme de degré 2.
    Donc la question est : est-ce que vous connaissez les équations de la droite,et l'équation de la quadrique,dans un même repère ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/07/2009, 22h51
  2. Extraire une valeur d'une ligne avec sed
    Par jojolepabo dans le forum Linux
    Réponses: 6
    Dernier message: 27/10/2004, 09h34
  3. Réponses: 7
    Dernier message: 26/10/2004, 11h02
  4. [FP]Tracer Une ligne avec Dev-pascal
    Par yffick dans le forum Turbo Pascal
    Réponses: 9
    Dernier message: 17/12/2003, 16h33
  5. supprimer une ligne avec cle etrangere
    Par BaBas dans le forum Langage SQL
    Réponses: 4
    Dernier message: 15/07/2003, 11h24

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