JeuWeb - Crée ton jeu par navigateur
[Résolu] Géométrie, calcul des coordonnées d'un point sur un cercle - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Résolu] Géométrie, calcul des coordonnées d'un point sur un cercle (/showthread.php?tid=7139)



[Résolu] Géométrie, calcul des coordonnées d'un point sur un cercle - Soleo - 27-08-2014




RE: Géométrie, calcul des coordonnées d'un point sur un cercle - Soleo - 28-08-2014

Re, bon j'ai réussi après de longue recherches à combiner deux théorèmes afin de parvenir à mes fins.
Je passe donc le sujet en résolu, voici pour les curieux la tronche du truc :

Code :
if(distance > 100)
    {
            var a = calculdistance((j1x+100), x, j1y, y);
            var b = 100;
            var c = distance;
            var t = Math.acos((Math.pow(b,2) + Math.pow(c, 2) - Math.pow(a,2)) / (2*b*c));
            xligne = j1x + 100*Math.cos(t);
            if(y > j1y)
                yligne = j1y + 100*Math.sin(t);
            else
                yligne = j1y - 100*Math.sin(t);
    }

Bonne journée !


RE: [Résolu] Géométrie, calcul des coordonnées d'un point sur un cercle - Xenos - 28-08-2014

Ca tient en deux lignes, avec:
• Joueur = Array(x,y) la position du joueur
• Curseur = Array(x,y) la position du curseur
• Distance la distance entre le joueur et le curseur, qu'on peut obtenir par Distance = Math.pow(Math.pow(Joueur(0)-Curseur(0),2)+Math.pow(Joueur(1)-Curseur(1),2),0.5)
• Rayon le rayon du cercle (ou la distance maximale)


if (Distance > Rayon)
{
// Equation: Curseur[] = Joueur[] + (Curseur[]-Joueur[])/Distance * Rayon
var FacteurProportionnel = Rayon / Distance;
var Curseur = [Joueur[0] + (Curseur[0]-Joueur[0]) * FacteurProportionnel, Joueur[1] + (Curseur[1]-Joueur[1]) * FacteurProportionnel];
}

Qui sera donc plus simple à relire (ce serait encore plus simple si on pouvait travailler avec les tableaux directement plutôt qu'avec chaque composante mais bon) et plus rapide à exécuter Wink


Note:
L'équation limite le déplacement à Rayon unités de distance max, mais on pourrait la réutiliser pour limiter le déplacement à Rayon unités de distance minimum (en faisant attention toutefois au cas "Distance=0", c'est à dire si le joueur veut rester sur place).

Edit:
Correction des () en [] pour coller à Javascript (et non à VBScript que j'ai bouffé ces derniers jours...!)


RE: [Résolu] Géométrie, calcul des coordonnées d'un point sur un cercle - Soleo - 28-08-2014

Merci du code Xenos, il marche tout autant avec comme bonus d'être beaucoup plus lisible ! (Attention les Array en JS se consultent avec des [] et non des (), ma console s'est affolée !)