2D Euclidienne du vecteur rotations

J'ai un euclidienne du vecteur a assis au coordonnées (0, 1).
Je veux faire tourner a de 90 ° (sens horaire) autour de l'origine: (0, 0).

Si j'ai une bonne compréhension de la façon dont cela devrait fonctionner, la résultante de (x, y) les coordonnées après la rotation doit être (1, 0).
Si je devais le faire pivoter de 45 degrés (toujours dans le sens horaire) à la place, je me serais attendu à la résultante des coordonnées pour être (0.707, 0.707).

theta = deg2rad(angle);

cs = cos(theta);
sn = sin(theta);

x = x * cs - y * sn;
y = x * sn + y * cs;

L'aide du code ci-dessus, avec un angle valeur de 90,0 degrés, la résultante de coordonnées sont: (-1, 1).
Et je suis tellement confus.
Les exemples dans les liens suivants représentent la même formule ci-dessus, dites-vous?

Qu'ai-je fait de mal?
Ou ai-je mal compris la façon dont un vecteur est d'être tourné?

  • Quels sont les types de toutes les variables?
  • doubles, mais la réponse est assez simple, grâce à Caspar.
  • Aussi - n'est-ce pas dans le sens antihoraire?