Алгоритм увеличения / масштабирования / раздувания / зацикливания треугольника - PullRequest
4 голосов
/ 21 декабря 2011

Я ищу алгоритм для увеличения треугольника с заданным коэффициентом масштабирования.Если я умножу 3 координаты на коэффициент масштабирования, а треугольник не отцентрирован на исходной точке, то треугольник также переместится так же, как и масштаб, который не является требуемым эффектом.

Треугольник должен расти, оставаясь на том же месте.

Моя первоначальная мысль состояла в том, чтобы найти центр треугольника, сместить треугольник к началу координат, масштабировать, снова сместить назад.Однако есть, вероятно, более эффективный способ, чем этот?

Кроме того, если это единственный способ сделать это, каков наиболее подходящий способ найти центр треугольника?

Ответы [ 3 ]

2 голосов
/ 21 декабря 2011

Центр треугольника должен быть в

(x1 + x2 + x3) / 3, (y1 + y2 + y3) / 3

1 голос
/ 10 февраля 2012

использование этого алгоритма для генерации новых координат будет хорошо работать

X_new = X_cg + (X_old-X_cg)*Scale
Y_new = Y_cg + (Y_old-Y_cg)*Scale

X_cg - это геометрический центр вашей геометрии

0 голосов
/ 21 декабря 2011

Получив центральную точку, вы можете сделать это:

  1. Рассчитать расстояние от одной из точек треугольника до центра в векторе. То есть. (3,4).
  2. Удвойте эти значения (или утроите, сколько хотите). То есть. (6,8)
  3. Построить новую точку по сравнению с центром. То есть. если бы центр был (1,2), вы бы добавили к нему новую точку и получили бы (7,10)
  4. Повторите для других точек треугольника

Это должно работать:)

Чтобы вычислить центр, я бы вычислял разницу от самой высокой точки до самой низкой, делил ее пополам и добавлял к самой низкой (так что у вас есть середина этих двух), а затем повторял для левой и правой , Это должно дать вам центр.

...