help : location aleatoire dans un perimètre réduit

Répondre
Partager Rechercher
bon, ben moi zé un pb.
je chercher à définir des locations aleatoires, dans un périmètre restreint. alors j'ai bien qq idée, mais je butte sur un truc :
les vecteurs.
j'envisageais un ruc du style :
Code PHP:

void main()
{
 
vector vCentre GetPositionFromLocation(GetItemActivatedTargetLocation());
 
float fCentrex// et la je recupere comment le x ??
 
float fCentrey// et la je recupere comment le y ??
 
if(Random(2))
 
fCentrex -= Random(5);
 else
 
fCentrex += Random(5);

 if(
Random(2))
 
fCentrey -= IntToFloat(Random(5)+1);
 else
 
fCentrey += IntToFloat(Random(5)+1);

 
fCentrey fabs(fCentrey);
 
fCentrex fabs(fCentrex);
 
vector vVec Vector(fCentrexfCentrey0.0);
 
location lPoint Location(GetArea(OBJECT_SELF), vVecIntToFloat(Random(360)+1)); //y a cb d'orientation possible ?


alors la, je me dis que ca devrait me les définir dans un carré de 10m de coté centré sur l'endroit ou que je clique ... mais ... comment je recupere les coordonnées
g pas trouvé dans les fonctions, donc si qq avait un truc
super, genial, merci, magnifique

c parti

(tiens, et tant qu'on y est, pour un cercle ?
c possible ? faut absolument que je me replonge dans mes cours de geométrie ou quelqu'un à un idée simple ?)
Me dites pas que vos profs de maths vous ont bourré le crane de sinus et de cosinus pendant des années pour rien ?

J'ai pas regardé les fonctions trigo dans nwn donc je peux pas te donner de bout de code, donc je te donne le principe

Tu sors 2 nombre aléatoires : une norme et un angle.

Tes coordonnées ce sera :
en x : norme*cos(angle)
en y : norme*sin(angle)

Avec ca ca te sort une position aleatoire dans un cercle ayant pour rayon la norme max que tu auras définie.
et le cercle l'est centré où ?
la y a qu'un quart de cercle d'exploitable je me trompe ?
ba oui, les vecteurs ils partent d'un coin de la zone ... nan ?

a moins qu'on puisse aditionner des vecteurs sous nwn ?
(surement)
alors je fais mon vecteur aleatoire plus le vecteur postion du centre que je veux
c ca ? ca marcherais ?
(et accesoirement, les angles sont en radian ou en degré sous aurora?)

edit : chuis idiot, suffit d'additionner les cordonnée (non ? dsl, la geometrie j'aime ca mais bon, ca rentre par un bout ... )
alors, ca ca marcherais ? (test t a l'heure de toute facon, mais bon )

Code PHP:

void main()
{
 
vector vCentre GetPositionFromLocation(GetItemActivatedTargetLocation());
float fCentrex vCentre.x;
float fCentrey vCentre.y;
 
float fNorme IntToFloat(Random(5)+1);
 
float fAngle IntToFloat(Random(361));
 
float fx fNorme*cos(fAngle);
 
float fy fNorme*sin(fAngle);

 
fCentrex += fx;
 
fCentrey += fy;
 if(
fCentrey 0.0fCentrey 0.0//si on sort de la zone on revient au bord
 
if(fCentrex 0.0fCentrex 0.0//si on sort de la zone on revient au bord
 
vector vVec Vector(fCentrexfCentrey0.0);
 
location lPoint Location(GetArea(OBJECT_SELF), vVecIntToFloat(Random(360)+1)); //y a cb d'orientation possible ?

Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés