-
Elegant Expresion Writing
Hi!
I have an expresion with a lot of conditionals, I’m asking if i can “clean” the code instead of use a lot of “if else”.
Thanks
/* ----------- OSCILACION ----------- */
/////////// EDEN COMENTA: ///////////
/*Esta expresión crea una función de oscilacion automática en función del tiempo.*/
/////////// VARIABLES ///////////
//Eje X
invertir_x=effect("Oscilador 2D")("Invertir Fase Posicion X").value ;
frecuencia_x=effect("Oscilador 2D")("Frecuencia Posicion X");
amplitud_x=effect("Oscilador 2D")("Amplitud Posicion X");
multiplicador_x=effect("Oscilador 2D")("Multiplicador Posicion X");
rozamiento_x=effect("Oscilador 2D")("Rozamiento Posicion X");
desfase_x=effect("Oscilador 2D")("Desfase Posicion X");
//Eje Y
invertir_y=effect("Oscilador 2D")("Invertir Fase Posicion Y").value;
frecuencia_y=effect("Oscilador 2D")("Frecuencia Posicion Y");
amplitud_y=effect("Oscilador 2D")("Amplitud Posicion Y");
multiplicador_y=effect("Oscilador 2D")("Multiplicador Posicion Y");
rozamiento_y=effect("Oscilador 2D")("Rozamiento Posicion Y");
desfase_y=effect("Oscilador 2D")("Desfase Posicion Y");
activar_pulsos_y=effect("Oscilador 2D")("Pulsos Posicion Eje Y").value;
duracion_pulsos_y=effect("Oscilador 2D")("Duracion Pulsos Posicion Y");
periodo_pulsos_y=effect("Oscilador 2D")("Periodo Pulsos Posicion Y")
t_y=time%(periodo_pulsos_y+duracion_pulsos_y);/////////// CODIGO ///////////
//Eje X
switch (invertir_x) {
case 0:
if (rozamiento_x==0){
oscilacion_x=multiplicador_x*Math.sin(desfase_x+time*(frecuencia_x))*(amplitud_x);
}else{
oscilacion_x=multiplicador_x*Math.sin(desfase_x+time*(frecuencia_x))*(amplitud_x)/Math.exp(rozamiento_x*time);
}
break;
case 1:
if (rozamiento_x==0){
oscilacion_x=multiplicador_x*Math.cos(desfase_x+(Math.PI/2)+time*(frecuencia_x))*(amplitud_x);
}else{
oscilacion_x=multiplicador_x*Math.cos(desfase_x+(Math.PI/2)+time*(frecuencia_x))*(amplitud_x)/Math.exp(rozamiento_x*time);
}
break;
}
//Eje Y
switch (invertir_y) {
case 0:
if (activar_pulsos_y==1){
if (rozamiento_y==0){
oscilacion_y= (t_y < duracion_pulsos_y) ? multiplicador_y*((amplitud_y)*Math.sin(desfase_y+t_y*(frecuencia_y)*Math.PI*2)) : 0;
}else{
oscilacion_y= ease(t_y,0,duracion_pulsos_y,(multiplicador_y*((amplitud_y)*Math.sin(desfase_y+t_y*(frecuencia_y)*Math.PI*2))),0);
}
}else{
if (rozamiento_y==0){
oscilacion_y= multiplicador_y*Math.sin(desfase_y+time*(frecuencia_y))*(amplitud_y);
}else{
oscilacion_y= multiplicador_y*Math.sin(desfase_y+time*(frecuencia_y))*(amplitud_y)/Math.exp(rozamiento_y*time);
}
}
break;
case 1:
if (activar_pulsos_y==0){
if (rozamiento_y==0){
oscilacion_y= (t_y < duracion_pulsos_y) ? multiplicador_y*((amplitud_y)*Math.cos(desfase_y+(Math.PI/2)+t_y*(frecuencia_y)*Math.PI*2)) : 0;
}else{
oscilacion_y= ease(t_y,0,duracion_pulsos_y,(multiplicador_y*((amplitud_y)*Math.cos(desfase_y+(Math.PI/2)+t_y*(frecuencia_y)*Math.PI*2))),0);
}
}else{
if (rozamiento_y==0){
oscilacion_y= multiplicador_y*Math.cos(desfase_y+(Math.PI/2)+time*(frecuencia_y))*(amplitud_y);
}else{
oscilacion_y= multiplicador_y*Math.cos(desfase_y+(Math.PI/2)+time*(frecuencia_y))*(amplitud_y)/Math.exp(rozamiento_y*time);
}
}
break;
}
dimension=3;
try
{value[2]}
catch(array)
{dimension=2;}
try
{value[1]}
catch(array)
{dimension=1;}
x=effect("Oscilador 2D")("Activar Posicion Eje X").value;
y=effect("Oscilador 2D")("Activar Posicion Eje Y").value;
if (dimension>=2){
if (x==1) {
[value[0]+oscilacion_x,value[1]];
}
if (y==1){
[value[0],oscilacion_y+value[1]];
}
if (x==1 && y==1){
[oscilacion_x+value[0],oscilacion_y+value[1]];
}
if (x==0 && y==0){
[value[0],value[1]];
}
}
/* ===================================== */