Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Object Pascal: кроссплатформенные технологии > Принадлежит ли точка (x,y) круговому кольцу


Автор: GaGu 24.3.2008, 15:51
Всем доброго времени суток! Вообщем передо мной стоит следующая задача: определить, принадлежит ли точка (x,y) круговому кольцу с центром в начале координат и внутренним радиусом r, а внешним радиусом R. Самому никак не дается решить эту задачку. Всем кто сможет помочь заранее спасибо.
P.S Желательно поподробней объяснить, а то я в программировании на Паскале новичок. Если можно, то приведите плиз полный листинг проги. smile 

Автор: profispb 24.3.2008, 16:02
Для начала тут не программирование надо, а чистая математика!
И вообще существует Центр-Помощи для подобных задач.... извени что так критично, но эт действительно глупо!))

Автор: Alix 24.3.2008, 17:06
ну разъясню что ли математику, прогу лень писать. Вот есть точка начала координат - (x0, y0). Может она у Вас будет (0, 0), но для общности не буду так делать. Надо выяснить расстояние от точки (x, y) до (x0, y0). Получаем:
d = Sqrt(Sqr(x - x0) + Sqr(y - y0)); 
Sqrt - это корень квадратный, а Sqr - это возведение в квадрат. Соответственно все что осталось - проверить, чтобы (d >= r) and (d <= R). 

Автор: profispb 24.3.2008, 20:32
Цитата(Alix @ 24.3.2008,  17:06)
ну разъясню что ли математику, прогу лень писать. Вот есть точка начала координат - (x0, y0). Может она у Вас будет (0, 0), но для общности не буду так делать. Надо выяснить расстояние от точки (x, y) до (x0, y0). Получаем:
d = Sqrt(Sqr(x - x0) + Sqr(y - y0)); 
Sqrt - это корень квадратный, а Sqr - это возведение в квадрат. Соответственно все что осталось - проверить, чтобы (d >= r) and (d <= R).

Ну что же, тогда я прогу напишу, пускай человек радуется!
Код

Program tochka;
uses crt;
var x0,y0,x,y,d,R,r:real;
BEGIN
clrscr;
Writeln('Попадет ли точка в кольцо');
Wriite('Введите координаты точки: ');
Read(x,y);
x0:=0;
y0:=0;
R:={Здесь задать внешний радиус};
r:={Здесь задать внутренний радиус};
d = Sqrt(Sqr(x - x0) + Sqr(y - y0));
if (d>=r) and (d<=R) then
begin
Write('Заданная точка попадает в кольцо');
end
else 
begin
Write('Заданная точка не попадает в кольцо');
end;
writeln;
Write('Нажмите любую клавишу');
END.


Добавлено через 1 минуту и 19 секунд
Должна работать вроде как правильно написал, просто Паскаль давно изучал.... писал соответственно без компилятора со смартфона!))

Автор: Alix 24.3.2008, 21:49
Может вру, но Sqrt в паскале есть, а Sqr - нет. Но вроде есть Pow.

Автор: profispb 24.3.2008, 22:47
Цитата(Alix @ 24.3.2008,  21:49)
Может вру, но Sqrt в паскале есть, а Sqr - нет. Но вроде есть Pow.

Врешь Pow эт в С/С++.

Автор: Alix 24.3.2008, 23:05
Цитата(profispb @  24.3.2008,  22:47 Найти цитируемый пост)
Врешь Pow эт в С/С++.
Ага, точно. В паскале для возведения в степень x^y использовался фокус Exp(y * Ln(x)).
А Sqr в паскале есть. Что-то я попутал.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)