2013-06-04 10 views
1

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

#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 многоточие находятся в правильном положении, но когда Я увеличиваю уровень увеличения, точки расширяются в неправильном направлении, а не расширяются наружу от центральной точки, перемещаясь в противоположном направлении, направляясь к центральной точке.

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

[EDIT] - Я не говорил об этом, но каждая точка распределяется в случайных точках вокруг центральной точки.

+0

Работы на моей машине. См. [Здесь] (http://pastebin.com/YvZV6Cxw). Выполняя 100 000 проб, точка всегда удалялась от центральной точки при увеличении уровня масштабирования. – Kevin

+0

Как вы вычисляете 'dis_x' и' dis_y'? – Kevin

+0

Magic 8 Ball: ваш «уровень увеличения» имеет неправильный знак +/-, когда точки движутся в неправильном направлении. – chux

ответ

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) enter image description here

+0

Не очень жаль, все они собираются, а затем, когда уровень увеличения увеличивается, они перемещаются в левый верхний угол экрана. – DeathorGlory9

+0

Я уверен, что эти формулы верны. – MBo

+0

Возможно, я не объяснил четко, но каждая точка распределена вокруг центральной точки в случайных позициях – DeathorGlory9

Смежные вопросы