Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Avanzar a una posicion con onda senoidal (https://www.clubdelphi.com/foros/showthread.php?t=88646)

cesarsoftware 09-07-2015 12:30:28

Avanzar a una posicion con onda senoidal
 
Buenos días.

Tengo que recorrer una distancia (ida y vuelta) usando una onda senoidal, que ya la tengo hecha, pero me falla el tema de la frecuencia (creo).
En concreto es para comprimir y descomprimir un amortiguador.
El tema es que sabiendo cuantos puntos de seno tengo que tener a una velocidad dada, me salen muy poquitos puntos.

¿Alguien sabe algo de este tema?

Gracias por adelantado.

Ñuño Martínez 09-07-2015 12:39:44

No entiendo lo de los "puntos de seno".

De todas formas, dado que un hertzio se corresponde con un ciclo completo de 2π radianes, usando una regla de tres puedes obtener cualquier valor en la onda.

cesarsoftware 09-07-2015 17:44:37

Hola nuño
http://www.clubdelphi.com/foros/atta...1&d=1436456203
Como puedes ver, en la grafica superior tengo el seno normal.
Y en la grafica inferior lo tengo implementado a la posición.
Tengo que avanzar desde la posición 50mm a la posición 100mm y retroceder a 50mm a una velocidad de 121 mm/seg.
Por tanto, sabiendo que mi unidad minima de tiempo es 1 ms (Sleep(1)), debo tardar 413 ms en todo el desplazamiento. V=E/T
Si la velocidad fuera 100mm/seg, el tiempo para recorrer 50mm será 50/100 = 500ms.
El tema es que el seno comienza de 0, y tengo que ignorar tantos "puntos de seno" hasta llegar al punto máximo, y desde hay descender hasta el punto minimo y vuelta a subir,
Que pasa, que pierdo los puntos iniciales y finales y el tiempo ya no me cuadra, ?que hago= ¿interpolo puntos? o hai algúna función mejor,

Gracias por tu tiempo.
:)

ecfisa 09-07-2015 20:37:34

Hola cesarsoftware.

Por favor revisa el enlace a la imágen: http://www.clubdelphi.com/foros/atta...1&d=1436456203, a mi me figura como inválido.

Saludos :)

cesarsoftware 10-07-2015 10:47:31

A ver si asi se ve mejor
http://fotos.miarroba.es/cesarleo/206-capturaseno/


cesarsoftware 13-07-2015 21:13:30

Bueno, si a alguien le interesa, que espero que si, me respondo a mi mismo:)

Antes usaba esta funcion para obtener cada posicion de seno y un tiempo determinado me daba mas o menos puntos de seno.
Código Delphi [-]
Result := amplitud * Sin(velocidad / (2 * PI) * frecuencia);

Ahora lo que he echo es
Código Delphi [-]
factor := (2 * PI) / numeroMovimientos;
n := 0;
For s := 1 To numeroMovimientos do // puntos de seno = milisegundos de duracion
begin
posicion := amplitud * (Cos((n + 1) * factor) - 1); // n es ordinal de los milisegundos a avanzar
Inc(n);
 ......

(http://fotos.miarroba.es/cesarleo/207-cosenosimple/)

E incluso con varios ciclos

(http://fotos.miarroba.es/cesarleo/208-cosenotriple/)

El truco, aparte de la frecuencia, es que el seno comienza en 0 (cero) y el coseno en la posicón máxima de amplitud

De nada,:D
Un saludo.

cesarsoftware 13-07-2015 21:18:12

Perdon, algun admin puede poner las fotos, no se poque no me salen bien.

Gracias.


La franja horaria es GMT +2. Ahora son las 04:30:50.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi