Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: sf::Rect::Intersect  (Lu 3456 fois)

0 Membres et 3 Invités sur ce sujet

lezebulon

  • Full Member
  • ***
  • Messages: 235
    • Voir le profil
sf::Rect::Intersect
« le: Septembre 07, 2012, 11:01:07 pm »
Salut
on ne peut pas faire d'intersection entre un sf::Rect<int> et sf::Rect<float>
On pourrait pas faire un:
template <typename T1, T2, T3>
bool Rect<T1>::intersects(const Rect<T2>& rectangle, Rect<T3>& intersection) const

T2 et T3 sont inférés, et on appelle en faisant:
myRect.intersects<float>(myRect2);

De le même façon on pourrait définir des trucs pour pouvoir convertir facilement (automatiquement) un Rect<T> en Rect<T2>

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : sf::Rect::Intersect
« Réponse #1 le: Septembre 07, 2012, 11:12:51 pm »
Les systèmes de coordonnées flottants et entiers ne se chevauchent normalement pas dans l'API graphique, ils représentent deux mondes totalement différents. Dans quel cas aurais-tu besoin de les mélanger ? C'est habituellement une bonne indication qu'on s'est gourré quelque part ;)
Laurent Gomila - SFML developer

lezebulon

  • Full Member
  • ***
  • Messages: 235
    • Voir le profil
Re : sf::Rect::Intersect
« Réponse #2 le: Septembre 07, 2012, 11:16:50 pm »
Si je me goure pas actuellement on peut pas comparer sf::Rect<int> et sf::Rect<char> non? Donc même en coordonnées entières c'est pas toujours possible

En fait j'ai une carte dans mon jeu qui est indexée par pixels (donc tout utilise des entiers) et la caméra qui va être un sf::view prend des sf::Rect<float>
Du coup je voudrais savoir par ex quelles tiles intersectent ma caméra, chaque tile ayant des coordonées entières

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : sf::Rect::Intersect
« Réponse #3 le: Septembre 07, 2012, 11:22:43 pm »
Citer
Si je me goure pas actuellement on peut pas comparer sf::Rect<int> et sf::Rect<char> non? Donc même en coordonnées entières c'est pas toujours possible
Oui mais en pratique l'API n'a qu'un type de rectangles entiers (sf::IntRect) et un type de rectangles flottants (sf::FloatRect).

Citer
En fait j'ai une carte dans mon jeu qui est indexée par pixels (donc tout utilise des entiers) et la caméra qui va être un sf::view prend des sf::Rect<float>
Du coup je voudrais savoir par ex quelles tiles intersectent ma caméra, chaque tile ayant des coordonées entières
Je vois deux problèmes :
- tu mélanges pixels et scène 2D, ce ne sont pas les mêmes référentiels
- si tu as des tiles ordonnées en grille 2D, pas besoin de test d'intersection, tu peux directement savoir quelles tiles doivent être affichées avec un unique calcul
Laurent Gomila - SFML developer

lezebulon

  • Full Member
  • ***
  • Messages: 235
    • Voir le profil
Re : Re : sf::Rect::Intersect
« Réponse #4 le: Septembre 07, 2012, 11:30:57 pm »
- si tu as des tiles ordonnées en grille 2D, pas besoin de test d'intersection, tu peux directement savoir quelles tiles doivent être affichées avec un unique calcul
Ouais en fait je me suis avancé, pas besoin d'utilser sf::Rect::Intersects de toute façon...