powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Разъясните смысл кода
5 сообщений из 5, страница 1 из 1
Разъясните смысл кода
    #34706436
microbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите пожалуйста разобраться с этим кодом. Т.е. какой геометрический смысл он несет. Я так понимаю GetTrigoSens возвращает TRUE, если 3 точки идут против часовой стрелки и FALSE, если почасовой. Прав ли я?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
double Bound2PI(double angle) {
 int IntQuantity  = (int)(angle/DOUBLE_PI);           
 double AngleDiff = angle - (IntQuantity*DOUBLE_PI); 
 if (AngleDiff< 0 ) AngleDiff = DOUBLE_PI + AngleDiff;      
 return AngleDiff;
};

BOOL GetTrigoSens(POINT *pt)
{
    double angle1,angle2;
    int dx1=pt[ 1 ].x-pt[ 0 ].x;
    int dy1=pt[ 1 ].y-pt[ 0 ].y;
    int dx2=pt[ 2 ].x-pt[ 1 ].x;
    int dy2=pt[ 2 ].y-pt[ 1 ].y;
    angle1=atan2((double)dy1,(double)dx1);    
    angle2=atan2((double)dy2,(double)dx2);    
    return Bound2PI(angle2-angle1)>PI?FALSE:TRUE;
}
...
Рейтинг: 0 / 0
Разъясните смысл кода
    #34706645
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
microbit wrote:

> Помогите пожалуйста разобраться с этим кодом. Т.е. какой геометрический
> смысл он несет. Я так понимаю GetTrigoSens возвращает TRUE, если 3 точки
> идут против часовой стрелки и FALSE, если почасовой. Прав ли я?
>
По-моему, оно возвращает false если угол pt[1]-pt[0]-pt[2] больше 180
градусов.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Разъясните смысл кода
    #34706660
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ErV wrote:

> По-моему, оно возвращает false если угол pt[1]-pt[0]-pt[2] больше 180
> градусов.
И если так, то можно было бы обойтись без atan.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Разъясните смысл кода
    #34706787
microbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Собственно, если угол больше 180 градусов, значит точки идут против часовой, а если меньше значит по часовой. В общем это не самый лучший вариант clock twist, как я понял.
...
Рейтинг: 0 / 0
Разъясните смысл кода
    #34706842
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
microbit wrote:

> Собственно, если угол больше 180 градусов, значит точки идут против
> часовой, а если меньше значит по часовой. В общем это не самый лучший
> вариант clock twist, как я понял.
Так как координаты целочисленные, то можно было сделать без тяжеловесного
atan и перегона туда-сюда int<--->float.
Можно было банально (по знаком разностей) оперделить номера секций
(допустим, центр назодится в точке, которая и является углом) координат, в
которых находится луч. Если секции не совпадают, то решение тривиально. А
если совпадают - то определить можно, сравнивая значение dy/dx (в смысле -
dy разделить на dx) для каждого луча, например.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Разъясните смысл кода
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]