Перемещение координат от центральной точки

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

    #d_x - the x coordinate of the dot at its default position 
    #d_y - the y coordinate of the dot at its default position 
    #dis_x - the distance along the x grid the point is away from the centre point 
    #dis_y - the distance along the y grid the point is away from the centre point
    #zoom_level - the zoom level increased or decreased depending on the mouse wheel
z_x = (d_x + (dis_x * (1 + (zoom_level * 0.01))))
    z_y = (d_y + (dis_y * (1 + (zoom_level * 0.01))))
drawText("*",z_x,z_y,)

Этот код почти работает, единственная проблема заключается в том, что когда zoom_level равен 0, точки находятся в правильном положении, но когда я увеличиваю уровень масштабирования, точки расширяются в неправильном направлении, а не расширяются наружу от центральной точки, перемещаясь в противоположном направлении. двигаясь к центральной точке.

Любые советы о том, как решить эту проблему, будут высоко оценены.

[РЕДАКТИРОВАТЬ] - я этого не говорил, но каждая точка разбросана в случайных точках вокруг центральной точки.


person DeathorGlory9    schedule 04.06.2013    source источник
comment
Работает на моей машине. См. здесь. Выполняя 100 000 испытаний, точка всегда уходила дальше от центральной точки при увеличении уровня масштабирования.   -  person Kevin    schedule 04.06.2013
comment
Как вы рассчитываете dis_x и dis_y?   -  person Kevin    schedule 04.06.2013
comment
Magic 8 Ball: Ваш zoom level имеет неправильный знак +/-, когда точки движутся в неправильном направлении.   -  person chux - Reinstate Monica    schedule 05.06.2013


Ответы (1)


Пусть центральная точка имеет координаты (c_x, c_y). Затем (с масштабом по умолчанию = 1)

z_x = c_x + (d_x - c_x) * Zoom
z_y = c_y + (d_y - c_y) * Zoom

Пример: центральная точка (черная) (2,2), точки (синие) (3,3) и (0,1) масштаб = 2: новые точки (красные) (4,4) и (-2, 0) < img src="https://i.stack.imgur.com/E2he7.png" alt="введите здесь описание изображения">

person MBo    schedule 04.06.2013
comment
Не совсем извините, они все собираются в кучу, а затем, по мере увеличения уровня масштабирования, они перемещаются в верхнюю левую часть экрана. - person DeathorGlory9; 04.06.2013
comment
Возможно, я не совсем ясно объяснил, но каждая точка разбросана вокруг центральной точки в случайных местах. - person DeathorGlory9; 04.06.2013