Zoom centré Hitskin_logo Hitskin.com

Ceci est une prévisualisation d'un thème de Hitskin.com
Installer le thèmeRetourner sur la fiche du thème



AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  ConnexionConnexion  
Le deal à ne pas rater :
Sortie PlayStation 5 Pro : où précommander la console PS5 Pro ?
Voir le deal

 

 Zoom centré

Aller en bas 
4 participants
AuteurMessage
Térence
Utilisateur confirmé: Rang *****
Térence


Messages : 2213
Localisation : Oui

Zoom centré Empty
MessageSujet: Zoom centré   Zoom centré EmptyLun 16 Juin 2014 - 17:22

Bonjour tout le monde,
Comme je suis sûr qu'il y en a qui ont le bac ou au moins des partiels en maths très bientôt, tonton Térence va vous faire réviser un peu  Yum! 

Donc c'est simple, j'ai une fonction toute prête pour le zoom, mais, forcément, celui-ci est centré sur l'origine, et moi j'aimerais qu'il soit centré sur ma souris.
Donc voilà tout ce que j'ai : viewX, viewY, mouseX, mouseY et zoom.
Sachant que mouseX et mouseY sont les coordonnées de la souris par rapport au coin supérieur gauche de l'écran, pour avoir les coordonnées par rapport à l'origine suffit d'ajouter viewX et viewY.
J'aimerais donc savoir quelles valeurs donner à viewX et viewY pour que mon zoom soit centré sur la souris ^^'

Voilà, moi j'ai passé des heures dessus (même problème pour le jeu du premier concours), donc si quelqu'un me trouve ca en moins de deux secondes...  Yum! 
Merci d'avance !
Revenir en haut Aller en bas
D-z
Utilisateur confirmé: Rang *****
D-z


Messages : 1611
Localisation : Montpellier

Zoom centré Empty
MessageSujet: Re: Zoom centré   Zoom centré EmptyLun 16 Juin 2014 - 17:36

J'ai ni bac ni partiels alors je réponds pas ^^
Revenir en haut Aller en bas
glcraft
Utilisateur confirmé: Rang *****
glcraft


Messages : 1698
Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P
Projet Actuel : Jeu de survie avancé
||--------

Zoom centré Empty
MessageSujet: Re: Zoom centré   Zoom centré EmptyLun 16 Juin 2014 - 17:47

Ben... Interpolation

je pose le calcul et j'edit

EDIT : c'est bon, c'etait pas compliqué :
Code:

view_xview[0]=mouse_x/zoom*(zoom-1);
view_yview[0]=mouse_y/zoom*(zoom-1);
view_wview[0]=640/zoom;
view_hview[0]=480/zoom;

ATTENTION : zoom allant de 0+ a +infini
si zoom = 2, tu zoom *2 (normal ^^)
et zoom = 1, tout est normal Wink


Dernière édition par gabin49 le Lun 16 Juin 2014 - 18:07, édité 1 fois
Revenir en haut Aller en bas
http://gameblog49.skyblog.com/
Térence
Utilisateur confirmé: Rang *****
Térence


Messages : 2213
Localisation : Oui

Zoom centré Empty
MessageSujet: Re: Zoom centré   Zoom centré EmptyLun 16 Juin 2014 - 17:48

D-z a écrit:
J'ai ni bac ni partiels alors je réponds pas ^^
Prouve le moi !  awesome 

par pitié ?  Yum! 
Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
Térence


Messages : 2213
Localisation : Oui

Zoom centré Empty
MessageSujet: Re: Zoom centré   Zoom centré EmptyLun 16 Juin 2014 - 18:35

gabin49> C'est assez bizarre oO
Quand viewX et viewY sont à 0et zoom à 1, ca marche, il zoome bien sur la souris, mais après, si la view est décalée ou que le zoom n'est plus à 1, il va se décaler et pas zoomer correctement sur l'endroit que j'ai choisi..
Donc j'ai l'impression que ta formule est fondamentalement juste, mais qu'elle tient pas compte du décalage de la view...

