// FORMULA MATEMATICA TRIGONOMETRICA APPLICATA A SL; P=Rcos(t)ù+Rsin(t)ù+ // * : * // * : * // * Y_______*A(XY) O = CENTRO BASE // * | | * O-Y = RAGGIO // * | | * O-X = COSENO // | sinA X-A = SENO // *..........O__cosA_|X..* A = ANGOLO // * : * // : // * : * // * : * // * : * // * : * // * * //La componente X delle coordinate di un cerchio è Rcos A, mentre la componente Y di coordinate vale Rsin A dove A è l’angolo. //Da questo schema si capisce che per poter descrivere una circonferenza è sufficiente prendere un angolo A e farlo scorrere fra 0 e 360 gradi: pilotando le coordinate X e Y definite come RcosA e RsinA viene descritta appunto l’intera circonferenza. //////////////////////////////////////////////////////////////////////// vector posizione; /// TUTTE LE MISURE SEGUENTI SONO DA CERCARE in base alla posizione dell'oggetto madre SLINKATO float angle = 135; // GRADI di rotazione sulla circonferenza virtuale dal centro BASE quindi il punto dove si trova l'oggetto slinkato (posizionamento) float altezza = 0.3; //incremento altezza dell'oggetto slinkato rispetto all'oggetto BASE float raggio = 39.35; //distanza oggetto slincato dal centro BASE default { state_entry() { llSetTimerEvent(0.1); // controlla ogni secondo se la BASE madre viene spostato e comunica la nuova posizione all'oggetto slinkato } timer() { vector v=llVecNorm(llRot2Left(llGetRot())); // torna il vettore unitario dell’oggetto lungo l’asse Y che in SL è il vettore “a sinistra” vector u=llVecNorm(llRot2Fwd(llGetRot())); // torna il vettore unitario dell’oggetto lungo l’asse X che in SL è il “forward” cioè il fronte dell’oggetto vector center = llGetPos(); float rad=DEG_TO_RAD*angle; vector pos=raggio*llCos(rad)*u-raggio*llSin(rad)*(v)+center; pos.z = pos.z + altezza; llRegionSay(-476587, (string) pos); } }