Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование в широком смысле слова > Алгоритмика

Алгоритмика Об алгоритмах вообще; методы, обсуждения способов решения

Ответ
 
Опции темы
Старый 07.10.2008, 18:24   #1
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Подмигивание Поворот массива точек

В принципе я понимаю, что задачка несложная, тут весь вопрос в методе и его красоте/скорости.

Дано: массив точек вида (х, y) расположеных в плоских координатах на плоскости.

Задача: повернуть всю систему вокруг любой выбраной из массива наобум точки.
Дополнительно: определить угол поворота всей плоскости относительно любой другой точки.

У кого какие мысли?
__________________
(Offline)
 
Ответить с цитированием
Старый 07.10.2008, 18:51   #2
zheland
Разработчик
 
Регистрация: 18.10.2007
Сообщений: 349
Написано 64 полезных сообщений
(для 95 пользователей)
Ответ: Поворот массива точек

Подвинуть матрицу на позицию осевой точки.
(Что-бы выбранная точка была в центре)
Повернуть матрицу.
Подвинуть матрицу обратно.

Первое, что в голову пришло.
(Offline)
 
Ответить с цитированием
Старый 07.10.2008, 19:39   #3
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: Поворот массива точек

Мне кажется в этом случае результат будет неточным
__________________
(Offline)
 
Ответить с цитированием
Старый 07.10.2008, 19:46   #4
Tadeus
Троллота
 
Регистрация: 09.07.2007
Сообщений: 1,829
Написано 554 полезных сообщений
(для 1,772 пользователей)
Ответ: Поворот массива точек

Сообщение от SBJoker Посмотреть сообщение
Мне кажется в этом случае результат будет неточным
Когда я смотрю на свиборга, мне кажется, что он смотрит на меня, как на дерьмо!

Сори, не удержался
(Offline)
 
Ответить с цитированием
Старый 07.10.2008, 21:14   #5
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Поворот массива точек

Чо-то кроме банальных тригнометрчиеских операций на ум ничего не идёт =\
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 08.10.2008, 10:13   #6
dimanche13
Мастер
 
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений
(для 252 пользователей)
Ответ: Поворот массива точек

грабануть картинку, и поставив хендл в нужную точку, повернуть
__________________
(Offline)
 
Ответить с цитированием
Старый 08.10.2008, 15:39   #7
zheland
Разработчик
 
Регистрация: 18.10.2007
Сообщений: 349
Написано 64 полезных сообщений
(для 95 пользователей)
Ответ: Поворот массива точек

грабануть картинку, и поставив хендл в нужную точку, повернуть
Очень медленно; не точно.
(Offline)
 
Ответить с цитированием
Старый 08.10.2008, 15:46   #8
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: Поворот массива точек

Товарищи в условии про картинку ничо несказано.
__________________
(Offline)
 
Ответить с цитированием
Старый 08.10.2008, 15:58   #9
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Поворот массива точек

SBJoker, вот, набросал пример:
http://www.forum.likosoft.ru/showthr...=newpost&t=321

1000 точек поворачивается быстро.
управление - навести на точку, зажать ЛКМ и возить мыша влево-вправо.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
SBJoker (08.10.2008)
Старый 08.10.2008, 17:44   #10
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: Поворот массива точек

Отлично. Надо придумать ещё что-нибудь занимательное..
__________________
(Offline)
 
Ответить с цитированием
Старый 08.10.2008, 19:00   #11
zheland
Разработчик
 
Регистрация: 18.10.2007
Сообщений: 349
Написано 64 полезных сообщений
(для 95 пользователей)
Ответ: Поворот массива точек

1)Удивительно: только-что проверил:
(x1-x2)*(x1-x2)
100 точек: время поворота на 360 градусов: 6037
быстрее чем:
(x1-x2)^2
100 точек: время поворота на 360 градусов: 6054

2)Вроде можно вычислить косинус из готового синуса угла быстрее,
чем вычислять новый.
(Offline)
 
Ответить с цитированием
Старый 08.10.2008, 19:06   #12
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Поворот массива точек

drunnik, мсье маньяк?
увеличение скорсти на 0.28 процента вполне укладывается в погрешность.
(Offline)
 
Ответить с цитированием
Старый 08.10.2008, 19:30   #13
zheland
Разработчик
 
Регистрация: 18.10.2007
Сообщений: 349
Написано 64 полезных сообщений
(для 95 пользователей)
Ответ: Поворот массива точек

А проверял раз 5:
В первом варианте было всегда 6037(один раз было 6036);
А во втором всегда 6054.
Это скорее не погрешность.
(Offline)
 
Ответить с цитированием
Старый 08.10.2008, 19:48   #14
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: Поворот массива точек

Сообщение от drunnik Посмотреть сообщение
2)Вроде можно вычислить косинус из готового синуса угла быстрее,
чем вычислять новый.
Неверно, на современном этапе развития процессор вычисляя Синус и Косинус тратит времени меньше чем тратится при доступе к памяти чтобы прочитать готовое значение.
__________________
(Offline)
 
Ответить с цитированием
Старый 08.10.2008, 20:38   #15
jimon
 
Сообщений: n/a
Ответ: Поворот массива точек

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 пользователя(ей) сказали Спасибо за это полезное сообщение:
HolyDel (08.10.2008), impersonalis (22.05.2013), tormoz (09.10.2008), zheland (08.10.2008)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти объект массива по координатам Mr_F_ 3D-программирование 8 15.08.2009 20:28
Обработка массива. Abiron Алгоритмика 5 20.06.2009 01:02
Текстовые сообщения интерфейса - в виде массива строк? Skythrone Основной форум 6 26.09.2008 00:18
Размер массива kyb66 Основной форум 7 15.12.2007 21:32
Вопрос насчет массива и GUI Manfred 2D-программирование 10 22.12.2006 01:41


Часовой пояс GMT +4, время: 19:44.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com