![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 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;} В итоге ничерта не работает ![]() подозреваю, что дело во втором условии, т.к. при удалении второго условия кусок нормально меняет цвет при тыке ниже верхней отрезающей линии. Но как я не пробовал менять больше-меньше (во всех вариациях) условия, клики меняют цвет уже в каких -то совсем рандомных местах. Помогите, в чем моя проблема? ![]() |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 05.12.2007
Сообщений: 236
|
![]()
Сначала желательно геометрию выучить, а потом за программирование садиться.
Во-первых, вопрос поставлен некорректно. Такие вопросы в графическом виде обычно задают. Во-вторых, чтобы определить принадлежит ли точка определенному участку (участок - произвольный многоугольник), необходимо провести из точки луч параллельно, например, оси Х. Если луч пересекает фигуру четное кол-во раз - значит не принадлежит, если нечетное - значит принадлежит. В вашем случае похожая проблема, но возможно луч нужно провести к другой оси. Как определить, пересекает ли луч нужную сторону? Луч делит плоскость на две полуплоскости, если концы отрезка лежат в разных полуплоскостях, то нужно произвести проверку на на то не лежит ли отрезок "позади" луча. Это гараздо проще и эффективнее, чем возится с уравнениями, т.к. уравнения имеют некую погрешность вычислений на ЭВМ. Удачи! |
![]() |
![]() |
![]() |
#3 | |
Пользователь
Регистрация: 25.02.2008
Сообщений: 11
|
![]() Цитата:
![]() |
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 05.12.2007
Сообщений: 236
|
![]()
Для этого есть циклы и правильное построение структуры программы.
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Паскаль Принадлежность точки заданной области | 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 |