Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/30: Рейтинг темы: голосов - 30, средняя оценка - 4.83
 Аватар для Anastasia96
3 / 3 / 0
Регистрация: 14.04.2014
Сообщений: 43

Определить, лежит ли точка внутри квадрата

22.09.2014, 10:56. Показов 5685. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Даны координаты 2-х вершин некоторого квадрата, расположенных по диагонали, и точка. Определить , лежит ли точка внутри квадрата.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.09.2014, 10:56
Ответы с готовыми решениями:

Определить лежит ли точка внутри окружности
1. Напишите тело функции, определяющей лежит ли точка внутри окружности на плоскости. function in_circle(a:Point; o:Circle):boolean; ...

Определить, что точка с координатами (x, y) лежит внутри прямоугольника
Проверить истинность высказывания: "Точка с координатами (x, y) лежит внутри прямоугольника, левая верхняя вершина которого имеет...

Определить, лежит ли случайная точка внутри случайно сформированного треугольника
Сформировать случайным образом из целых чисел (от 0 до 15) вершины треугольника ABC на плоскости. Определить, лежит ли случайная точка F с...

4
2511 / 1132 / 582
Регистрация: 07.06.2014
Сообщений: 3,286
22.09.2014, 12:02
Определить координаты остальных двух вершин можно так: вершины квадрата

Добавлено через 40 минут
c SQL ru взял код функции проверки попадния точки в регион...

попробуйте:
Pascal
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
const
  npol = 4;
type
  TPoint = record
    X,Y : real;
  end;
  
  myArr = array[0..npol-1] of TPoint;
  
  
function PtInRgn(TestPolygon : myArr; const P : TPoint): boolean;
 var
   ToTheLeftofPoint, ToTheRightofPoint : byte;
   np : integer;
   OpenPolygon : boolean;
   XIntersection : real;
 begin
   ToTheLeftofPoint := 0;
   ToTheRightofPoint := 0;
   OpenPolygon := False;
 
   {Prufen ob das Polygon geschlossen ist}
   {tests if the polygon is closed}
 
   if not ((TestPolygon[0].X = TestPolygon[npol-1].X) and
     (TestPolygon[0].Y = TestPolygon[npol-1].Y)) then
     OpenPolygon := True;
 
   {Tests fur jedes Paar der Punkte, um zu sehen wenn die Seite zwischen
   ihnen, die horizontale Linie schneidet, die TestPoint durchlauft}
   {tests for each couple of points to see if the side between them
   crosses the horizontal line going through TestPoint}
 
   for np := 1 to npol-1 do
     if ((TestPolygon[np - 1].Y <= P.Y) and
       (TestPolygon[np].Y > P.Y)) or
       ((TestPolygon[np - 1].Y > P.Y) and
       (TestPolygon[np].Y <= P.Y))
       {Wenn es so ist}    {if it does}
       then
     begin
       {berechnet die x Koordinate des Schnitts}
       {computes the x coordinate of the intersection}
 
       XIntersection := TestPolygon[np - 1].X +
         ((TestPolygon[np].X - TestPolygon[np - 1].X) /
         (TestPolygon[np].Y - TestPolygon[np - 1].Y)) * (P.Y - TestPolygon[np - 1].Y);
 
       {Zahler entsprechend verringern}
       {increments appropriate counter}
       if XIntersection < P.X then Inc(ToTheLeftofPoint);
       if XIntersection > P.X then Inc(ToTheRightofPoint);
     end;
 
   {Falls das Polygon offen ist, die letzte Seite testen}
   {if the polygon is open, test for the last side}
 
   if OpenPolygon then
   begin
     np := npol - 1;  {Thanks to William Boyd - 03/06/2001}
     if ((TestPolygon[np].Y <= P.Y) and
       (TestPolygon[0].Y > P.Y)) or
       ((TestPolygon[np].Y > P.Y) and
       (TestPolygon[0].Y <= P.Y)) then
     begin
       XIntersection := TestPolygon[np].X +
         ((TestPolygon[0].X - TestPolygon[np].X) /
         (TestPolygon[0].Y - TestPolygon[np].Y)) * (P.Y - TestPolygon[np].Y);
 
       if XIntersection < P.X then Inc(ToTheLeftofPoint);
       if XIntersection > P.X then Inc(ToTheRightofPoint);
     end;
   end;
 
   if (ToTheLeftofPoint mod 2 = 1) and (ToTheRightofPoint mod 2 = 1) then Result := True
   else
     Result := False;
 end; {PtInRgn}
var xa,ya,xb,yb,xc,yc,xd,yd,xm,ym:real;
  P : Tpoint;
  regpol : myarr;
begin
  write('Xa = ');readln(xa);
  write('Ya = ');readln(ya);
  write('Xc = ');readln(xc);
  write('Yc = ');readln(yc);
  xa := 1;  ya := 7;
  xc := 11; yc := 5;
  xm:=(xa+xc)/2;
  ym:=(ya+yc)/2;
  xb:=xm+ym-ya;
  yb:=ym-xm+xa;
  xd:=xm-ym+ya;
  yd:=ym+xm-xa;
//  writeln('Xb=',xb,' Yb=',yb);
//  writeln('Xd=',xd,' Yd=',yd);
 
  regpol[0].X := xa;
  regpol[1].X := xb;
  regpol[2].X := xc;
  regpol[3].X := xd;
 
  regpol[0].Y := ya;
  regpol[1].Y := yb;
  regpol[2].Y := yc;
  regpol[3].Y := yd;
 
 
  write('координаты точки X = ');readln(P.X);
  write('координаты точки Y = ');readln(P.Y);
 
  if PtInRgn(regpol, P) then WriteLn('Входит') else WriteLn('НЕ входит');
  
  
end.
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
22.09.2014, 12:16
Лучший ответ Сообщение было отмечено Anastasia96 как решение

Решение

Pascal
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
46
47
48
49
50
51
52
53
54
uses crt;
type point=record
           x,y:real;
           end;
//функция принадлежности точки треугольнику
function prin_trg(a,b,c,t:point):boolean;
//функция удвоенной площади треугольника по координатам
function plosh(a,b,c:point):real;
begin
  plosh:=(a.x-c.x)*(b.y-c.y)-(b.x-c.x)*(a.y-c.y)
end;
var s1,s2,s3:real;
begin
s1:=plosh(t,a,b);//определяем площади 3х малых треугольников
s2:=plosh(t,b,c);
s3:=plosh(t,c,a);
//если произведения площадей попарно больше 0, то точка внутри
prin_trg:=(s1*s2>0) and (s2*s3>0)
end;
 
var a,b,c,d,z,v,vb,vd,t:point;
begin
writeln('Введите координаты первой вершины');
readln(a.x,a.y);
writeln('Введите координаты противоположной вершины');
readln(c.x,c.y);
writeln('Введите координаты точки');
readln(t.x,t.y);
//найдем координаты остальных вершин квадрата
z.x:=(a.x+c.x)/2;//координаты центра
z.y:=(a.y+c.y)/2;
v.x:=a.x-z.x;//вектор из центра к А
v.y:=a.y-z.y;
vb.x:=v.y; //вектор из центра к В
vb.y:=-v.x;
vd.x:=-v.y;//вектор из центра к D
vd.y:=v.x;
b.x:=z.x+vb.x;//координаты вершины В
b.y:=z.y+vb.y;
d.x:=z.x+vd.x;//координаты вершины D
d.y:=z.y+vd.y;
clrscr;
writeln('Координаты вершин квадрата');
writeln('A(',a.x:0:2,';',a.y:0:2,')');
writeln('B(',b.x:0:2,';',b.y:0:2,')');
writeln('C(',c.x:0:2,';',c.y:0:2,')');
writeln('D(',d.x:0:2,';',d.y:0:2,')');
writeln('Координаты точки');
writeln(t.x:0:2,';',t.y:0:2);
if prin_trg(a,b,c,t)or prin_trg(a,c,d,t)
then write('Точка принадлежит квадрату')
else write('Точка не принадлежит квадрату')
 
end.
3
2511 / 1132 / 582
Регистрация: 07.06.2014
Сообщений: 3,286
22.09.2014, 13:09
Puporev, похоже, я случайно косячок в вашем коде нашёл...
Code
1
2
3
4
5
6
7
8
Координаты вершин квадрата
A(1.00;7.00)
B(7.00;11.00)
C(11.00;5.00)
D(5.00;1.00)
Координаты точки
6.00;6.00
Точка не принадлежит квадрату
Pascal
1
2
3
4
5
  a.x := 1;  a.y := 7;
  c.x := 11; c.y := 5;
 
  t.x := 6;
  t.y := 6;
точка 6,6 является центром данного квадрата..
2
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
22.09.2014, 17:01
Нужно поправить это
Pascal
1
2
//если произведения площадей попарно больше или=0, то точка внутри
prin_trg:=(s1*s2>=0) and (s2*s3>=0)
Взято из другой программы, где имелось ввиду что точка лежит строго внутри треугольника.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.09.2014, 17:01
Помогаю со студенческими работами здесь

Определить, лежит ли точка с заданными координатами внутри заштрихованной области
Составить программу, определяющую лежит ли точка с заданными координатами внутри заштрихованной области:

Вычислить, лежит ли пункт внутри квадрата
Даны координаты двух вершин(x1,y1) и (x2,y2) некоторого квадрата,размещенные по диагонали, и пункт (x3,y3). Узнать,лежит ли пункт внутри...

Лежит ли точка А (a,b) на окружности , внутри или вне её.
Добрый день, я новичок в этом и поэтому я немножко запутался(не могу понять тчо нужно делать) Определите, лежит ли точка А (a,b) на...

Определите, лежит ли точка А (a,b) на окружности x2+y2=r2 , внутри или вне её.
Определите, лежит ли точка А (a,b) на окружности x2+y2=r2 , внутри или вне её.

Cоставить программу, определяющую лежит ли точка с заданными координатами внутри заштрихованной области.
составить программу, определяющую лежит ли точка с заданными координатами внутри заштрихованной области. паскаль абс


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru