Jump to content
Sign in to follow this  
nomoregames

ANSWERED Aleatoriedad dentro de un circulo

Recommended Posts

Muy buenas, hoy vengo con una de matemáticas

Veréis, tengo un círculo dentro de otro círculo, el más pequeño dentro del más grande y quiero hacer que el círculo de dentro (el pequeño), se mueva a un punto aleatorio dentro de el círculo más grande...

Pues eso...

Sé que el radio y el seno y coseno rondan por ay... pero no sabría como hacerlo

 

Gracias

Share this post


Link to post
Share on other sites

hola

se puede hacer de muchas maneras, esta es una:


//esta funcion te devuelve un punto(vector3) dentro de un circulo (horizontal)
//dalndole el centro del circulo=circlePos (vector3), y el radio del circulo=circleRad (float)
Vector3 randomPointInsideCircle(Vector3 circlePos, float circleRad) {
	float ang = Random.Range(0f, 360f); //un angulo aleatorio entr 0 y 360
  	ang *= Mathf.Deg2Rad;// convertie el angulo en radianes (seno y coseno de unity funciona en radianes)
  	Vertor3 pos = new Vector3(Mathf.Sin(ang), 0, mathf.Cos(ang));//crear un vector de la direccion del angulo
  	float length = Random.Range(0f, circleRad); //un valor aleatorio entre cero y el radio del circulo
  	pos *= length; //hacer que el vector mida esa longitud aleatoria
  	pos += circlePos; //sumar la posicion del centro del circulo para que el punto este "alrededor" suya
  	return pos; //devolver la posicion
}

 

esta es otra:

Vector3 randomPointInsideCircle(Vector3 circlePos, float circleRad) {
  	Vertor3 pos = new Vector3(Random.Range(-1f, 1f), 0, Random.Range(-1f, 1f)); //crear un vector aleatorio (-1/+1, 0, -1+1)
	pos.Normalize(); //hacer que el vector mida 1. (apunte hacia donde apunte)
  	float length = Random.Range(0f, circleRad); //un valor aleatorio entre cero y el radio del circulo
  	pos *= length; //hacer que el vector mida esa longitud aleatoria. (esto funciona porque antes media 1)
  	pos += circlePos; //sumar la posicion del centro del circulo para que el punto este "alrededor" suya
  	return pos; //devolver la posicion
}

 

 

Edited by Igor
  • Thanks 1

Share this post


Link to post
Share on other sites
Sign in to follow this  

UnitySpain © Todos los derechos reservados 2020
×
×
  • Create New...