2010-05-20 15 views
0

J'ai une sorte de forme composée de lignes verticales, horizontales et diagonales. Je commence X, Y et termine X, Y (c'est mon entrée - juste 2 points définissant une ligne) de chaque ligne et je voudrais rendre la forme entière extensible (juste en changeant la valeur d'une variable de rapport d'échelle), de sorte que je puisse encore conserver le bon raccordement des lignes et des proportions. Juste pour avoir une meilleure idée de ce que je veux dire: ce serait comme si j'avais les mêmes lignes dans un éditeur de vecteurs.Élinguation des lignes connectées

Serait-ce possible avec un algorithme, et pourriez-vous s'il vous plaît, me donner une autre solution possible s'il n'y a pas un tel algorithme?

Merci beaucoup d'avance!

Répondre

3

À quel point voulez-vous que cela évolue? Vous pouvez mettre à l'échelle par rapport au premier point, au centre ou à un autre emplacement arbitraire. Typiquement, vous soustrayez un offset (par exemple le premier point de votre entrée), multipliez par un facteur d'échelle, puis rajoutez le décalage.

Une approche plus systématique dans l'infographie serait d'utiliser un transformation matrix ... bien que ce soit probablement exagéré dans votre cas.

+0

Merci pour la réponse rapide! En fait, la mise à l'échelle par rapport au premier point et au centre ferait l'affaire pour moi. Pourriez-vous expliquer la chose offset, s'il vous plaît? Peut-il en être de même pour tous les points? Dire que j'ai un triangle avec les coordonnées suivantes (3 lignes: AB, BC, AC): A (1,2), B (4,2) et C (3,4) Pourrait quelqu'un, s'il vous plaît, donnez-moi un pseudo-code simple pour mettre à l'échelle le triangle correctement? Merci, Hristo – User3419

+0

il suffit de soustraire les valeurs X et Y respectives pour chaque point par celles du point A. A '= A-A, B' = B-A, C '= C-A. Puis multipliez par votre facteur d'échelle ... par exemple si vous voulez doubler la taille ... A '' = 2.0 * A ', B' '= 2.0 * B', C '' = 2.0C '... enfin rajouter dans votre offset. A '' '= A' '+ A, B' '' = B '' + A, C '' '= C' '+ A – tbischel

+0

Merci beaucoup! Je vais essayer, puis je reviendrai avec le résultat. – User3419