2013-12-12 6 views
1

Процесс масштабирования x, y координат одного прямоугольника с другими координатами прямоугольника довольно прост, так как лучше поясняется в эта ссылкаРассчитать коэффициент масштабирования для преобразования точки 1 (x, y координат) одного прямоугольника в Point1 (x, y) другого прямоугольника

http://www.icoachmath.com/math_dictionary/scale_factor.html

, если у нас есть два прямоугольника один испытывает MaxWidth: 2000 и MaxHeight: 1000

и второй прямоугольник размером MaxWidth: 4000 и MaxHeight = 2000

сек масштабный коэффициент о для преобразования координаты rect1 к rect2 будет

для й в rect2: (х в rect1) * (MaxWidth из Rect2/MaxWidht из Rect1) для у в rect2: (у в rect1) * (MaxHeight из Rect2/MaxHeight из Rect1)

но то, что должно быть масштабный коэффициент, когда

для одного прямоугольника центра происхождения (X, Y - 0,0) будет находиться в центре, и было бы отрицательные значения для х и y, если вы идете влево от центра, тогда x будет отрицательным, а в правой части будет положительным для Y, если вы подниметесь вверх, тогда y будет положительным, но если вы пойдете снизу, тогда Y будет отрицательным, поэтому экстенты этого прямоугольника имеют тенденцию к ( -MaxWidth до + MaxWidth, -MaxHeight до + MaxHeight)

Теперь у нас есть второй прямоугольник, который, имеющий центр в самом левый и самых верхних позициях (самый левый и верхний наиболее 0,0) и, как мы должны двигаться в прямом направлении вдоль оси х и вниз вдоль оси y. Таким образом, всегда будут положительные значения для x и y.

Итак, как вычислить масштабный коэффициент для преобразования coordiantes прямоугольника, который имеет начало координат в центре rectanlge (MaxWidth/2, MaxHeight/2) к rectanlge, который имеет начало координат в наиболее левых и самые верхних позициях

ответ

3

Давайте первый прямоугольник имеет координаты двух (по диагонали) противоположных углов: (X0_Old, Y0_Old) and (X1_Old, Y1_Old) , а второй - (X0_New, Y0_New) and (X1_New, Y1_New)

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

for every point: 
    X_New = X0_New + (X_Old - X0_Old) * X_Coeff 
where 
    X_Coeff = (X1_New - X0_New)/(X1_Old - X0_Old) 

(и тха же для Y-координаты)

+0

MBO вы пожалуйста Привести пример, RECT1 - MAX WIDTH = 1500 МИН ШИРИНА = -1500 MaxHeight = 2000 MinHeight = -2000 –

+0

Просто используйте координаты, как я написал – MBo