Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 1
Регистрация: 27.01.2012
Сообщений: 16

Входит ли линия в область Pie

19.02.2012, 15:05. Показов 1010. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть линия которая двигается по окружности в одну сторону и "пирог" (Pie) Который двигается в другую сторону. Рисование происходит в таймере и при нажатие на картинку нужно проверить входит ли линия в этот "пирог". Конечные точки вычисляются одной и той же формулой.
Но что-то неправильно работает. Как объяснить не знаю, поэтому прикрепляю исходник.

И еще один вопрос: есть ли какой-то способ срабатывания таймера чаще 1мс, или аналог?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
void __fastcall TTest1::TmrLine1Timer(TObject *Sender)
{
//Отключаем мерцание и прорисовуем фон       
  DoubleBuffered=true;
  BGround->Canvas->StretchDraw(_ClientRect, BkGround);
//Рисование линии
  if(Angle1>=360) Angle1=0;
  else Angle1+=1;
  Begin.x = BGround->Width/2;
  Begin.y = BGround->Height/2;
  BGround->Canvas->MoveTo(Begin.x, Begin.y);
  Radius = BGround->Width/2;
  BGround->Canvas->Pen->Width = 5;
  BGround->Canvas->Pen->Color = clGreen;
  x1 = BGround->Width/2+Radius*cos(Angle1*2*pi/360);
  y1 = BGround->Height/2-Radius*sin(Angle1*2*pi/360);
  BGround->Canvas->LineTo(x1 , y1);
//Рисование пирога
  if(Angle2>=360) Angle2=0;
  else Angle2-=1;
  BGround->Canvas->Brush->Style = bsDiagCross;
  BGround->Canvas->Pen->Color=clBlue;
  BGround->Canvas->Pen->Width=1;
  BGround->Canvas->Brush->Color=clBlue;
  xe = BGround->Width/2+Radius*cos(Angle2*2*pi/360);
  ye = BGround->Height/2-Radius*sin(Angle2*2*pi/360);
  xb = BGround->Width/2+Radius*cos((Angle2-25)*2*pi/360);
  yb = BGround->Height/2-Radius*sin((Angle2-25)*2*pi/360);
  BGround->Canvas->Pie(_ClientRect.left,_ClientRect.top,_ClientRect.bottom, _ClientRect.right,xb,yb,xe,ye);
}
 
//Проверяем входит ли линия в указаную область
void __fastcall TTest1::BGroundClick(TObject *Sender)
{
  if(
  ((xe<=x1)&&(x1<=xb)&&(yb<=y1)&&(y1<=ye))||
  ((xe<=x1)&&(x1<=xb)&&(ye<=y1)&&(y1<=yb))||
  ((xb<=x1)&&(x1<=xe)&&(ye<=y1)&&(y1<=yb))||
  ((xb<=x1)&&(x1<=xe)&&(yb<=y1)&&(y1<=ye))
   )
  {
  TmrLine1->Enabled=false;
  TmrLine2->Enabled=false;
  }
}
Вложения
Тип файла: zip Program.zip (1.42 Мб, 4 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.02.2012, 15:05
Ответы с готовыми решениями:

Заштриховать область между двумя графиками и вывести в ячейке или на графике "входит" или "не входит"
Возможно ли заштриховать область между двумя графиками (область между синим и красным ломанными графиками). Как вывести в ячейке или...

Появляется горизонтальная линия при попадании курсора в нарисованную область
1)Вот я нарисовал на форме какой нибудь рисунок, почему если навести на этот рисунок курсор мыши то происходит перерисовка горизонтальной...

Входит ли точка в область?
#include &lt;iostream&gt; using namespace std; { double x,y; cout &lt;&lt;&quot;Vvedite x&quot; &lt;&lt; endl; cin &gt;&gt; x; cout &lt;&lt;&quot;Vvedite y&quot; &lt;&lt; endl; ...

2
0 / 0 / 1
Регистрация: 27.01.2012
Сообщений: 16
21.02.2012, 16:40  [ТС]
Оказывается, все намного проще чем я думал... Достаточно было сравнивать углы.
C++
1
2
3
if((Angle>=abs(AngleE))&&(Angle<=abs(AngleB))) {
  TmrLine1->Enabled=false;
}
0
 Аватар для QVO
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
21.02.2012, 20:32
Цитата Сообщение от 8BitEX Посмотреть сообщение
есть ли какой-то способ срабатывания таймера чаще 1мс, или аналог?
Стандартный таймер билдера работает не чаще 16мс - это максимум.

У меня есть мульти таймер, LK вроде выкладывал.
Вложения
Тип файла: zip MMTimer.zip (5.0 Кб, 2 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.02.2012, 20:32
Помогаю со студенческими работами здесь

Определение условия при котором линия не будет проходить через область
Дана область определить при каком условии расположении точки, прямая которая проходит через нее не будет затрагивать 1 и 2 области!!!!!

Какая линия или область в комплексной плоскости определяется следующим условием?
Какая линия или область в комплексной плоскости определяется следующим условием? |3+2i-z|=|z+i| Моё решение: |3+2i-x-iy|=|x+yi+i| ...

Входит ли точка в заданую область?
Помогите пожалуйста. Не пойму как написать условие...

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

Входит ли точка в заштрихованную область?
Добрый вечер! Собственно дан график: Нужно создать программу, которая будет проверять, входит ли точка (вводит пользователь) в этот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru