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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.04.2010, 23:20   #1
CrazyN00b
Пользователь
 
Регистрация: 25.02.2008
Сообщений: 11
По умолчанию Поиск принадлежности точки области

Вобщем я пытаюсь создать окно, которое будет менять цвет участка пирожковой диаграммы при нажатии на этот участок. В коде пока есть следующие имеющие значение (для вопроса) части:
static int x=255;
static int y=0;
static int z=0;
hBrush1 = CreateSolidBrush(RGB(x, y, z));
есть кусочек пирожка
SelectObject(hdc,hBrush1);
Pie(hdc, 10,20,500,300,20,50,30,300);
Насколько я понимаю, центр эллипса находится в точке (255;160) и участок рисуется от отреза к точке (20;50) до отреза к точке (30;300). Затем я пытаюсь найти принадлежность точки этому куску, пока без проверки на принадлежность эллипсу, просто чтобы ниже верхней ограничивающей линии и выше нижней, используя уравнение прямой для двух точек x-x1/x2-x1 = y-y1/y2-y1:
case WM_LBUTTONDOWN:
xPos=LOWORD(lParam);
yPos=HIWORD(lParam);
if ((yPos-50)/110>(xPos-20)/235 && (yPos-300)/(-140)>(xPos-30)/225){x=100;
InvalidateRect(hWnd,NULL,true);
break;}
else
{break;}

В итоге ничерта не работает
подозреваю, что дело во втором условии, т.к. при удалении второго условия кусок нормально меняет цвет при тыке ниже верхней отрезающей линии. Но как я не пробовал менять больше-меньше (во всех вариациях) условия, клики меняют цвет уже в каких -то совсем рандомных местах. Помогите, в чем моя проблема?
CrazyN00b вне форума Ответить с цитированием
Старый 12.04.2010, 23:37   #2
Д'якон
Форумчанин
 
Регистрация: 05.12.2007
Сообщений: 236
По умолчанию

Сначала желательно геометрию выучить, а потом за программирование садиться.
Во-первых, вопрос поставлен некорректно. Такие вопросы в графическом виде обычно задают.

Во-вторых, чтобы определить принадлежит ли точка определенному участку (участок - произвольный многоугольник), необходимо провести из точки луч параллельно, например, оси Х. Если луч пересекает фигуру четное кол-во раз - значит не принадлежит, если нечетное - значит принадлежит. В вашем случае похожая проблема, но возможно луч нужно провести к другой оси.

Как определить, пересекает ли луч нужную сторону? Луч делит плоскость на две полуплоскости, если концы отрезка лежат в разных полуплоскостях, то нужно произвести проверку на на то не лежит ли отрезок "позади" луча. Это гараздо проще и эффективнее, чем возится с уравнениями, т.к. уравнения имеют некую погрешность вычислений на ЭВМ. Удачи!
Д'якон вне форума Ответить с цитированием
Старый 12.04.2010, 23:59   #3
CrazyN00b
Пользователь
 
Регистрация: 25.02.2008
Сообщений: 11
По умолчанию

Цитата:
Сообщение от Д'якон Посмотреть сообщение
Во-вторых, чтобы определить принадлежит ли точка определенному участку (участок - произвольный многоугольник), необходимо провести из точки луч параллельно, например, оси Х. Если луч пересекает фигуру четное кол-во раз - значит не принадлежит, если нечетное - значит принадлежит. В вашем случае похожая проблема, но возможно луч нужно провести к другой оси.
ээмм.. извиняюсь, но как реализовать подобное в програмном виде? Мне в голосу приходит лишь сравнение уравнений xPos=y && y<=yPos с другими, образующими область с последующим подсчетом количества равенств, но в таком случае код выйдет кажется ещё более громоздким
CrazyN00b вне форума Ответить с цитированием
Старый 13.04.2010, 00:19   #4
Д'якон
Форумчанин
 
Регистрация: 05.12.2007
Сообщений: 236
По умолчанию

Для этого есть циклы и правильное построение структуры программы.
Д'якон вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль Принадлежность точки заданной области Unikummm Помощь студентам 18 28.11.2010 16:04
Принадлежность точки заштрихованной области или нет. Gren-de-vald Microsoft Office Excel 5 15.11.2009 14:41
поиск седловой точки vasd Общие вопросы Delphi 1 14.05.2009 22:04
Определение принадлежности точки к сектору. Vistar Паскаль, Turbo Pascal, PascalABC.NET 12 09.05.2009 20:46
Поиск точки (х;у) Slavik Microsoft Office Excel 4 01.05.2009 10:48