classes/liaisons/CLASS-Accroche.js

//Pivot animée, en attendant d'être placée
/*
var Accroche = function()
{
	//==========================
	//Constructeur issu de l'heritage
	//==========================

		DemiLiaison.call(this);


	//==========================
	//Variables Membres
	//==========================
	
		this._k=50;	//Raideur de la liaison

	//==========================
	//getter/setter
	//==========================


	//==========================
	//Autres fonctions membres
	//==========================

		
		//Fonction qui renvoie (en coordonnées absolues) le vecteur entre l'origine de la CE mère, et cette liaison
		this.L1S = function()
		{
			var S = {x:suiveur.x, y:suiveur.y};
			var L1 = this.localToLocal(0,0,schema);
			return {x: S.x-L1.x, y:S.y-L1.y}
		}

		//Ajoute (dans la grosse matrice K et F globale) la sous partie liée à la liaison
		this.remplisSysteme_liaison = function(K,F)
		{
			var k = this._k
			var n1 = this.classe().numero(); //Numéro de la CE
			var L1S = this.L1S()
			var O1L1 = this.O1L1();
		
			//NOTE : il faudra peut être condenser les lignes suivantes
					
			var KK = [	[-k,		0,			-k*O1L1.y							],
					[0,		-k,			k*O1L1.x								],
					[k*O1L1.y,	-k*O1L1.x,		k*(-O1L1.x*O1L1.x-O1L1.y*L1S.y-O1L1.y*O1L1.y-O1L1.x*L1S.x)	]	]
					
			//var FF = [k*L1L2.x,k*L1L2.y,k*(O1L1.x*L1L2.y-O1L1.y*L1L2.x)]
			var FF = [-k*L1S.x	,	-k*L1S.y	,	k*(-O1L1.x*L1S.y+O1L1.y*L1S.x)]
			

			
			//On recopie dans les bonnes lignes de K et F
			for(var i=0; i<3 ; i++) // Pour chacune des 3 lignes
			{
				// Recopiage
				//K.set([3*n1+i,3*n1], K.get([3*n1+i,3*n1])+KK[i][0])
				K.ajouteVal( 3*n1+i , 3*n1,	KK[i][0])
				K.ajouteVal( 3*n1+i , 3*n1+1, KK[i][1])
				K.ajouteVal( 3*n1+i , 3*n1+2, KK[i][2])
				
				
				F.ajouteVal( 3*n1+i, FF[i])
				

			}
			
			
			return {K:KK,F:FF}
		}


		
	//==========================
	//Graphismes
	//==========================
	
		this._main = new createjs.Bitmap("./sources/images/main_fermee.png");
		this._main.scaleX = this._main.scaleY = 0.2;
		this._main.x -= 9.4;
		this._main.y -= 9.4;
		this.addChild(this._main);

}
Accroche.prototype = Object.create(DemiLiaison.prototype);//On recopie le prototype de createjs.Stage
Accroche.prototype.constructor = Accroche;//On recopie le constructeur de Noeud dans son prototype


*/



/**
 * Demi-liaison "Accroche", qui est crée au moment de cliquer de manière ephémère avec la souris en mode "simulation manuelle".
 * @extends PivotMale
 */
class Accroche extends DemiLiaison
{

	// **********************************************************
	/*
	 * Constructeur
	 */
	constructor()
	{
		// Héritage
		super()	// Rappelle le constructeur parent
		
		
		this._k=20;	//Raideur de la liaison
		
		// Graphismes
		this._main = new createjs.Bitmap("./sources/images/main_fermee.png");
		this._main.scaleX = this._main.scaleY = 0.2;
		this._main.x -= 9.4;
		this._main.y -= 9.4;
		this.addChild(this._main);
	}
	
	
	//==========================
	//membres
	//==========================
	
			/** Image Bitmap qui contient le curseur "main" de la souris
			@type {createjs.Bitmap}  */
		_main = new createjs.DisplayObject()
		
		
		
	
	//==========================
	//getter/setter
	//==========================

	//==========================
	//Autres fonctions membres
	//==========================


			/** Fonction qui renvoie (en coordonnées absolues) le vecteur entre l'origine de la classe d'équivalence sur laquelle on vient de cliquer mère, et la souris.
			@return {Vecteur} Vecteur liant le clic à la souris
			*/
		L1S()
		{
			var S = {x:suiveur.x, y:suiveur.y};
			var L1 = this.localToLocal(0,0,schema);
			return {x: S.x-L1.x, y:S.y-L1.y}
		}

			/** Ajoute (= modifie en place dans les grosses matrices K et F globales) la sous partie liée à la liaison. Écrase la méthode abstraite mère.
			@param {Array} K - Référence vers la matrice K générale du système global.
			@param {Array} F - Référence vers le vecteur F second membre du système global (vecteur en ligne, à une dimension)
			@return {Object} {K:   , F :} Objet représentant les PETITES matrices du système, liées à la liaison (Attention, ce ne sont pas les matrices globales)
			*/
		remplisSysteme_liaison(K,F)
		{
			var k = this._k
			var n1 = this.classe().numero(); //Numéro de la CE
			var L1S = this.L1S();
			var O1L1 = this.O1L1();
		
			//NOTE : il faudra peut être condenser les lignes suivantes
					
			var KK = [	[-k,		0,			-k*O1L1.y							],
					[0,		-k,			k*O1L1.x								],
					[k*O1L1.y,	-k*O1L1.x,		k*(-O1L1.x*O1L1.x-O1L1.y*L1S.y-O1L1.y*O1L1.y-O1L1.x*L1S.x)	]	]
					
			//var FF = [k*L1L2.x,k*L1L2.y,k*(O1L1.x*L1L2.y-O1L1.y*L1L2.x)]
			var FF = [-k*L1S.x	,	-k*L1S.y	,	k*(-O1L1.x*L1S.y+O1L1.y*L1S.x)]
			

			
			//On recopie dans les bonnes lignes de K et F
			for(var i=0; i<3 ; i++) // Pour chacune des 3 lignes
			{
				// Recopiage
				//K.set([3*n1+i,3*n1], K.get([3*n1+i,3*n1])+KK[i][0])
				K.ajouteVal( 3*n1+i , 3*n1,	KK[i][0])
				K.ajouteVal( 3*n1+i , 3*n1+1, KK[i][1])
				K.ajouteVal( 3*n1+i , 3*n1+2, KK[i][2])
				
				
				F.ajouteVal( 3*n1+i, FF[i])
				

			}
			
			
			return {K:KK,F:FF}
		}

}