Bonjour a tous. Me voila encore avec cette methode en c# que je retranscris en Java. Je pense voir le bout du tunnel mais il me reste encore 2-3 erreurs a commencé par celles-ci:
1 2
| double accelerationVector = -Vecteur2.Normalize(velocityVector) * frictionAcceleration + new Vecteur2(0, -gravity);
positionVector += velocityVector * timeStep + 1 / 2 * accelerationVector * timeStep * timeStep; |
me sort comme erreur pour la ligne1:
Error:(69, 41) error: bad operand type Vecteur2 for unary operator '---'
et pour la ligne 2:
1 2 3
| Error:(73, 46) error: bad operand types for binary operator '*'
first type: Vecteur2
second type: double |
plutôt logique sauf que ces lignes marchent en c#:
1 2
| var accelerationVector = -Vector2.Normalize(velocityVector) * frictionAcceleration + new Vector2(0, -gravity);
positionVector += velocityVector * timeStep + 1 / 2 * accelerationVector * timeStep * timeStep; |
Voici la classe Vecteur2 qui est une classe que j'ai écris en Java en prenant ce dont j'avais besoin de la methode Vector2 qui fait partie du langage c#:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| import java.lang.Math;
public class Vecteur2 {
double x;
double y;
private static Vecteur2 zeroVector = new Vecteur2(0f, 0f);
public Vecteur2(double dX, double dY) {
x = dX;
y = dY;
}
public double LengthSquared() {
return Math.pow(x, 2) + Math.pow(y, 2);
}
public static Vecteur2 TransformNormal(Vecteur2 normal, Matrix3x2 matrix) {
normal.x = (normal.x * matrix.m11) + (normal.y * matrix.m21);
normal.y = (normal.x * matrix.m12) + (normal.y * matrix.m22);
return normal;
}
public static Vecteur2 Normalize(Vecteur2 value) {
double val = 1.0f / (double) Math.sqrt((value.x * value.x) + (value.y * value.y));
value.x *= val;
value.y *= val;
return value;
}
public static Vecteur2 Zero()
{
return zeroVector;
}
public double Length()
{
return (double)Math.sqrt((x * x) + (y * y));
}
} |
et enfin au cas ou je vous laisse le code de la méthode Vector2 c# : http://www.technologicalutopia.com/s...vector2.cs.htm
Je me demande comment ça se fait qu'en c# on puisse utiliser des operateurs sur l'objet Vector2 comme ça et surtout comment faire la même chose en Java ? Et si ce n'est pas possible et qu'il faut
que je crée des methodes du style "multiplie(double)" dans ma classe Vecteur2: Comment savoir avec quoi je remplis ces methodes ?
Partager