Autor Tema: Variación de un valor según un %.

0 Usuarios y 1 Visitante están viendo este tema.

17 Marzo, 2026, 10:55 pm
Leído 2222 veces

Tachikomaia

  • $$\Large \color{#5b61b3}\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 1,297
  • País: uy
  • Karma: +0/-0
  • Sexo: Masculino
Supongamos esto:
// Esto es un porcentaje:
Punteria = 75;
// ApuntandoX se define como si el medio de la pantalla fuese 0:
ApuntandoX = 350*(2*random(2)-1);
ApuntandoY = 20.5+279.5*random(2);
// Esto es un porcentaje:
Rotando = (50+50*Math.random())*(2*random(2)-1);

Significa que:
ApuntandoX será -350 o 350
ApuntandoY será 20.5 o 300.
Rotando será -100~-50 o 50~100

Si no me equivoco.

Vease que Punteria es 75.

Quiero que los valores, entonces, puedan variar hasta un (100-Punteria)%.
O sea, si puntería fuese 100 la variación debería ser 0.

Se me ocurre esto:
ApuntandoX = ApuntandoX+ApuntandoX*(100-Punteria)/100*(2*random(2)-1);

ApuntandoY = ApuntandoY+ApuntandoY*(100-Punteria)/100*(2*random(2)-1);

Rotando quiero que se acerque a 0, o sea, no quiero que sea >100 ni <-100.
VariacionDeRotando = Rotando*(100-Punteria)/100
Si Rotando > 0
   VariacionDeRotando = VariacionDeRotando*-1;
Rotando = Rotando+VariacionDeRotando;

¿Creen que funciona como quiero? Lo voy a probar.

18 Marzo, 2026, 12:00 am
Respuesta #1

Richard R Richard

  • Ingeniero Industrial
  • $$\Large \color{#9c57a6}\pi\,\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 4,054
  • País: ar
  • Karma: +2/-0
  • Sexo: Masculino
  • Dentro de la ciencia todo,fuera de la ciencia nada
ApuntandoX = ApuntandoX+ApuntandoX*(100-Punteria)/100*(2*random(2)-1);

ApuntandoY = ApuntandoY+ApuntandoY*(100-Punteria)/100*(2*random(2)-1);

Esto está bien.
 
Yo probaría con:

Rotando = (50+50*Math.random())*(2*random(2)-1);
VariacionDeRotando = Rotando*((100-Rotando)*Punteria)/10000

pero no estoy seguro de que es lo que quieres lograr con Rotando.
Saludos  \(\mathbb {R}^3\)

22 Marzo, 2026, 12:16 pm
Respuesta #2

Tachikomaia

  • $$\Large \color{#5b61b3}\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 1,297
  • País: uy
  • Karma: +0/-0
  • Sexo: Masculino
Rotando lo tenía como que fuera -100~-50 o 50~100, cuando no estaba influyendo la puntería. Ahora que va a influir, supongo que puedo usar un método más parecido a los otros.

Veo que no hay random, o sea:
ApuntandoX = 350*(2*random(2)-1);
Eso da -350 o 350, bien.
Pero quiero que varíe de 0 a 25%, hacia arriba o abajo. 25% porque 100-Puntería es 25, si Puntería fuese otra cosa tendría que ser otro número.
Tendría que ser:
ApuntandoX = ApuntandoX+ApuntandoX*random(101-Punteria)/100*(2*random(2)-1);
101 porque los posibles resultados se cuentan desde 0, si fuese 100 el máximo resultado sería 99. Como en el caso del 2 que pongo, que es 0 o 1, 2 posibles resultados.
Con Math.random sería mejor pero de momento no me doy cuenta cómo. O sea, así como está puede sumar o restar 0%, o 1%, etc, siempre números enteros. Ah, ya sé:
ApuntandoX = ApuntandoX+ApuntandoX*Math.random()*(100-Punteria)/100*(2*random(2)-1);

Voy a probar esas cosas.

A ver esto por curiosidad:
Yo probaría con:

Rotando = (50+50*Math.random())*(2*random(2)-1);
VariacionDeRotando = Rotando*((100-Rotando)*Punteria)/10000
Me da por ejemplo -100 y entonces:
-100*((100--100)*75)/10000
Deepseek dice que da -150, no sirve porque eso se le debe sumar a Rotando y se sale del rango deseado.

Ya probé, parece bien.

Tengo esto:
Código: [Seleccionar]
ApuntandoX = 350*(2*random(2)-1);
ApuntandoX = ApuntandoX+ApuntandoX*Math.random()*(100-Punteria)/100*(2*random(2)-1);
ApuntandoY = 20.5+279.5*random(2);
ApuntandoY = ApuntandoY+ApuntandoY*Math.random()*(100-Punteria)/100*(2*random(2)-1);
Rotando = (100-100*Math.random()*(100-Punteria)/100)*(2*random(2)-1);

Probé con diferentes valor de Puntería.

ApuntandoX es -350 o 350, con su correspondiente variación.
ApuntandoY es 20.5 o 300, idem.
Rotando es -100 o 100, en este caso puede ser un poco más de -100 o menos de 100, por ejemplo con Puntería es hasta -75 o hasta 75. Como si se aplicara el 75% de la capacidad de la nave.

Es lo que quería.

22 Marzo, 2026, 02:14 pm
Respuesta #3

Richard R Richard

  • Ingeniero Industrial
  • $$\Large \color{#9c57a6}\pi\,\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 4,054
  • País: ar
  • Karma: +2/-0
  • Sexo: Masculino
  • Dentro de la ciencia todo,fuera de la ciencia nada

Hola, si no me explicas bien de que va la cosa, es decir que es lo que hace cada variable, y que es lo que quieres hacer cuando cada una cambia de valor, poco te puedo ayudar, solo un golpe de suerte  hará que lo que yo te diga, sea realmente lo que tu necesites.
Recuerda que los días pasan y la memoria cae, por mas que relea el hilo a veces no me doy cuenta si esta relacionado o no con algo que ya te dije

Tú tienes apuntando como una variable entre -350 y 350,  si mi puntería  cae del 100% al 75%,  ¿cuánto debe valer apuntando  -262.5 a 262.5  ? Si/no... casi seguro es no. Pero puse el ejemplo para que veas la siguiente pregunta real.

Tú tienes rotando como una variable entre -100 a -50 y 50 a 100,  si mi puntería  cae del 100% al 75%  cuanto debe valer rotando

1) ¿-100 a -75 y 75 a 100 ? Si/No

2) ¿-75 a -50 y 50 a 75 ? SI/NO

3) ¿Cuál es el rango de salida entonces ?

Si no, no sé como guiarte o pasarte fórmula, por ahí es algo obvio, pero si no comprendo, poco puedo hacer por ti, saludos.
Saludos  \(\mathbb {R}^3\)