Question

J'ai rectangle, qui avait des informations sur TopX, topy, largeur et hauteur.

Je veux à l'échelle de ce rectangle à partir d'une origine autre que supérieur gauche. Y at-il algo déjà existant pour le faire?

Actuellement, je travaille sur Eclipse FEM et SWT. Dans FEM, on suppose que le haut-gauche est l'endroit où le dessin commence et ils échelle / redimensionner de haut à gauche les toutes les opérations du rectangle. Mais je veux faire échelle / redimensionner du centre.

ex: mon rectangle ont des informations comme {} 100,100,50,50. Si je mise à l'échelle de 1,5 dans les deux x et y du haut gauche, je vais le rectangle résultant comme {} 100100100100 (les deux premiers sont x, y et repos sont la largeur, hauteur).

Merci J

Était-ce utile?

La solution

Ma définition de l'échelle est différente de la vôtre parce que si j'échelle de 1,5 en haut à gauche de mon rectangle résultant serait {100, 100, 75, 75} -> l'origine reste le même et la taille de chaque côté est multiplié par l'échelle.

L'utilisation de ces définitions, si (x, y) sont les meilleurs coordonnées gauche du rectangle, mise à l'échelle à partir du centre et de maintien de l'origine constante: {X, y, largeur, hauteur} -> {x + largeur * (1 - échelle) / 2, y + hauteur * (1 - échelle) / 2, largeur * échelle, la hauteur * échelle}

Je suggère l'échelle> 0 même si le résultat est défini pour zéro et les valeurs négatives.


Exemple de travail:. Échelle {100, 100, 50, 50} par 1,5 du centre

x: 100 -> 100 + 50 * (1 - 1.5)/2 = 100 + 50 * (-0.5)/2 = 100 - 50/4 = 87.5
y: 100 -> 100 + 50 * (1 - 1.5)/2 = 100 + 50 * (-0.5)/2 = 100 - 50/4 = 87.5
width:  50 -> 50 * 1.5 = 75
height: 50 -> 50 * 1.5 = 75

Résultat: {100, 100, 50, 50} -> {87,5, 87,5, 75, 75}

Autres conseils

si le rectangle est défini par

topx, topy, widht, height

le facteur d'échelle est

factor

les coordonnées d'origine sont

ox, oy

vous pouvez redimensionner le rectangle par l'origine donnée avec la formule suivante

topx   = ox + ( topx - ox ) * factor;
topy   = oy + ( topy - oy ) * factor;
width  = width  * factor;
height = height * factor;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top