Worldedit
  Worldedit
Le site sur l'éditeur de warcraft 3 !
 
  FAQFAQ   RechercherRechercher   Liste des MembresListe des Membres    Groupes d'utilisateursGroupes d'utilisateurs   medals.phpMédailles   S'enregistrerS'enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 
  FAQFAQ World Editor   UploadUploader une map ou une image    UploadAjouter sa map à l'annuaire   UploadConsulter l'annuaire

Point dans section de cercle

 
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Aide sur les déclencheurs
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 florianlenecro
Floodeur prématuré


Inscrit le: 12 Nov 2009
Messages: 711
Sujets: 50
Spécialité en worldedit: Vétéran


MessagePosté le: 08/07/14 11:55    Sujet du message: Point dans section de cercle Citer

Salut,

Voila, j'ai essayé de récupérer un point aléatoire dans un cercle compris entre une valeur d'angle Min et Max avec le cercle diviser en 3 partie la 2e étant celle recherché
Secret:

Section = [HI]


Voici la première version, simple mais non fonctionnel apparemment :/
Jass:
function GetRandomLocInArc takes real Xcenter, real Ycenter, real AngleMin, real AngleMax, real Area, real coefficient returns location
    local location rdLoc
   

    if  coefficient == 1  then
        set rdLoc = PolarProjection(Xcenter, Ycenter, GetRandomReal(0, Area), GetRandomReal(AngleMin, AngleMax) )
    elseif  coefficient > 0.00 and coefficient < 1.00  then
        set rdLoc = PolarProjection(Xcenter, Ycenter, GetRandomReal( 0+(Area*coefficient), Area-(Area*coefficient)), GetRandomReal(AngleMin, AngleMax) )
    endif
   
    return rdLoc
endfunction



_________________
C'est en forgeant que l'on devient forgeron
"Le feu ne peut tuer le dragon"
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Ectelion
Membre reconnu


Inscrit le: 12 Nov 2011
Messages: 1062
Sujets: 107
Spécialité en worldedit: Inactif(Enfin presque)
Médailles: 1 (En savoir plus...)
Créateur d'unité (Quantité : 1)

MessagePosté le: 08/07/14 12:05    Sujet du message: Citer

Tu donnes tes angles en radian ou en degrés lorsque tu appelle la fonction ?
_________________
Inactif(Enfn presque)
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 florianlenecro
Floodeur prématuré


Inscrit le: 12 Nov 2009
Messages: 711
Sujets: 50
Spécialité en worldedit: Vétéran


MessagePosté le: 08/07/14 12:08    Sujet du message: Citer

degré pquoi, faut donner en rad?

Edit:
Jass:
function PolarProjection takes real Xsource, real Ysource, real dist, real angle returns location
    local real x = Xsource + dist * Cos(angle * bj_DEGTORAD)
    local real y = Ysource + dist * Sin(angle * bj_DEGTORAD)
    return Location(x, y)
endfunction

Cette fonction s'en occupe déja nan?
_________________
C'est en forgeant que l'on devient forgeron
"Le feu ne peut tuer le dragon"
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Tirlititi



Inscrit le: 21 Fév 2010
Messages: 1785
Sujets: 22
Spécialité en worldedit: La modestie
Médailles: 1 (En savoir plus...)
Grand mage créateur de sort (Quantité : 1)

MessagePosté le: 08/07/14 12:57    Sujet du message: Citer

Je vois pas de problème, mais essaie ça :

Jass:
function GetRandomRadius takes real min, real max returns real
    return SquareRoot(min*min+GetRandomReal(0,max*max-min*min))
endfunction

function GetRandomLocInArc takes real Xcenter, real Ycenter, real AngleMin, real AngleMax, real Area, real coefficient returns location
    local real radius = GetRandomRadius(coefficient*Area, Area)
    local real angle = GetRandomReal(AngleMin, AngleMax)
    return PolarProjection(Xcenter, Ycenter, radius, angle)
endfunction


Si tu choisis un rayon aléatoire de manière naïve, tu te retrouves avec des points plus concentrés au centre que sur les bords. Je m'en suis occupé donc.

Le cas du disque plein (et pas de l'anneau) est fait avec "coefficient == 0" et y'a plus besoin de distinguer les cas.

J'ai pas testé le script. Dis-le me le si ça bug mais à mon avis, ton problème vient de la façon dont tu appelles ta fonction. Faudrait que tu nous le montre aussi.

N'oublie pas que, sur ton dessin :
• si tu veux un point dans le quart en haut à gauche, alors "AngleMin == 90" et "AngleMax == 180",
• si tu veux un point dans les autres quarts, alors "AngleMin == -180" et "AngleMax == 90".
_________________
Warcraft III, c'était mieux avant. Y'avait des purs chefs-d'oeuvres du mapping !
Road Of Glory (par moi)
Casse-briques (par moi)
Temple de Glace (par moi)
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 florianlenecro
Floodeur prématuré


Inscrit le: 12 Nov 2009
Messages: 711
Sujets: 50
Spécialité en worldedit: Vétéran


MessagePosté le: 08/07/14 13:12    Sujet du message: Citer

Ca m'a l'air de bien fonctionner merci Smile

Jass:
// AngleSection = 360/ICE_FALL_AMOUNT
set rdLoc = GetRandomLocInArc( ice.struct[id].tx, ice.struct[id].ty, 0+(AngleSection*i), (AngleSection)+(AngleSection*i),BIRTH_AREA, 0.2)

_________________
C'est en forgeant que l'on devient forgeron
"Le feu ne peut tuer le dragon"
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Aide sur les déclencheurs Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com