Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Радиальный сдвиг точек в плоскости, Смещение точек в окружности 
:(
    Опции темы
cs137
Дата 28.1.2008, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 22.8.2007

Репутация: нет
Всего: нет



Имеется следующая задача:

Существует окружность с координатами центра (x0,y0) и радиусом r0. В данной окружности имеется набор точек с известными координатами. Для упрощения возмем одну точку (P), распологающуюся внутри окружности и имеющую координаты (xp, yp):
user posted image

Далее задается некое смещение координат центра окружности (x0 + dx, y0 + dy). Ну так вот задача состоит в том, чтобы сместить точку P (xp,yp) в том же направлении, но на велечину зависящую от расстояния данной точки до центра окружности (от велечены модуля вектора составленного из точки центра окружности и точки P), т.е. чем дальше точка от центра окружности, тем меньше ее смещение... При этом сама окружность не смещается, т.е. задается общее (максимальное) смещение для точек расположенных внутри окружности.
Я думаю, что тут нужно использовать полярную систему координат... Только вот не представляю себе формулу (ro, phi):

Код

ro2 = xp*xp + yp*yp
phi = atan(yp, xp)

// вместо нормального обратного перевода, нужно учитывать смещение
xp_new = sqrt(ro2) * cos(phi)
yp_new = sqrt(ro2) * sin(phi)


Не подскажите формулку? Заранее большое спасибо smile
PM MAIL   Вверх
maxim1000
Дата 28.1.2008, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



линзу движущуюся делаем? smile
(ну или каплю)

ИМХО, полярные координаты здесь не очень
и исходные, и конечные данные - в декартовых координатах
да и сам сдвиг в полярных координатах неудобно делать
в декартовых можно просто по постановке задачи:
1. считаем расстояние от точки до центра
2. считаем длину смещения в зависимости от этого расстояния
3. сдвигаем точку на вектор L*<dx,dy> (L - посчитанное смещение)



--------------------
qqq
PM WWW   Вверх
cs137
Дата 28.1.2008, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 22.8.2007

Репутация: нет
Всего: нет



Цитата(maxim1000 @  28.1.2008,  12:28 Найти цитируемый пост)
линзу движущуюся делаем? smile
(ну или каплю)


Ага smile

Я уже конечно попробовал реализовать сие в декартовых координатах, но тут возникла проблема. Расстояние от точки до центра определяется двумя координатами, и если одно из смещений равно нулю (смещение строго по горизонтали или по вертикали), то длина смещения в этом случае уменьшится. Т.е. получаем максимальное смещение точек при угле сдвига кратному pi/4. А мне необходимо, чтобы смещение точки относительно центра окружности было одинаковым, в не зависимости от направления вектора смещения...
PM MAIL   Вверх
maxim1000
Дата 28.1.2008, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



Цитата(cs137 @  28.1.2008,  16:56 Найти цитируемый пост)
Ага

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

Добавлено через 2 минуты и 32 секунды
тут, помнится, обсуждали подобные вопросы: http://forum.vingrad.ru/index.php?showtopi...st&p=695793


--------------------
qqq
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.1097 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.