• STATISTIQUES
  • Il y a eu un total de 3 membres et 7630 visiteurs sur le site dans les dernières 24h pour un total de 7 633 personnes!


    1 membre s'est inscrit dans les dernières 24h!


    Membres: 2 606
    Discussions: 3 580
    Messages: 32 820
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [FR] PHP Débutant
    Apprendre le PHP par l'exemple, facilement et simplement. Réservé d'abord aux débutants....
    Programmation
    [FR] Forum-Webmaster
    Une communauté webmaster pour apporter / recevoir de l'aide en création de site internet. Webmaster...
    Webmaster
    [FR] Newbie Contest
    Crackme: 35, Cryptographie: 49, Hacking: 27, Javascript/Java: 17, Logique: 31, Programmation: 23, Stéganographie: 53
    Challenges
    [EN] Sabre Films
    Site de challenge présenté sous la forme d'une quête. Vous êtes un détective et devrez résoudre d...
    Challenges
    [FR] Root-me
    Script: 5, Système: 20, Cracking: 16, Cryptanalyse: 17, Programmation: 8, Réaliste: 11, Réseau: 10, Stéganog...
    Challenges
    [FR] NewbieContest
    Nous vous proposons une série de challenges regroupant plusieurs domaines allant de l'exploitation de fail...
    Hacking
    [EN] Security Traps
    Site de challenge qui prétend être construit non pas dans le but de parfaire vos connaissances, mais plutôt dan...
    Challenges

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[JavaScript] Fonction trigo
04-11-2012, 13h11 (Modification du message : 19-11-2012, 18h32 par InstinctHack.)
Message : #1
InstinctHack Hors ligne
Posting Freak
*



Messages : 1,366
Sujets : 184
Points: 299
Inscription : Dec 2011
[JavaScript] Fonction trigo
Bonjour à tous!
j'aimerais faire un truc sympa en javascript, un menu multidimensionnel qui fonctionnerais comme un système solaire.
Et là où je bloque, c'est obtenir les différents couple de position x et y des satellites de ma planètes avec en entré la position x et y de la planète, la distance planète-satellites, et le nombre de satellites.

En gros, comment obtenir les coordonnées x et y de x points qui forme un cercle autour d'un centre de coordonnées x et y et d'un rayon z.

vous avez une idée ? :nul en géométrie:
Citation :un jour en cours de java j'ai attrapé les seins d'une fille mais elle m'a frappé en disant "c'est privé !!"
j'ai pas compris pourquoi, je croyais qu'on était dans la même classe
+1 (0) -1 (0) Répondre
04-11-2012, 13h22
Message : #2
supersnail Hors ligne
Éleveur d'ornithorynques
*******



Messages : 1,610
Sujets : 72
Points: 466
Inscription : Jan 2012
RE: fonction trigo en javascript
Je sais pas si ça t'as déjà vu le cercle trigonométrique ou pas encore...

Pour faire "simple", cos(x) te donne l'abscisse d'un point d'un cercle de rayon 1 et d'angle x, tandis que le sin(x) te donne l'ordonnée de ce point...

Donc pour avoir le point d'un cercle de rayon z, ben tu multiplies par z le cos et le sin Wink
Pour que ce soit plus clair, voilà le cercle trigonométrique:
[Image: cercletrigo.png]
Mon blog

Code :
push esp ; dec eax ; inc ebp ; and [edi+0x41],al ; dec ebp ; inc ebp

"VIM est merveilleux" © supersnail
+1 (2) -1 (0) Répondre
04-11-2012, 14h26 (Modification du message : 08-12-2012, 17h13 par supersnail.)
Message : #3
InstinctHack Hors ligne
Posting Freak
*



Messages : 1,366
Sujets : 184
Points: 299
Inscription : Dec 2011
RE: fonction trigo en javascript
merci beaucoup supersnail!
j'ai presque réussi à faire ce que je voulait, mais j'ignore pourquoi il y a un décalage :/
Voilà le code
Code HTML :
<!DOCTYPE html>
<html>
        <head>
                <meta charset="utf-8">
                <title>Cv (Curriculum vitae)</title>
<style type="text/css">
#centre
{
        position: absolute;
        background-color: red;
        height: 10px;
        width: 10px;
}
.satellite
{
        position: absolute;
        background-color: green;
        height: 10px;
        width: 10px;
}
</style>
        </head>
        <body>
                <div id="centre">
                        <div class="satellite"></div>
                        <div class="satellite"></div>
                        <div class="satellite"></div>
                        <div class="satellite"></div>
                        <div class="satellite"></div>
                </div>
<script type="text/javascript" >
function degres_radian(angle)
{
        return Math.PI * angle / 180;
}
function radian_degres(angle)
{
        return 180 * angle/ Math.PI
}

var position_x_centre=parseInt(prompt("Position x du centre ?"));
var position_y_centre=parseInt(prompt("Position y du centre ?"));
var satellites=document.querySelectorAll("#centre .satellite");
var nombre_point= satellites.length;

var distance_planete_satellite=parseInt(prompt("Distance planète-satellite ?"));

document.getElementById("centre").style.left=position_x_centre+"px";
document.getElementById("centre").style.top=position_y_centre+"px";

var angle=360/nombre_point;

for(var abc=0;abc<nombre_point;abc++)
{
        a=abc*angle;
        position_x=position_x_centre+(Math.cos(degres_radian(a))*distance_planete_satellite);
        position_y=position_y_centre+(Math.sin(degres_radian(a))*distance_planete_satellite);
        alert("Position x : "+position_x+"\n"+"Position y : "+position_y);
        satellites[abc].style.left=position_x+"px";
        satellites[abc].style.top=position_y+"px";
}



</script>              
        </body>
</html>
 
Citation :un jour en cours de java j'ai attrapé les seins d'une fille mais elle m'a frappé en disant "c'est privé !!"
j'ai pas compris pourquoi, je croyais qu'on était dans la même classe
+1 (0) -1 (0) Répondre
04-11-2012, 14h41 (Modification du message : 04-11-2012, 14h42 par supersnail.)
Message : #4
supersnail Hors ligne
Éleveur d'ornithorynques
*******



Messages : 1,610
Sujets : 72
Points: 466
Inscription : Jan 2012
RE: fonction trigo en javascript
Le problème du décalage vient que la position de tes satellites se fait déjà par rapport au centre (vu qu'ils sont à l'intérieur du div "centre") Wink

Du coup rajouter la position du centre devient superflue Wink
Mon blog

Code :
push esp ; dec eax ; inc ebp ; and [edi+0x41],al ; dec ebp ; inc ebp

"VIM est merveilleux" © supersnail
+1 (0) -1 (0) Répondre
05-11-2012, 13h06 (Modification du message : 08-12-2012, 17h13 par supersnail.)
Message : #5
InstinctHack Hors ligne
Posting Freak
*



Messages : 1,366
Sujets : 184
Points: 299
Inscription : Dec 2011
RE: fonction trigo en javascript
J'ai retourné le truc dans tous les sens, mais je doit rater une marge ou oublier quelque chose :/
Le placement est pas exactement celui qu'il devrait être -_-
Si quelqu'un aurait une idée, je suis preneur. Smile
Code :
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Cv (Curriculum vitae)</title>
<style type="text/css">
body
{
    background-image: url("http://img371.imageshack.us/img371/5643/5hn0.png");
}
.centre
{
    position: absolute;
    background-color: red;
    z-index: 5;
}
.satellite
{
    transition:all 0.5s;
    position: absolute;
    background-color: white;
    z-index: 10;
    text-align: center;
    margin: 0 0 0 0;
    padding: 0 0 0 0;
/*
  display:inline-block;
  vertical-align:middle;
*/
    
}
.satellite:hover
{
    background-color: blue;
}
</style>
    </head>
    <body>
<!--
        <div class="" style="position:absolute;top:400px;left:500px;">X</div>
-->
        <div class="centre" diametre_planete="200" diametre_satellite="50" distance_centre_planete_satellite="0">
            <div class="satellite">.</div>
            <div class="satellite">.</div>
            <div class="satellite">.</div>
            <div class="satellite">.</div>
            <div class="satellite">.</div>
        </div>
<script type="text/javascript" >
function degres_radian(angle)
{
    return Math.PI * angle / 180;
}
function radian_degres(angle)
{
    return 180 * angle/ Math.PI
}

var array_planete=document.querySelectorAll(".centre");
for(var abc=0;abc<array_planete.length;abc++)
{
    var diametre_planete=parseInt(array_planete[abc].getAttribute("diametre_planete"));//parseInt(prompt("Diamètre du centre ?"));
    var diametre_satellite=parseInt(array_planete[abc].getAttribute("diametre_satellite"));//parseInt(prompt("Diamètre des satellites ?"));
    var distance_centre_planete_satellite=parseInt(array_planete[abc].getAttribute("distance_centre_planete_satellite"));//parseInt(prompt("Distance entre les centres planète-satellite ?"))-(diametre/2);

    var position_x_centre_planete=window.innerWidth/2;//parseInt(prompt("Position central x du centre ?"));
    var position_y_centre_planete=window.innerHeight/2;//parseInt(prompt("Position central y du centre ?"));

    array_planete[abc].style.height=diametre_planete+"px";
    array_planete[abc].style.width=diametre_planete+"px";
    array_planete[abc].style.borderRadius=(diametre_planete/2)+"px";

    array_planete[abc].style.left=(position_x_centre_planete-(diametre_planete/2))+"px";
    array_planete[abc].style.top=(position_y_centre_planete-(diametre_planete/2))+"px";

    var satellites=array_planete[abc].querySelectorAll(".satellite");

    for(var abc=0;abc<satellites.length;abc++)
    {
        satellites[abc].style.height=diametre_satellite+"px";
        satellites[abc].style.width=diametre_satellite+"px";
        satellites[abc].style.borderRadius=(diametre_satellite/2)+"px";
        
        a=abc*(360/satellites.length);
        position_x=Math.cos(degres_radian(a));//on cherche la coordonnée x en ayant l'angle
        position_y=Math.sin(degres_radian(a));//on cherche la coordonnée y en ayant l'angle

        position_x*=diametre_planete+(distance_centre_planete_satellite-diametre_satellite);
        position_y*=diametre_planete+(distance_centre_planete_satellite-diametre_satellite);

        satellites[abc].style.left=(position_x+diametre_satellite)+"px";
        satellites[abc].style.top=(position_y+diametre_satellite)+"px";
//        alert(position_x+"\n"+position_y);
    }
}
</script>        
    </body>
</html>

l'erreur doit être dans cette section :
Code JAVASCRIPT :

        position_x=Math.cos(degres_radian(a));//on cherche la coordonnée x en ayant l'angle
        position_y=Math.sin(degres_radian(a));//on cherche la coordonnée y en ayant l'angle

        position_x*=diametre_planete+(distance_centre_planete_satellite-diametre_satellite);
        position_y*=diametre_planete+(distance_centre_planete_satellite-diametre_satellite);

        satellites[abc].style.left=(position_x+diametre_satellite)+"px";
        satellites[abc].style.top=(position_y+diametre_satellite)+"px";
 


le code est ici : http://passion09.comule.com/cv.php
Citation :un jour en cours de java j'ai attrapé les seins d'une fille mais elle m'a frappé en disant "c'est privé !!"
j'ai pas compris pourquoi, je croyais qu'on était dans la même classe
+1 (0) -1 (0) Répondre
05-11-2012, 15h56
Message : #6
Booster2ooo Hors ligne
Contributeur
*****



Messages : 165
Sujets : 14
Points: 63
Inscription : Aug 2011
RE: fonction trigo en javascript
J'ai pas trop le temps de regarder l'algo mais j'en profite quand même pour vous suggérer d'utiliser JSFiddle quand il s'agit de languages web, c'est quand mm très pratique:
http://jsfiddle.net/rexjA/1/
+1 (0) -1 (0) Répondre
05-11-2012, 18h41 (Modification du message : 05-11-2012, 18h51 par Booster2ooo.)
Message : #7
Booster2ooo Hors ligne
Contributeur
*****



Messages : 165
Sujets : 14
Points: 63
Inscription : Aug 2011
RE: fonction trigo en javascript
Bon, j'ai pas pris le temps de corriger, j'ai tout réécris.
http://jsfiddle.net/rexjA/2/

Je ne sais pas si dans ton code tu en tenais compte mais j'ai vu que ta planète et tes satellites étaient tous en absolue. Il faut donc bien garder à l'esprit que les satellites sont positionnés de manière relative à la planète et non à la "window".

GL Smile


Edit:
Bon, j'ai pas résisté à faire le cas des absolute, alors voila, *spoiler alert* http://jsfiddle.net/rexjA/3/

Edit 2:
Autre remarque important que j'avais oubliée, en JS, pour le parseInt, il faut mieux toujours précisé la base 10 en second param pour éviter les surprises Wink
+1 (1) -1 (0) Répondre
06-11-2012, 10h46
Message : #8
spgb Hors ligne
Membre
*



Messages : 37
Sujets : 1
Points: 0
Inscription : Aug 2012
RE: fonction trigo en javascript
JSFiddle c'est bien mais pas toujours fiable par contre.
Donc si on peut tester en local ... c'est toujours mieux. (si on doit partager, ça peut être pratique)

Bien joué sinon Wink
+1 (0) -1 (0) Répondre
06-11-2012, 12h00 (Modification du message : 06-11-2012, 12h02 par InstinctHack.)
Message : #9
InstinctHack Hors ligne
Posting Freak
*



Messages : 1,366
Sujets : 184
Points: 299
Inscription : Dec 2011
RE: fonction trigo en javascript
Merci beaucoup Booster2ooo !
En revanche j'ai encore un problème c'est pour la récursivité du truc, genre le satellite du satellite
j'ai remis le code ici http://passion09.comule.com/planete.php et là pour ceux qui préfère http://jsfiddle.net/rexjA/4/ en ajoutant un satellite ainsi :
Code :
<div class="planet satellite" data-raidusplanet="100" data-raidussat="25" data-distance="10" >

Et j'avoue que j'ignore comment résoudre ça :/
Citation :un jour en cours de java j'ai attrapé les seins d'une fille mais elle m'a frappé en disant "c'est privé !!"
j'ai pas compris pourquoi, je croyais qu'on était dans la même classe
+1 (0) -1 (0) Répondre
06-11-2012, 18h43 (Modification du message : 07-11-2012, 12h53 par Booster2ooo.)
Message : #10
Booster2ooo Hors ligne
Contributeur
*****



Messages : 165
Sujets : 14
Points: 63
Inscription : Aug 2011
RE: fonction trigo en javascript
http://jsfiddle.net/rexjA/6/

- Vérifier le niveau dans lequel se trouve le node satellite
- Ne pas appliquer la translation top/left d'une planète à un satellite&planète
+1 (0) -1 (0) Répondre
10-11-2012, 12h26
Message : #11
InstinctHack Hors ligne
Posting Freak
*



Messages : 1,366
Sujets : 184
Points: 299
Inscription : Dec 2011
RE: fonction trigo en javascript
Booster2ooo le code est parfaitement fonctionnel sur jsFiddle, mais sur firefox nan :/
j'ai une erreur dans firebug
Code :
TypeError: planets[p].hasClass is not a function
!planets[p].hasClass('satellite') && buildUniverse(planets[p], true);
Citation :un jour en cours de java j'ai attrapé les seins d'une fille mais elle m'a frappé en disant "c'est privé !!"
j'ai pas compris pourquoi, je croyais qu'on était dans la même classe
+1 (0) -1 (0) Répondre
12-11-2012, 15h28
Message : #12
Booster2ooo Hors ligne
Contributeur
*****



Messages : 165
Sujets : 14
Points: 63
Inscription : Aug 2011
RE: fonction trigo en javascript
t'as pas oublié
Code :
var hasClass = function (ele,cls) {
        return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
    }

?
+1 (0) -1 (0) Répondre


Sujets apparemment similaires…
Sujet Auteur Réponses Affichages Dernier message
  Apprendre JavaScript en s'amusant ! Booster2ooo 6 296 25-11-2013, 23h08
Dernier message: saywoot
  [JavaScript] Fonction Array Shirobi 18 581 29-10-2012, 22h36
Dernier message: InstinctHack
  [Html/Javascript] Comment cachées les informations que contienne une variable ? WizOut 22 736 21-10-2012, 14h15
Dernier message: sakiir
  [JavaScript] parcours du DOM InstinctHack 1 115 07-08-2012, 11h27
Dernier message: Booster2ooo
Tongue [JavaScript] faire de l'Ajax facilement InstinctHack 0 107 02-03-2012, 01h39
Dernier message: InstinctHack
  [Javascript] .toString() mercurial17 5 211 30-12-2011, 00h21
Dernier message: Ark

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut