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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.05.2009, 12:16   #1
Vistar
учащийся
Форумчанин
 
Аватар для Vistar
 
Регистрация: 26.04.2009
Сообщений: 144
По умолчанию Определение принадлежности точки к сектору.

У меня есть координаты сектора, его куты и радиус. Нада определить принадлежит ли точка (x, y) этому сектору. В интернете нашел такое:
"Нада постороить вектор от центра сектора к точке, если угол его наклона находится между двумя радиусами (углами их наклонов), ограничивающими сектор, и находится в самом круге, то все становится прозрачно". Но я немного не понял. Как можна определить этот "угол его наклона"? Или может можна найти принадлежность точки к сектору каким то другим способом?
Заранее благодарен.
Vistar вне форума Ответить с цитированием
Старый 09.05.2009, 12:40   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Как можна определить этот "угол его наклона"?
У нас есть две точки. Центр окружности (от которой сектор) - (x0; y0) и некая точка A(x1; y1)

Угол наклона к оси x находится так:
Код:
tg(alpha) = (y1 - y0) / (x1 - x0)
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 09.05.2009, 13:50   #3
Vistar
учащийся
Форумчанин
 
Аватар для Vistar
 
Регистрация: 26.04.2009
Сообщений: 144
По умолчанию

Что то у меня не получается. Вот это вроди должно работать, но не работает. Что здесь неправильно?

Код:
var
kut, y1, y0, x1, x0: integer;

begin
   y1 := 50;
   y0 := 100;
   x1 := 100;
   x0 := 100;

   kut := round(sin((y1 - y0) / 180 * 3.14) / cos((x1 - x0) / 180 * 3.14));
   writeln('Угол равен: ', kut);
end.
Vistar вне форума Ответить с цитированием
Старый 09.05.2009, 14:05   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Почему? Все правильно. Вот вывод в градусах:
Код:
uses crt;
var
y1, y0, x1, x0: integer;
kut : real;
begin
clrscr;
   y1 := 50;
   y0 := 100;
   x1 := 100;
   x0 := 100;

kut := arctan(round(sin((y1 - y0) / 180 * 3.14) / cos((x1 - x0) / 180 * 3.14)))*180/pi;
writeln('Угол равен: ', kut:5:2);
readln;
end.
Угол = -45. Все верно.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 09.05.2009, 14:40   #5
Vistar
учащийся
Форумчанин
 
Аватар для Vistar
 
Регистрация: 26.04.2009
Сообщений: 144
По умолчанию

Это получается угол между этими двумя точками?

Последний раз редактировалось Vistar; 09.05.2009 в 14:46.
Vistar вне форума Ответить с цитированием
Старый 09.05.2009, 14:51   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Так, погодите.. Что-то не заметил. Что у вас за формула странная?
Код:
 kut := round(sin((y1 - y0) / 180 * 3.14) / cos((x1 - x0) / 180 * 3.14));
Вот так надо:
Код:
uses crt;
var
y1, y0, x1, x0: integer;
kut : real;
begin
clrscr;
   y1 := 100;
   y0 := 0;
   x1 := 100;
   x0 := 0;

if x1-x0<>0 then kut := arctan((y1-y0)/(x1-x0))
else if y1-y0>0 then kut := pi/2
else kut := -pi/2;
writeln('Угол равен: ', (kut*180/pi):5:2);
readln;
end.
Тогда угол будет равен -90 (не забываем, что в ось y направлена вверх).
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 09.05.2009, 15:14   #7
Vistar
учащийся
Форумчанин
 
Аватар для Vistar
 
Регистрация: 26.04.2009
Сообщений: 144
По умолчанию

А как мне тогда сравнивать этот угол с углом сектора? Ведь там угол от 0 до 360 градусов. Отрицательного значения нету.
Vistar вне форума Ответить с цитированием
Старый 09.05.2009, 15:15   #8
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
А как мне тогда сравнивать этот угол с углом сектора? Ведь там угол от 0 до 360 градусов. Отрицательного значения нету.
Прибавьте к отрицательному углу 360 (2*Пи).
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 09.05.2009, 15:50   #9
Vistar
учащийся
Форумчанин
 
Аватар для Vistar
 
Регистрация: 26.04.2009
Сообщений: 144
По умолчанию

Ну вот если у меня есть сектор с центром в точке F(200, 200), начальным углом 270 и конечным 360. Будет ли находиться точка (250, 150) между этими углами?
Vistar вне форума Ответить с цитированием
Старый 09.05.2009, 15:58   #10
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Ну вот если у меня есть сектор с центром в точке F(200, 200), начальным углом 270 и конечным 360. Будет ли находиться точка (250, 150) между этими углами?
Да. Будет.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Точки DoGGy Паскаль, Turbo Pascal, PascalABC.NET 11 23.01.2009 19:11
Принадлежность точки Forro Помощь студентам 4 26.05.2008 14:33
Отбражение чисел - точки, это точки, а не запятые, обозначающие дробную часть Дикий Помощь студентам 7 12.05.2008 17:57