| 
| 
 | Вопрос # 5 114/ вопрос открыт / | 
 |  Здравствуйте, уважаемые эксперты!Помогите разобраться с задачей. Принадлежит ли заданная точка заштрихованной области. Область представляет собой круг за вычетом квадрата.
 
|  |   Вопрос задала: Pervun (статус: Посетитель)Вопрос отправлен: 22 марта 2011, 09:49
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: min@y™ Ну типа вот как-то так:
 // вхождение точки в прямоугольник (или квадрат)
function PointInRect(const P: TPoint; const R: TRect): Boolean;
begin
  Result:= (P.X >= R.Left) and
           (P.X <= R.Right) and
           (P.Y >= R.Top) and
           (P.Y <= R.Bottom);
end;
 
// вхождение точки в окружность
function PointInCircle(const P, Center: TPoint; const Radius: Integer): Boolean;
begin
  Result:= (Sqr(P.X - Center.X) + Sqr(P.Y - Center.Y)) / Sqr(R) <= 1;
end;
 
// --------- Использование: -------------
var
  P: TPoint;
  R: TRect;
  Center: TPoint;
  Radius: Integer;
 
begin
  // <--- здесь - инициализация переменных
 
  // Результат:
  if PointInCircle(P, Center, Radius) and not PointInRect(P, R)
    then // точка в области
    else // точка вне области.
end;Естествено, если подразумеваются вещественные координаты, надо слегка подправить типы данных, а алгоритм останется тот же.
 
 З.Ы. АХТУНГ! Писал на коленке, не отлаживал. Возможны баги. Но, думаю, придёт Вадим К и всё исправит. :))
 
|  | Ответ отправил: min@y™ (статус: Доктор наук)Время отправки: 22 марта 2011, 10:12
 
 |  
 Мини-форум вопросаВсего сообщений: 6; последнее сообщение — 22 марта 2011, 19:41; участников в обсуждении: 3. 22 марта 2011, 10:17: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Лабораторный практикум » Pascal модератором min@y™ 
|   | Толяныч (статус: 4-ый класс), 22 марта 2011, 11:50 [#1]:min@y™:   Нехорошо это - дельфийскому магистру и гуру брать на растерзание такие легкие вопросы - надо оставлять начинающим экспертам ( кому - скромно умолчим  )  с  возгласом : "Толяныч, фас !". Это мое мнение, и я его полностью разделяю.
 |  
|   | min@y™ (статус: Доктор наук), 22 марта 2011, 12:09 [#2]: Цитата (Толяныч): Нехорошо это - дельфийскому магистру и гуру брать на растерзание такие легкие вопросы - надо оставлять начинающим экспертам ( кому - скромно умолчим    ) с возгласом : "Толяныч, фас !". Это мое мнение, и я его полностью разделяю. У меня 3 контраргумента:
 1. это не противоречит правилам портала;
 2. на работе дико скучно и нечем заняться, а мозг требует нагрузки;
 3. кто первый встал, того и тапки.
 К тому же дать второй ответ тебе никто не запрещает.
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | min@y™ (статус: Доктор наук), 22 марта 2011, 12:42 [#4]:Лезь к нам в IRC-канал. Туда вопросы сразу вываливаются, после того как их задают. Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | bugmenot (статус: 3-ий класс), 22 марта 2011, 18:36 [#5]:> Лезь к нам в IRC-канал. Туда вопросы сразу вываливаются RSS поломали?
 
 > А после тебя ответишь, как же
 Для любителей чистого матана задача сводится к системе уравнений, кстати
 виконання програми розпочинається з того самого мiсця, де призупинилося.
 
 |  
|   | min@y™ (статус: Доктор наук), 22 марта 2011, 19:41 [#6]: Цитата (bugmenot): RSS поломали? ХЗ, не пользуюсь.
 
 Цитата (bugmenot): > А после тебя ответишь, как же Для любителей чистого матана задача к системе уравнений, кстати  Абсолютно верно.
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |