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

Rotation d'un rectangle [C++]

sangohan55
sangohan55
Niveau 10
29 octobre 2007 à 08:20:31

Bonjour,

Pendant les vacances le prof de maths nous a collé un exercice que vous pouvez visualiser sur mon site

http://www.malloc-web.com/download/math.jpg

J´ai donc, a l´aide de SFML (
http://www.sfml.sourceforge.net )
Dessiner mon couloir et mon armoire.

Je fais une rotations de l´armoire grâce a la méthode rotate,
sa marche, mais je voudrais recuperer les coordonées x et y, et la je découvre quelques choses de surprenant, mon rectangle fait une rotation sans que x et y change de valeurs !? Si quelqu´in pouvait m´expliquer ou mieux me proposer une solutions / alternative ??

Vous pouvez visualisez mon code ici

http://rafb.net/p/SVdMrK46.html

Je vous remercie :)

:bye:

MCWarriors
MCWarriors
Niveau 6
29 octobre 2007 à 11:00:56

Je pourrais te proposer une solution alternative mais elle serait purement algébrique et donc ce serait complétement hors sujet sur un forum de programmation, en plus ça t´oterait tout plaisir de rechercher la solution. :o)

Sinon, désolé, je ne peux t´aider pour ton problème de coordonnées. :-(

dnob700
dnob700
Niveau 10
29 octobre 2007 à 11:14:18

Je n´ai pas beaucoup joué avec cette partie de SFML, mais ça ne me semble pas étonnant. Tu définit la position d´un sprite par les coordonnées de son coin en haut à gauche, puis de son centre de rotation _puis_ de son angle de rotation. Son premier coin,n´est plus à la même place, mais qu´importe, pour pouvoir comprendre aisément où se trouve le sprite, ce n´est pas important.

Dans ton cas, ça te gène car tu aimerais savoir où se trouve réellement les coins de l´armoire. Je te conseille de faire le calcul toi même dans ton programme. C´est juste un peu de trigonométrie (ça dépend de la position du coin avant et du centre de rotation), et en plus ça mettra un peu plus de math dans la résolution de ton problème.

sangohan55
sangohan55
Niveau 10
29 octobre 2007 à 12:16:09

@dnob700

trigonométrie, oula voila un mot qui me fait peur, donc j´aurais absolument besoin de "trigonométrieé tu peut m´expliquer en quoi ça soniste ? tu as un exemple de programme avec de la trigonométrie ?

@MCWarriors

Donne quand même ta propositions ça m´interesse :)

Merci a vous deux en tous cas

dnob700
dnob700
Niveau 10
29 octobre 2007 à 13:25:06

tu es en quelle classe ?

En l´occurence, je ne suis pas certain que la méthode que tu emploie pour trouver la réponse soit la bonne. Car justement, à base de rotation et tout ça, tu vas devoir utiliser de la trigonométrie pour résoudre ton problème.

Et une simulation de ton problème sera certainement un raisonnement original, mais ça va pas mal dépendre du prof pour voir s´il accepte ce type d´argument.

Alors qu´avec un raisonnement "logique" (mais à toi de le trouver, on ne vas pas faire tes devoirs) tu peut t´en sortir en n´utilisant que le théorème de Pythagore.

Mais à pars ça, si tu veux quand même faire ce programme, on peut t´aider à le faire. Par contre, je ne peut pas t´enseigner ce qu´est la trigonométrie si tu ne l´a pas vu en cours (ça se voit en troisième si ma mémoire est bonne), c´est un peu trop complexe pour en faire un post ici.

space_monster66
space_monster66
Niveau 6
29 octobre 2007 à 13:28:53

mi j´aurais imaginé ce dessins dans un plan cartesien, de trouver la position des pints A B C et D du reectangle et d´effectuer une rotation de -90 ° dans ce plan cartésien c´est plus rapide de faire un code avec sfml en c++ ^^ d´autant plus que le plan cartésien est une matière basique et facile d´accès pour les utilisateurs ^^
une feuille de papier un crayon et une gomme rien de plus simple ^^

MCWarriors
MCWarriors
Niveau 6
29 octobre 2007 à 13:30:45

Ok.

Pour ce genre de problème, le mieux est de considérer le cas limite. C´est-à-dire le cas où le côté x1y1 du mur touche l´angle du couloir et x1 et x2 sont en butée sur leurs murs respectifs (cf. figure).
Le meuble ne peut pivoter dans le couloir que si les longueurs 0x1 et Ox2 sont simultanément inférieures à la largeur du couloir.
(Le fait de vérifier cette propriété est une condition nécessaire est suffisante au franchissement du couloir par le meuble).

Il faut donc vérifier si avec les hypothéses fournies (dimensions du meuble et du couloir) indiquent que le meuble peut franchir le couloir.

A l´aide du théorème de Pythagore on calcule les distances qui nous intéressent (à savoir R1 et R2) :
R1² = Oy2² + y2x2² = Oy2² + 70²
R2² = Oy1² + y1x1² = Oy1² + 70²

Il faut donc déterminer s´il exister un point O tel que l´on ait à la fois R1 et R2 inférieurs à la largeur du couloir, c´est-à-dire :
R1 < 120 ET R2 <120

On a :
R1 < 120 est équivalent à R1² < 120²
Soit Oy2² < 120² - 70²
Soit, après calcul : Oy2 < 97,47cm

O doit vérifier d´autre part :
Oy1² < 120² - 70²
Or on remarque que Oy1² = (y1y2 - Oy2)²
Soit y1y2 - Oy2 < 97,47cm
Ou encore Oy2 > 200 - 97,47

Il faut donc que le point O vérifie simultanément : Oy2 < 97,47cm et Oy2 > 102,53cm.
Ce qui est impossible !

Le meuble ne pourra donc jamais franchir le couloir.

Figure :
http://img521.imageshack.ck.us/my.php?image=totoka0.png

Voila y´a pas un brin d´informatique là-dedans mais bon... :o))

sangohan55
sangohan55
Niveau 10
29 octobre 2007 à 13:39:00

Maintenant que tu le dis MCWarriors tous sa est logique en effet, je te remercie mais cependant tu as fait tous mon devoirs :snif:

Enfin je te remercie quand même, le faire sur une feuille ne posera donc pas de problème mais il faut que je bosse un peu donc j´aimerais beaucoup réaliser le programme. MErci

@dnob700

J´ai lu un article sur la trigonométrie sur wikipedia il y a des choses que je ne comprends pas mais dans l´ensemble sa va,
je suis en 4ème j´ai 13 ans. Donc enfaite, il faudrait que je me fasse une petite fonction qui resumerait tous les calcules cité plus haut ? je me met au travail alors. Merci

space_monster66
space_monster66
Niveau 6
29 octobre 2007 à 13:43:47

moi je soutiens l´idée du plan cartésien qui est plus facile que le théoreme de pythagore (si tu ne connais pas les formules des isométries dans le plan cartésien tu es vraiment retardé dans l´éducation en mathématiques alors (ca s´apprends en 6eme)

space_monster66
space_monster66
Niveau 6
29 octobre 2007 à 13:45:07

(pour ceux qui n´auraient pas compris on voit si le rectangle est bien dans le plan du couloir, ca devrait amrcher non ?)

sangohan55
sangohan55
Niveau 10
29 octobre 2007 à 13:47:07

Tu parles de ça

http://www.cslaval.qc.ca/sitsatlll/maths2003/cartesien.html ??

Si c´est sa, oui je l´ai vu en 5 ème mais on nous a jamais dit que sa s´appeler un plan cartesien !

space_monster66
space_monster66
Niveau 6
29 octobre 2007 à 13:56:57

Oui c´est un systeme d´axes perpendiculaires constitué d´une droite horyzontale appellée x(abscisse) et d´une droite verticale appellée y(ordonnée) et l´intersection de ces deux droites se nomment l´origine (o)

sangohan55
sangohan55
Niveau 10
29 octobre 2007 à 13:58:45

Oui ba sa de toute façons je m´en sert tous le temps que ce soit avec SDL_Rect ou SFML avec les méthodes .SetLeft ou .SetTop, bon je retourne codé mon programme moi, je vous tien au courrant quand j´ai finie :)

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