2013-02-13 5 views
0

Je suis en train de réécrire le jeu "Achtung, die Kurve" (Attention, la courbe)Slick2d/Curve LWJGL par tableau de points

Maintenant, je suis coincé avec le problème: Comment puis-je dessiner une courbe , qui passe par N points (x/y) COORDONNEES

for(int i = 0;i < xList.size();i++) 
    { 
     path.lineTo(player1.getShape().getCenterX(),player1.getShape().getCenterY()); 
    } 

^Ce sera toujours créer une nouvelle ligne, donc mon FPS arriver à 10 très rapidement

Toute aide?

Répondre

0

Il s'agit d'un problème d'algèbre qui peut être résolu avec des systèmes d'équations linéaires.

Généralement, une courbe passant par N points est un polynôme (N-1) degré. Donc, si vous voulez trouver un polynôme qui passe par 3 points (par exemple (-1,1), (0, 3), (1, -1)) vous auriez besoin d'une équation quadratique comme ceci: ax^2+bx+c=y.

Pour trouver les valeurs de a, b et c, vous devez insérer les coordonnées x et y, puis résoudre le système d'équations.

a^(-1)^2 + b (-1) + c = 1
a (0)^2 + b (0) + c = 3
un (1) 2 + b (1) + c = -1

que simplifiles à

a-b + c = 1 c =
a + b + c = -1

Eh bien, nous avons déjà c = 3. En combinant la première équation et la seconde nous pouvons obtenir

2a + 2c = 0

Puisque nous savons c = 3, cela devient

2a + 3 = 0

Donc a=-1.5.

De là, nous pouvons mettre ces valeurs de a et c dans la dernière équation pour obtenir ce

-1,5 + b + 3 = -1

Ce qui donne un b=-3.5. Ces valeurs de branchement a, b et c de nouveau dans les rendements de cette équation du second degré

-1.5x^2-3.5x + 3 = y

Je n'ai pas revérifié mes calculs, mais si je l'ai fait correctement, cela donnera une courbe quadratique qui passe par les trois points.Sans aucun doute, il existe déjà une bibliothèque pour ce faire, mais je suis désolé de dire que je ne sais pas ce que ce serait. Heureusement, connaître les maths derrière votre problème vous aidera à trouver votre réponse.