J'ai une image (i) qui a été mise à l'échelle de sa taille d'origine (rectLarge) pour s'adapter à un rectangle plus petit (rectSmall). Étant donné un point p dans rectSmall, comment puis-je traduire ceci en un point dans rectLarge.Comment traduire un point d'un rect à un point d'un rect scalé?
Pour faire ce béton, supposons que j'ai une image de 20x20 qui a été mis à l'échelle à un rect 10x10. Le point (1, 1) dans le rectangle le plus petit doit être mis à l'échelle jusqu'à un point du rectangle le plus grand (c.-à-d. (2,2)).
Je suis en train d'y parvenir avec:
result.x = point.x * (destRect.size.width/srcRect.size.width);
result.y = point.y * (destRect.size.height/srcRect.size.height);
Cependant, les points générés par ce code ne sont pas correctes - ils ne correspondent pas au point approprié dans l'image originale. Qu'est-ce que je fais mal?
En quoi ces points ne sont-ils pas positionnés correctement? Gardez à l'esprit que la mise à l'échelle d'autres valeurs que les multiplications du plus grand dénominateur commun peut produire des valeurs non-entières dans la division et des sortes d'arrondis. –
Gabriel, j'ai donné quelques explications supplémentaires en réponse à la réponse de Jacob ci-dessous. – Bill
Pouvez-vous donner quelques exemples de tailles qui donnent des résultats incorrects? destRect.size, srcRect.size, point, et le résultat, afin que nous puissions mieux l'aider à le déboguer? – clahey