Удалил всё старое.. ( первый шаг ) На рисунке ниже изображен первичный прямоугольник, о котором известно следующее -
Width, Height, координаты точки А(ax,ay) из которой он начинает свое отчисление.
Сразу скажу, что начальная координата ноль находится в верхнем левом углу холста, на котором расположен прямоугольник. Точка О ( это то к чему я стремлюсь, но пока безрезультатно ) в данном контексте для примера. Так же стоит отметить, что помимо вышеуказанного, известно - scaleWidth=1=100%, scaleHeight=1=100%, speedWidth, speedHeight,speedX, speedY.( второй шаг ) Следующим шагом я нахожу конечную ширину, высоту и координату в которой будет точка А при масштабировании. Они мне необходимы, так как при расчете скорости, она умножается на время, которое течёт не равномерными интервалами и возможен результат, когда ширина, высота и координата точки А будут находится с не желаемыми значениями.( третий шаг ) На нем показано, как выглядит прямоугольник, до и после масштаба. Стрелки идущие из центра показывают пропорции масштаба, а так же то, что масштабирование происходит равномерно из центра. Так же хочу приковать взгляд на саму точку центра, она осталось в той же координате на холсте, что и была в самом начале. ( шаг четвертый ) Я не стал рисовать для четвертой картинки шаг один, так как он целиком совпадает с картинкой первого шага,вторую, так как финишная высота и ширина равна второму шагу, а конечные координаты точки А я как раз и не могу найти. Стоит отдельно отметить, что координаты центра начального прямоугольника и координаты точки А ( я их выделил красным ), на холсте имеют те же координаты, что и в трёх предыдущих рисунках. Но теперь увеличение масштаба происходит от точки D и именно её
координаты должны оставаться не изменными относительно холста. Для этого нужно рассчитать конечные координаты точки А, что я и не могу сделать. И так же одно условие, должно быть верным и для увеличения и для уменьшения масштаба. У меня получилось сделать так только для рассчета скорости и ширины с высотой...
задан 7 Ноя '13 11:16 shatal
показано 5 из 6
показать еще 1
|
Координаты синей точки нужно пересчитывать в относительные координаты (по размеру прямоугольника) относительно угловой точки. При увеличении размера прямоугольника эти относительные координаты сохроаняются, но меняются стороны прямоугольника, т.е. из относительных координат и размеров нового прямоугольника можно получить координаты бирюзовой точки. Прошу прощения, что данный алгоритм никак не формализовал. отвечен 7 Ноя '13 12:41 vinger4 @vinger4: Спасибо Вам! Но я боюсь, что из-за недостатка информации с моей стороны, Вы не до конца поняли вопрос... Это моя вина..
(7 Ноя '13 21:13)
shatal
почему-то у меня осталась уверенность, что я всё правильно понял)
(8 Ноя '13 12:42)
vinger4
|
К сожалению, я не понял Вашего описания. Приведённые картинки никак не помогают осознать, что происходит. Трудность в понимании связана вот с чем: читателю не известно, что у Вас жёстко задано, а что меняется. Где начало системы координат? Как происходит изменение размеров в её пределах? Ответ здесь наверняка простой, на уровне обычного масштабирования, по надо знать точную постановку задачи.
Правильно ли я понимаю постановку задачи? Дана точка, координаты которой всегда считаются неизменными. Например, $%(x_0,y_0)$%. Есть прямоугольник, у которого эта вершина является левой верхней, и он имеет измерения $%a$% и $%b$%. Далее Вы меняете измерения, умножая $%a$% и $%b$% на заданные коэффициенты. И задаёте вопрос, куда при этом перейдёт точка с координатами $%(x,y)$%. То есть, какие она будет иметь координаты после растяжений или сжатий по осям, если всё меняется пропорционально? Если нужно именно это, я готов хоть сейчас написать готовые формулы (они в самом деле простые).
Есть одна проблема, на которую я давно хотел обратить внимание. Предлагаю задуматься вот над какой вещью. Я сейчас сижу за компьютером на своём месте. Но в это время Земля как-то вращается вокруг Солнца, и я перемещаюсь (в другой системе координат). Поэтому, когда Вы говорите о точке, которая "остаётся на своём месте", я не понимаю, что это значит, поскольку Вы не указываете, относительно какой системы координат это происходит. Соответственно, я не понимаю Вашего объяснения. Рисунки тоже не помогают. Предлагаю поэтому всё описывать в терминах координатных систем.
@shatal: я сейчас посмотрел Ваши иллюстрации, но, к сожалению, мне не понятно до конца, что там происходит. Я воспринимаю словесные описания (типа: прямоугольник растянули, сдвинули и т.п.), а по картинкам и диаграммам у меня не возникает однозначного понимания.
Только я забыл на шкале Y стереть минусы. И та и другая ось - положительная.
Извиняюсь за очень просто и из - за этого очень глупый вопрос. Два дня думал - думал и чуть не отчаялся, а только на пару часов отвлёкся и сразу понял, что все свои решения я делаю не правильно и даже немного смешно было, когда это понял. Спасибо!