2010-05-20 3 views
0

У меня есть какая-то форма, состоящая из вертикальных, горизонтальных и диагональных линий. Я начинаю X, Y и заканчивая X, Y (это мой ввод - всего 2 точки, определяющие линию) каждой строки, и я хотел бы сделать всю форму масштабируемой (просто изменив значение переменной отношения масштаба), так что я все же могу сохранить правильное соединение линий и пропорций. Просто для того, чтобы лучше понять, что я имею в виду: было бы так, как если бы у меня были такие же строки в векторном редакторе.Смачивание подключенных линий

Было бы возможно с помощью алгоритма, и, пожалуйста, дайте мне другое возможное решение, если такого алгоритма нет?

спасибо, что заблаговременно!

ответ

3

какой пункт вы хотите его масштабировать? Вы можете масштабировать относительно первой точки, центра или какого-либо другого произвольного местоположения. Как правило, вы вычитаете смещение (например, первую точку на вашем входе), умножьте на коэффициент масштабирования и затем добавьте обратно смещение.

Более систематический подход в компьютерной графике должен был бы использовать transformation matrix ... хотя это, вероятно, переполняет ваш случай.

+0

Спасибо за быстрый ответ! Фактически, оба масштабирования относительно первой точки и центра будут выполнять эту работу для меня. Не могли бы вы объяснить смещение, пожалуйста? Может ли быть одинаковым для всех точек? Скажем, у меня есть треугольник со следующими координатами (3 строки: AB, BC, AC): A (1,2), B (4,2) и C (3,4) Может кто-нибудь, пожалуйста, дать мне простой псевдокод для правильного масштабирования треугольника? Спасибо, Hristo – User3419

+0

просто вычтите соответствующие значения X и Y для каждой точки теми, кто находится в точке A. A '= A-A, B' = B-A, C '= C-A. Затем умножьте свой масштабный коэффициент ... например, если вы хотите удвоить размер ... A '' = 2.0 * A ', B' '= 2.0 * B', C '' = 2.0C '... наконец добавьте обратно в свое смещение. A '' '= A' '+ A, B' '' = B '' + A, C '' '= C' '+ A – tbischel

+0

Большое спасибо! Я попробую, а затем вернусь к вам с результатом. – User3419