C'est du java, pas du gml, donc, comme je l'ai dit avant, chez moi, mouseX et mouseY sont les coordonnées de la souris par rapport au coin supérieur gauche de l'écran, et pas par rapport à l'origine. Donc en principe suffirait d'ajouter viewX et viewY aux coordonnées de la souris, mais j'ai essayé et ca marche pas correctement :/

Donc si t'as une idée, merci d'avance ! Smile
(d'ailleurs je veux bien que tu m'explique d'où sort ta formule ^^')
Revenir en haut Aller en bas
glcraft
Utilisateur confirmé: Rang *****
glcraft


Messages : 1698
Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P
Projet Actuel : Jeu de survie avancé
||--------

Zoom centré Empty
MessageSujet: Re: Zoom centré   Zoom centré EmptyLun 16 Juin 2014 - 21:55

Je pense avoir une idée :

déja declare une nouvelle variable newMouseX et newMouseY (ou un autre nom) pour prendre les coordonnées de la souris par rapport au haut-gauche de la view sans zoom (le décalage) et à la fenete tel que :
newMouseX = mouseX - decaleX - windowX;
newMouseX = mouseX - decaleY - windowY;

Sachant que si la view d'origine en haut-gauche de la fenetre, decaleX et decaleY sont égales a 0 (en clair, pas de décalage)
Comme ca, la view zoomera bien en fonction de la souris.

avec ces nouvelles coordonnées newMouseX et Y, tu applique ce que j'ai dit précédemment et tout ce passera bien (normalement)
Revenir en haut Aller en bas
http://gameblog49.skyblog.com/
Térence
Utilisateur confirmé: Rang *****
Térence


Messages : 2213
Localisation : Oui

Zoom centré Empty
MessageSujet: Re: Zoom centré   Zoom centré EmptyMar 17 Juin 2014 - 13:33

Ok merci, j'essaie ca demain et je te tiens au courant ! Smile

edit :
Nop, marche pas :/
Toujours le même problème... Si t'as une autre idée...
Merci quand même de ton aide en tous cas !
Revenir en haut Aller en bas
GrandeLangue
Bonne participation
GrandeLangue


Messages : 77
Localisation : Lille
Projet Actuel : Faire des maths

Zoom centré Empty
MessageSujet: Re: Zoom centré   Zoom centré EmptyMer 18 Juin 2014 - 2:26

À vrai dire, j'ai beau regardé la proposition de gabin dans tous les sens, je ne comprends pas d'où sors cette formule. En tout cas ce qui est sûr, c'est que ce n'est pas celle que tu cherches ^^ Donc j'ai passé un peu de temps sur GeoGebra (le meilleur logiciel de géométrie dynamique), et comme un schéma vaut toujours mieux qu'un long discours, je te conseille de regarder ce que ça donne: http://simpleupload.fr/?c=A0zzDEy!ulrwL0f5
Tu as besoin d'installer GeoGebra pour le visualiser. Ou bien utilise GeoGebra en ligne.

Comme tu peux le voir dans ce fichier, tu as un point View, qui représente dans ton jeu les coordonnées viewX et viewY. Ensuite il y a le centre d'homothétie, qui dans ton cas serait (mouseX, mouseY). Et finalement, il y a un nombre zoom, qui en réalité ici est l'inverse de ta variable zoom dans ton jeu (c'est-à-dire que j'ai fais en sorte que l'écran s'agrandissait quand ma variable zoom augmentait... ce qui est le contraire de ce que tu veux). J'ai considérer que toutes ces variables pouvaient être modifiées librement, comme c'est sûrement le cas dans ton jeu.
Maintenant, le but est de calculer les nouvelles positions de View et du point K, qui n'est autre que (viewX + viewWidth, viewY + viewHeight), à chaque fois que la valeur de zoom est modifiée. C'est pour cela que si tu regardes dans les propriétés de zoom, à l'onglet Script, tu verras qu'à chaque fois que zoom est actualisé, ce morceau de code est exécuté:
Code:
View=Centre+zoom/previousZoom*(View-Centre)
previousZoom=zoom
Pourquoi ce code? Le format de "Centre+zoom/previousZoom*(View-Centre)" est le suivant:
"centre + coefficient*vecteur", ce qui est une translation du point "centre" par "coefficient*vecteur".
Le vecteur est celui de Centre à View. Et ce vecteur est multiplié par un coefficient... en fait tu remarqueras que toute cette formule n'est qu'une banale homothétie de centre "Centre" et de coefficient "zoom/previousZoom".
Pour le point K, on fait de même. À moins que ce ne soit les valeurs de viewWidth et viewHeight qui t'intéresse, à ce moment-là il suffit de faire:
Code:
viewWidth*=zoom/previousZoom
viewHeight*=zoom/previousZoom
Ou bien comme je l'ai fait dans mon fichier Geogebra:
Code:
viewWidth=zoom*initialViewWidth
viewHeight*=zoom*initialviewHeight

Voilà, j'espère que ça aura été clair. Et n'hésite pas à utiliser GeoGebra dans le futur pour t'aider à trouver les formules, c'est un outil formidable. HS: je dirais même plus, c'est le meilleur logiciel d'animation (oui oui, j'ai bien dit "d'animation"  gnii : la preuve ici)
Revenir en haut Aller en bas
glcraft
Utilisateur confirmé: Rang *****
glcraft


Messages : 1698
Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P
Projet Actuel : Jeu de survie avancé
||--------

Zoom centré Empty
MessageSujet: Re: Zoom centré   Zoom centré EmptyMer 18 Juin 2014 - 14:59

ah, je vois, c'est pas exactement ce que j'ai fait en effet. C'est le même zoom que Google Maps ou paint.net ^^
Revenir en haut Aller en bas
http://gameblog49.skyblog.com/
Térence
Utilisateur confirmé: Rang *****
Térence


Messages : 2213
Localisation : Oui

Zoom centré Empty
MessageSujet: Re: Zoom centré   Zoom centré EmptyMer 18 Juin 2014 - 15:14

****** ca marche  guns 
En rentrant ta formule telle quelle, ca marchait pas, mais effectivement vu que le truc geogebra marchait impec', c'est que ta formule était bonne, donc en testant quelques trucs, j'ai fini par tomber sur ca :
trMouseX=viewX+mouseX/zoom;
trMouseY=viewY+mouseY/zoom;
viewX=trMouseX+lastZoom/zoom*(viewX-trMouseX);
viewY=trMouseY+lastZoom/zoom*(viewY-trMouseY);
Avec pour centre la souris. En fait iavait plusieurs trucs à modifier :
la position réelle de la souris chez moi, bah faut la calculer >< c'est donc trMouse, et ensuite ton calcul est bon, faut juste remplacer zoom/lastZoom par lastZoom/zoom puisque chez toi plus la valeur zoom est grande plus on voit loin (et donc avec un écran à taille fixe, moins on zoom).

Voilà, donc la ca marche parfaitement, merci beaucoup ! Smile

Concernant Geogebra, on a dû l'utiliser deux-trois fois au lycée donc bon Razz Mais je conviens que c'est très utile dans certains cas (genre ici ^^), surtout si on peut l'utiliser en ligne.

Voilà, donc encore merci à vous deux pour votre aide Smile
Revenir en haut Aller en bas
GrandeLangue
Bonne participation
GrandeLangue


Messages : 77
Localisation : Lille
Projet Actuel : Faire des maths

Zoom centré Empty
MessageSujet: Re: Zoom centré   Zoom centré EmptyMer 18 Juin 2014 - 17:00

De rien Smile
En effet, les calculs de Geogebra étaient fait avec les coordonnées de Centre par rapport à l'Origine, d'où (trMouseX, trMouseY).
Revenir en haut Aller en bas
Contenu sponsorisé





Zoom centré Empty
MessageSujet: Re: Zoom centré   Zoom centré Empty

Revenir en haut Aller en bas
 
Zoom centré
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Centre d'un sprite et décalage
» Changer le centre pendant le jeu.
» instance_nearest avec un objet parent non centré?
» Changer dynamiquement l'objet sur lequel se centre la vue ?
» Encore un problème Tourner par rapport a un centre ?

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Entraide confirmés-
Sauter vers: