Алгоритм попадения точки в регион.

Тема в разделе "WASM.A&O", создана пользователем P_F, 16 окт 2006.

  1. P_F

    P_F New Member

    Публикаций:
    0
    Регистрация:
    27 мар 2006
    Сообщения:
    116
    Адрес:
    Russia
    leo
    Мда, с сылкой не хорошо вышло...
    Благодарствую за идею оптикизации...

    Iceberg
    На то, он и луч, что в бесконечность уходит.

    И всё же:
    если метод "луча" лучше, почему в достаточно юзаемых пакетах реализован
    метод "ректов" ?
    и
    есть ли способ как-нибудь оченить эти алгоритмы по заданным выше критериям ?

    Если попробовать через метод "при помощи RDTSC", то я думаю, тот же метод "ректов",
    не криво реализованый, на асме (но и без особой оптимизации), обгонит ту же Win32 реализацию... вобщем нельзя ли сравнить это как-нибудь математически ?
     
  2. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    Iceberg
    Шутишь?
     
  3. Iceberg

    Iceberg New Member

    Публикаций:
    0
    Регистрация:
    5 дек 2005
    Сообщения:
    54
    Адрес:
    Санкт-Петербург
    crypto
    Ты очень подробно расписал, добавить было нечего =)

    P_F
    Посмотри в сторону http://www.wykobi.com, методы point_in_XXX
     
  4. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    P_F
    Это точно, если использовать двоичный поиск ректа в RGNDATA.Buffer, то получается намного быстрее (до 5-10 раз) по сравнению с виндовым PtInRegion
     
  5. Avoidik

    Avoidik New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2004
    Сообщения:
    288
    Адрес:
    Russia
    PtInRect? ;)

    Код (Text):
    1. BOOL STDCALL
    2. PtInRect(CONST RECT *lprc, POINT pt)
    3. {
    4.   return((pt.x >= lprc->left) && (pt.x < lprc->right) &&
    5.      (pt.y >= lprc->top) && (pt.y < lprc->bottom));
    6. }
     
  6. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Avoidik
    Нет, CreatePolygonRgn + PtInRegion ;)
    Но быстрее GetRegionData + двоичный поиск в массиве ректов lpRgnData->Buffer, т.к. все ректы в массиве отсортированы по Top и Left
     
  7. P_F

    P_F New Member

    Публикаций:
    0
    Регистрация:
    27 мар 2006
    Сообщения:
    116
    Адрес:
    Russia
    Iceberg
    чё то ничего особенного я там не увидел...:dntknw:
     
  8. Proteus

    Proteus Member

    Публикаций:
    0
    Регистрация:
    19 июн 2004
    Сообщения:
    344
    Адрес:
    Russia