begin process at 2012 05 26 05:54:40
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

ActionScripts

 > FONCTION SIMILITUDE : ROTATION ET HOMOTÉTHIE D'UN CLIP

FONCTION SIMILITUDE : ROTATION ET HOMOTÉTHIE D'UN CLIP


 Information sur la source

Note :
7 / 10 - par 4 personnes
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :ActionScripts Niveau :Initié Date de création :08/06/2004 Date de mise à jour :08/06/2004 13:28:49 Vu / téléchargé :9 414 / 1 947

Auteur : SuperDevy

Ecrire un message privé
Site perso
Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

 Description

Pour tous ceux qui cherchent à modifier le centre de rotation de leur clip, voila une solution qui pourra leur convenir...

En fait, il s'agit d'une fonction permettant d'appliquer une rotation et une homotéthie à un clip à partir de n'importe quel centre.

Petit rappel pour les matheux : une homotéthie peut être une translation ou la combinaison d'une rotation et d'une homotéthie. Le premier cas n'est pas pris en compte puisque ça marche comme en géométrie classique.

on appelle la fonction ainsi :
similitude(nomClip, xCentre, yCentre, Rapport, Angle)
- nomClip : nom du clip que vous souhaitez transformer
- xCentre : abcisse du centre de la similitude
- yCentre : ordonné du centre de la similitude
- Rapport : rapport de la similitude (conseil : entre 0.9 et 1.1)
- Angle : angle de la similitude en degrés.

Pour une rotation : Rapport = 1

Source

  • function similitude(nomClip, xCentre, yCentre, Rapport, Angle) {
  • if (Angle != 0) {
  • //Application de la rotation
  • xDistance = _root[nomClip]._x-xCentre;
  • yDistance = _root[nomClip]._y-yCentre;
  • Distance = Math.sqrt(xDistance*xDistance+yDistance*yDistance);
  • //Faut tourner le clip
  • _root[nomClip]._rotation += Angle;
  • //Mesure de l'angle
  • AngleDefaut = Math.atan2(xDistance, yDistance);
  • //AngleDefaut += Angle*Math.PI/180;
  • Angle *= Math.PI/180;
  • Angle -= AngleDefaut;
  • xDistance = Distance*Math.sin(-Angle);
  • yDistance = Distance*Math.cos(Angle);
  • _root[nomClip]._x = xCentre+xDistance;
  • _root[nomClip]._y = yCentre+yDistance;
  • }
  • if (Rapport != 1) {
  • //Application de l'homotéthie
  • _root[nomClip]._width *= Rapport;
  • _root[nomClip]._height *= Rapport;
  • _root[nomClip]._x = (_root[nomClip]._x-xCentre)*Rapport+xCentre;
  • _root[nomClip]._y = (_root[nomClip]._y-yCentre)*Rapport+yCentre;
  • }
  • }
function similitude(nomClip, xCentre, yCentre, Rapport, Angle) {
	if (Angle != 0) {
		//Application de la rotation
		xDistance = _root[nomClip]._x-xCentre;
		yDistance = _root[nomClip]._y-yCentre;
		Distance = Math.sqrt(xDistance*xDistance+yDistance*yDistance);
		//Faut tourner le clip
		_root[nomClip]._rotation += Angle;
		//Mesure de l'angle
		AngleDefaut = Math.atan2(xDistance, yDistance);
		
		//AngleDefaut += Angle*Math.PI/180;
		Angle *= Math.PI/180;
		Angle -= AngleDefaut;
		xDistance = Distance*Math.sin(-Angle);
		yDistance = Distance*Math.cos(Angle);
		_root[nomClip]._x = xCentre+xDistance;
		_root[nomClip]._y = yCentre+yDistance;
	}
	if (Rapport != 1) {
		//Application de l'homotéthie
		_root[nomClip]._width *= Rapport;
		_root[nomClip]._height *= Rapport;
		_root[nomClip]._x = (_root[nomClip]._x-xCentre)*Rapport+xCentre;
		_root[nomClip]._y = (_root[nomClip]._y-yCentre)*Rapport+yCentre;
	}
}

 Conclusion

Les fonction mathématiques étants émulées, il peut arriver que le résultat manque de précision. il faut donc essayer de corriger ces impressision. Par exemple, pour mon animation, j'ai remplacé :
_root[nomClip]._x = xCentre+xDistance;
_root[nomClip]._y = yCentre+yDistance;
par :
_root[nomClip]._x = xCentre+xDistance*1.00012;
_root[nomClip]._y = yCentre+yDistance*1.00012;
et il n'y a quasiment pas de décalage.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip TREE AVEC RECHERCHE POUR AFFICHER UN XML.
Source avec Zip RETARDER L'EXECUTION D'UNE FONCTION
Source avec Zip COMPOSANTS POUR NON-PROGAMMEUR
Source avec Zip VOITURE INTELLIGENTE :: OPTIMISATION DE TRAJECTOIRE
Source avec Zip Source avec une capture BONNE TENUE DE ROUTE POUR CES VOITURES.

 Sources de la même categorie

Source avec Zip Source avec une capture OUVRIR UNE ANIMATION EXTERNE DANS UN CLIP VIDE. par KcHeY
Source avec Zip ZOOM SUR UNE IMAGE par yasdar
Source avec Zip Source avec une capture UN PEU DE MATH par yasdar
Source avec Zip Source avec une capture PARTICULE SYSTEM par yasdar
Source avec Zip Source avec une capture GALLERIE PHOTO AVEC XML par yasdar

Commentaires et avis

Commentaire de BlackWizzard le 09/06/2004 17:42:45 administrateur CS

ça c cool!
j'avais cherché comment faire pour mes experiences de raycasting, et là tu me donne la reponse :D

Commentaire de michmuch2000 le 23/12/2005 16:58:56

Malheureusement ça ne marche pas si on charge le clip en question via un loadMovie.

Commentaire de kktoes le 22/12/2007 05:37:07

Genial !
1000 merci !

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,042 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales