Bonjour, j'utilise ce code C # pour faire pivoter des polygones dans mon application - ils font pivoter mais aussi vous faire asymétruer le chemin qui n'est pas ce que je veux arriver. Tous les polygones sont des rectangles avec quatre coins définis comme des vecteurs 2D,
5 Réponses :
Je n'ai pas de réponse à la raison pour laquelle il façonne encore, mais je do em> avez une suggestion pour rendre le code plus clair: (qui suppose < code> vecteur code> a approprié +/- des opérateurs définis.) p> Vous avez peut-être toujours besoin de quelques coulées sur Edit: une note sur les matrices de rotation impliquées - cela dépend de la question de savoir si vous prenez l'angle pour être dans le sens des aiguilles d'une montre ou dans le sens anti-horaire. Je ne serais pas du tout surpris de savoir que la matrice est bien ce qui ne va pas (j'ai essayé de le vérifier, mais apparemment foiré) ... mais "différent" ne pas nécessairement em> signifie "faux". Espérons que la matrice est em> ce qui ne va pas, certes :) p> p> float code>, mais vous finirez toujours avec moins de les supports obscurcissants des choses. Oh, et vous avez définitivement pas em> besoin de lancer
angle code> à
float code>, étant donné qu'il est déjà déclaré comme
float code> . P>
+1 pour suggérer des améliorations de la lisibilité. Nous avons besoin de plus de personnes codant pour le prochain programmeur qui maintiendra le code.
Juste une supposition sauvage - êtes-vous sûr que le rapport de format de votre résolution de bureau est identique à celui de l'écran physique? C'est-à-dire les pixels carré fort>? Sinon, ensuite, la rotation de vos rectangles dans un angle arbitraire peut les rendre asymétriques. P>
Je n'ai pas eu d'écran avec des pixels anisotropes depuis l'Ega Times (640x400) - Je pensais que ces bêtes allaient la voie du dinosaure!
@nikie - pas nécessairement le pixel physique. Vous pouvez choisir une résolution différente de celle de l'écran natif. De cette façon, vous pouvez obtenir des pixels "logiques" rectangulaires lorsque votre bureau est étiré pour remplir la zone d'écran physique.
On dirait que votre transformation de rotation est incorrecte. Vous devez utiliser: pour plus d'informations, cochez Divers Sources sur Internet. :) p> p>
Je pense que votre matrice de rotation est incorrecte. Il devrait y avoir un + code> au lieu de
- code> dans la deuxième équation:
En supposant que l'origine est 0,0. De votre formule, j'aurais: X '= (x + (x - 0) * cos (angle)) - ((Y - 0) * sin (angle))); X '= x + (x * cos (angle)) - (Y * sin (angle)); p>
qui diffère de la formule initiale x '= x * angle cos-cos - Y * COS Angle p>
Je pense que la réponse de Jon Skeet est correcte et plus claire. P>
On dirait bien pour moi, à une pérusale rapide. Quel type de biaise voyez-vous? Et y a-t-il une raison pour laquelle vous utilisez
float code> au lieu de
double code>?
Le dystatique l'avait ajouté, en ajoutant simplement le terme Y plutôt que de soustraire. Merci à Jonskeet aussi pour le code beaucoup plus agréable :)