Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2014, 09:34   #1
_BYTE
Пользователь
 
Регистрация: 11.12.2013
Сообщений: 56
По умолчанию найти пиксель в сетке (Си)

есть сетка из ректов, в функцию подается точка, можно ли как то найти ее координаты в сетке кроме как через 2 цикла по всей сетке? а то каждый раз проходить в циклах не очень рационально... че то не соображу никак...

выглядит это так:
Код:
//где то в main-е...
RECT **NET;
... //где то она проинициализировалась
 
//Находится ли точка в области
#define PointInRect(point, rect) ((point.x >= rect.left) && (point.x <= rect.right) && (point.y >= rect.top) && (point.y <= rect.bottom)) ? true : false
 
POINT PointInNET(RECT **NET, int NETSIZE, POINT point)
{
... //тут бы как то отыскать координаты поданной точки в сетке (имею ввиду координаты в смысле индексы в массиве ректов)
//я не придумал ничего лучше как пройти в циклах... но это как то криво выглядит и мне не нравится :(
for(int i = 0; i < NETSIZE; i++)
for(int j = 0; j < NETSIZE; j++)
if(PointInRect(point, NET[i][j])) return {i,j};
}
может как то посчитать исходя из размеров сетки (в пикселях), количества квадратов в сетке (по x и y), высоты квадратов
_BYTE вне форума Ответить с цитированием
Старый 30.05.2014, 10:10   #2
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Ну все просто:
Точка X Y
надо разделить Х на ширину одного ректа и взять целую часть это будет номер ректа по горизонтали. По вертикали аналогично сделать.
И проверить чтобы полученные координаты умещались в общее количество ректов по ширине и высоте.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 30.05.2014, 11:03   #3
_BYTE
Пользователь
 
Регистрация: 11.12.2013
Сообщений: 56
По умолчанию

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
Ну все просто:
Точка X Y
надо разделить Х на ширину одного ректа и взять целую часть это будет номер ректа по горизонтали. По вертикали аналогично сделать.
И проверить чтобы полученные координаты умещались в общее количество ректов по ширине и высоте.
ооо... ппц я туплю как не додумался сам хз спасибо
_BYTE вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
найти самый темный пиксель в изображении romantik1993 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 01.06.2013 22:42
Тексел и Пиксель? VintProg Свободное общение 3 21.05.2011 13:07
найти пиксель определённого цвета, int 20h Win Api 0 11.11.2010 21:59
Пиксель арт MaRKer.nsk Фриланс 2 17.08.2010 13:37
Вывести пиксель egoreus Общие вопросы C/C++ 1 16.01.2010 14:50