CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Intersections

sn00bino
sn00bino
Niveau 5
26 janvier 2008 à 23:09:32

lu,

voici le principe que j' utilise pour les intersections point/boîte :

Je passe le point à tester dans les coordonées de la boîte puis je regarde si il est unitaire dans ces coordonées.

Détails :
M est la matrix de monde ( world matrix ) de la boîte, C le centre de la boîte et P le point à tester.

D' abord je récupére les vecteurs locaux de la boite
v1(M[1,1],M[2,1],M[3,1])
v2(M[1,2],M[2,2],M[3,2])
v3(M[1,3],M[2,3],M[3,3])

P' est la différence entre P et le centre de la boîte :
P' = P-C. C 'est P dans la base (C,v1,v2,v3)

Il faut savoir aussi que à la base mes boîtes sont des cubes unitaires donc les vecteurs v1,v2 et v3 définissent bien la taille de la boîte.

le test d' unitarité ( ? ): je vais regarder si chacune des composantes de P' est inférieure à son vecteur respectif.

Pour cela faut il encore que je récupere ces coordonées -> ce sont les projections de P' sur chacun des axes.

donc si P' est dans la boîte on a pour chacun des axes :

||proj(P'surVx)|| <= ||Vx||

Cette formule n 'est pas super pratique alors je multiplie chaque côté par ||Vx|| ( forcement positif )

||Vx||*||proj(P'surVx)|| <= Vx²
grâce a la magie du produit scalaire :
Vx.P' <= Vx²

Voila, j'aimerais savoir si il existe des meilleurs méthodes mais surtout pourquoi sa marche pas.

++

sn00bino
sn00bino
Niveau 5
27 janvier 2008 à 13:33:54

En fait j' avais oublié les valeurs négatives, le test c 'est :

|Vx.P'| <= Vx²

et du coup forcement sa marche mieux

Ikawa-ta
Ikawa-ta
Niveau 10
27 janvier 2008 à 13:57:09

J'applique la même je n'en connais pas d'autres...

pilo1488
pilo1488
Niveau 10
27 janvier 2008 à 14:43:41

j'ais pas tout lu car ca me parait assez complexe, le problème point/boite, ou boite/boite tu peux le résoudre simplement en cherchant un axe separateur (tu n'as que 4 axes par boites, qui peuvent etre précalculé).

http://www.harveycartel.org/metanet/tutorials/tutorialA.html

Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware