|
Алгоритмика Об алгоритмах вообще; методы, обсуждения способов решения |
07.10.2008, 18:24
|
#1
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Поворот массива точек
В принципе я понимаю, что задачка несложная, тут весь вопрос в методе и его красоте/скорости.
Дано: массив точек вида (х, y) расположеных в плоских координатах на плоскости.
Задача: повернуть всю систему вокруг любой выбраной из массива наобум точки.
Дополнительно: определить угол поворота всей плоскости относительно любой другой точки.
У кого какие мысли?
__________________
|
(Offline)
|
|
07.10.2008, 18:51
|
#2
|
Разработчик
Регистрация: 18.10.2007
Сообщений: 349
Написано 64 полезных сообщений (для 95 пользователей)
|
Ответ: Поворот массива точек
Подвинуть матрицу на позицию осевой точки.
(Что-бы выбранная точка была в центре)
Повернуть матрицу.
Подвинуть матрицу обратно.
Первое, что в голову пришло.
|
(Offline)
|
|
07.10.2008, 19:39
|
#3
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: Поворот массива точек
Мне кажется в этом случае результат будет неточным
__________________
|
(Offline)
|
|
07.10.2008, 19:46
|
#4
|
Троллота
Регистрация: 09.07.2007
Сообщений: 1,829
Написано 554 полезных сообщений (для 1,772 пользователей)
|
Ответ: Поворот массива точек
Сообщение от SBJoker
Мне кажется в этом случае результат будет неточным
|
Когда я смотрю на свиборга, мне кажется, что он смотрит на меня, как на дерьмо!
Сори, не удержался
|
(Offline)
|
|
07.10.2008, 21:14
|
#5
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Поворот массива точек
Чо-то кроме банальных тригнометрчиеских операций на ум ничего не идёт =\
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
08.10.2008, 10:13
|
#6
|
Мастер
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений (для 252 пользователей)
|
Ответ: Поворот массива точек
грабануть картинку, и поставив хендл в нужную точку, повернуть
|
(Offline)
|
|
08.10.2008, 15:39
|
#7
|
Разработчик
Регистрация: 18.10.2007
Сообщений: 349
Написано 64 полезных сообщений (для 95 пользователей)
|
Ответ: Поворот массива точек
грабануть картинку, и поставив хендл в нужную точку, повернуть
|
Очень медленно; не точно.
|
(Offline)
|
|
08.10.2008, 15:46
|
#8
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: Поворот массива точек
Товарищи в условии про картинку ничо несказано.
__________________
|
(Offline)
|
|
08.10.2008, 15:58
|
#9
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Поворот массива точек
SBJoker, вот, набросал пример:
http://www.forum.likosoft.ru/showthr...=newpost&t=321
1000 точек поворачивается быстро.
управление - навести на точку, зажать ЛКМ и возить мыша влево-вправо.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
08.10.2008, 17:44
|
#10
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: Поворот массива точек
Отлично. Надо придумать ещё что-нибудь занимательное..
__________________
|
(Offline)
|
|
08.10.2008, 19:00
|
#11
|
Разработчик
Регистрация: 18.10.2007
Сообщений: 349
Написано 64 полезных сообщений (для 95 пользователей)
|
Ответ: Поворот массива точек
1)Удивительно: только-что проверил:
100 точек: время поворота на 360 градусов: 6037
быстрее чем:
100 точек: время поворота на 360 градусов: 6054
2)Вроде можно вычислить косинус из готового синуса угла быстрее,
чем вычислять новый.
|
(Offline)
|
|
08.10.2008, 19:06
|
#12
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Поворот массива точек
drunnik, мсье маньяк?
увеличение скорсти на 0.28 процента вполне укладывается в погрешность.
|
(Offline)
|
|
08.10.2008, 19:30
|
#13
|
Разработчик
Регистрация: 18.10.2007
Сообщений: 349
Написано 64 полезных сообщений (для 95 пользователей)
|
Ответ: Поворот массива точек
А проверял раз 5:
В первом варианте было всегда 6037(один раз было 6036);
А во втором всегда 6054.
Это скорее не погрешность.
|
(Offline)
|
|
08.10.2008, 19:48
|
#14
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: Поворот массива точек
Сообщение от drunnik
2)Вроде можно вычислить косинус из готового синуса угла быстрее,
чем вычислять новый.
|
Неверно, на современном этапе развития процессор вычисляя Синус и Косинус тратит времени меньше чем тратится при доступе к памяти чтобы прочитать готовое значение.
__________________
|
(Offline)
|
|
08.10.2008, 20:38
|
#15
|
|
Ответ: Поворот массива точек
SBJoker
а cos и sin одного угла можно вообще одной операцией посчитать
inline void jeSinCos(float Angle,float & SinValue,float & CosValue )
{
__asm
{
fld Angle;
fsincos;
mov eax,[CosValue];
fstp [eax];
mov eax,[SinValue];
fstp [eax];
}
}
|
|
|
Эти 4 пользователя(ей) сказали Спасибо за это полезное сообщение:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 08:16.
|