52
10
May

Física en flash: Movimiento pendular

Como es sabido, se puede hacer una aproximación bastante certera a la ecuación de movimiento de un péndulo mediante funciones trigonométricas senos o cosenos en su rotación:

[as]var ang:Number = Math.PI/2;//angulo de rotación
var omega:Number = 10;
var amplitud:Number = 4;
this.onEnterFrame = function() {
pendulo._rotation = amplitud*Math.sin(ang);
ang += omega/10;
};
[/as]

Siendo péndulo un MC con anclaje superior centrado.
Sencillo:

    http://blog.bleend.net/downloads/pendulosimple.swf

Aunque si deseamos hacer variable su amplitud de movimiento mediante un drag, podemos hacer esto:

http://blog.bleend.net/downloads/pendulo.swf

Los objetos son los mismos, el código es este:

[as]var angulo:Number = Math.PI/2;
var omega:Number = 9.81;//la frequencia angular, en la realidad viene determinada por la gravedad.
/*Notas:
Gterrestre=9.81m/s^2
Glunar=1.62m/s^2
Gmarciana=3.71m/s^2
*/
pendulo.onPress = function() {
delete (onEnterFrame);
onEnterFrame = function () {
prota = (180/Math.PI)*-Math.asin((_xmouse-pendulo._x)/pendulo.barra._height);
pendulo._rotation = prota;
amplitud = pendulo._rotation;
};
};
pendulo.onRelease = function() {
comp();
};
pendulo.onReleaseOutside = function() {
comp();
};
function comp() {
//amplitud=radiantes!
//rotation=grados!
delete (onEnterFrame);
this.onEnterFrame = function() {
pendulo._rotation = amplitud*Math.sin(angulo);
if (angulo>2*Math.PI) {
angulo -= 2*Math.PI;
}
angulo += omega/100;
};
}
[/as]

Si alargan la altura de la barra, el código se adaptará al cambio.
El archivo *fla original, lo encontrarán aquí.

A ver si alguien se anima y corrige los pequeños fallos ;)

Post relacionado: Movimiento armónico simple inframortido en flash

Entradas Relacionadas:

  1. Física en Flash: Movimiento parabólico
  2. Física en flash: El péndulo tridimensional
  3. Física en Flash: Mov. Armónico Inframortiguado
  4. Flash, Inteligencia Artificial + 3 en raya
  5. Dibujar trazos en un swf Flash

Tags: , , , , , , , ,

52 Awesome Responses.

  • Me mareo !!! Cuac!

  • Tok, tok, tok ¡¡¡Está ocupaoooo!!! XD XD

  • Sebastian

    Hola me gustaria que me ayudaran a saber como definir las tres cordenadas para aumentar o disminuir una imagen con un boton…

    Gracias :D

  • Para augmentar una imagen de tamaño en ambos ejes, es flash debes usar:
    _xscale
    _yscale

    Ambos operan en porcentajes. U_U

  • puedes meterlo dentro de un evento onEnterFrame:


    _root.onEnterFrame=function(){
    if (_root.todo.mapa._width< Tamaño final){
    _root.todo.mapa._width= (_root.todo.mapa._width + 10)
    }else{
    delete(onEnterFrame);}
    }

  • por eso te dije, “onEnterFrame”; no en “onRelease” U_U

  • Sebastian

    Gracias por responder…

    yo lo habia hecho asi e igual funciono…
    creo que es lo mismo
    _root.todo.mapa._x = -950;
    _root.todo.mapa._y = -350;
    _root.todo.mapa._width=2000;
    _root.todo.mapa._height=2000;

    ahora bien no se como hacer para que no se vea de una si no que el aumento sea gradual lo intente asi:

    _root.todo.mapa._width= (_root.todo.mapa._width + 10)

  • Sebastian

    Gracias por todo pero por medio de un boton no funciona toca darle clic y clic hazta llegar al final

    _root.mc_carcelen.onRelease=function(){
    if (_root.todo.mapa._width

  • Sebastian

    on(release){
    _root.onEnterFrame = function(){
    if (_root.todo.mapa._xscale

  • Mándame un mail

  • Sebastian

    este dialogo cada ves acepta menos lineas de texto?… bueno si funciona si pongo dentro de un “on(release)” el “onEnterFrame” pero moviendolo por las cordenas x y y no funciona se va de largo…

    Gracias

  • Sebastian

    es que yo tengo una lista de ciudades y al darle clic quiero que se vaya a la ciudad que escogio dentro del mapa…. y tambien quiero hacer un zoom in y un zoom out… gracias por tu ayuda… es de mucha utilidad

    Gracias :D

  • Sebastian

    pero me gustaria que mientras este presionado el boton vaya aumentando 10 pero no me funciona…. gracias por toda tu ayuda…

    Gracias :D

  • Sebastian

    espero que te haya llegado el mail….
    :D

  • OMG! lindo chat xD

  • Interesante… ya casi no me acuerdo de muchas de estás cosas

  • Osguitar

    en cuanto al pendulo …
    como hacer q pare naturalmente???
    he intentado agregarle friccion pero no he podido…por fa si tienes la respuesta …escribeme….;) gracias

  • Multiplica la función que define la rotación por una exponencial de t negativo. U_U
    E^(-b·t), donde b es el coeficiente de amortimiento.

  • no
    entendi
    no fue muy claro…………..=}

  • Échale un vistazo a esto:

    La función original, la que no se para es A*sin(w*t+o)
    Al amortiguarla, añadimos e^(-b*t):
    A*e^(-b*t)*sin(w*t+o)

    Nota: una exponencial negativa, es lo mismo que dividir por esa exponencial:

    e^(-b*t) = 1/e^(b*t)

    Con lo que cada vez se acercará mas al cero (sin llegar nunca a él) que hace que se vaya parando todo el movimiento al estar multiplicando.

  • Hola, ¿qué tal?

    Podrías ayudarme… necesito saber qué función puedo/debo usar para hacer que la rotación de un movieclip siga la dirección del mouse.

  • Usa esto:

    mc._rotation=(180/Math.PI)*Math.atan(*_ymouse/_xmouse);

    SuerT

  • camila

    holaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

  • AlE

    como puedo construir un pendulo!?????

  • AlE, te refieres a dibujarlo o a programarlo?

  • Tala

    Buenas tarde… Bleend

    Sabes que subistes el archivo del pendulo que explicas aqui pero ma da error al querer descargarlo sera posible que lo montes nuevamente para poder chequearlo..????

    Muchisimas Gracias…

  • Tala, ya lo tienes. Es que puse dos veces la parte de “http://:P

  • Tala

    Que rapido jejejej muchisimas Gracias… Sabes full Actionscript no?? yo siempre quiero hacer cosas locas pero como no domino mucho el Actionscript :(

  • Jaja, no, no se “Full AS”, se mates y algunas cosillas de AS :P

  • Tala

    ups… el cache de mi maquina se quedo pegada y se repitio todo eso… jajajajaj disculpen…

  • Tala

    uhmmm… Pero lo haces bien dejame decirte jejeje… aceptas que te fastidie… ??? de ves en cuando y de cuando en ves…. jajajajajaja

  • Ya borré el post duplicado ;)

  • Tala

    Eres bueno… Y como que no se te puede fastidiar mucho jejeje por que no dijistes nadita…

  • No, no, es que ando algo ocupado, mañana empiezo clases, y estoy imprimiendo horarios y organizando agendas… Mándame un email, si tienes alguna duda, ya te contestaré ;)

  • caro

    cual es el significado del pendulo?

  • caro

    perdon del moviemiento pendular?

  • Un péndulo, es quizás la representación mas sencilla de un Movimiento Armónico Simple (MAS)( Siempre que se considere que sin (a) ~ a)

  • Tala

    Ah!!! disculpen jejeje buenas tardes como estan todos por aqui..??? que tal Bleend? como van esas clases?

  • Vamos tirando… mecánica es difícil U_U

  • Tala

    Jejejeje…. Bueno ya veras que cuando le agarres la caida sera mucho mas facil

  • alerjandra

    hola como estan todos

  • Muchísimas gracias por el código, me ha sido muy útil.

    Espero que no te importe. He tocado un poco tu código.

    Le he puesto un poco de rozamiento para que se vaya parando poco a poco y lo he pasado a una clase de programación. También ahora no hay que pulsar al ratón, con simplemente posicionarte sobre el péndulo basta.

    He dejado todo el código y el ejemplo aquí

  • Me parece fantástico, para eso está. ;)

    Igual debería mejorarlo un poco, ese drag no es muy correcto…

  • maca

    hola. soy nueva, y recien me inicio en el flash, logro hacer el pendulo sencillo (no se si correcto pero valla que se mueve bien xDD) alguien me podria explicar que se hace con estos codigos y para un pendulo como se hace “variable su amplitud de movimiento mediante un drag”…

    gracias

  • @maca: Pues esa frase significa que el péndulo “se abrirá” mas, que “irá mas lejos” en su movimiento si lo arrastramos mas lejos.

    Los códigos los escribimos nosotros, este código, determina una serie de comportamientos de ese “Movie clip”, y le da un movimiento como de un péndulo.

    Una propiedad de los péndulos, es que aunque tengan una amplitud mayos, la frecuencia de oscilación se mantiene. ;)

  • ale

    que es un pendulo? :roll:
    que chida pagina.

    GOOD BYE

  • karina

    hola chida pagina bay

  • anyoli

    en si que es el movimiento pendular?

Leave a Reply