Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.61/56: Рейтинг темы: голосов - 56, средняя оценка - 4.61
1 / 1 / 0
Регистрация: 05.11.2012
Сообщений: 21

Необходимо написать программу, определяющую в какую область на рисунке попала точка.

07.11.2012, 18:33. Показов 11730. Ответов 36
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Необходимо написать программу, определяющую в какую область на рисунке попала точка.
Параметры кривых (радиус, длина, высота и др.) определяются по рисунку (масштаб произвольный), начало координат задается произвольно.
Координаты точки (х,у), расположение которой определяется в данной работе, вводятся с клавиатуры. Результатом выполнения работы является программа, вычисляющая номер области, в которую попадет точка, написанная в отдельном файле, а также графическое отображение результата (построить все
графики и указать искомую точку с выводом номера области на экран).
Миниатюры
Необходимо написать программу, определяющую в какую область на рисунке попала точка.  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.11.2012, 18:33
Ответы с готовыми решениями:

Программа определяющую в какую область на рисунке попала точка
Всем привет, есть задание которое нужно сделать на Matlab. Начну с того, что я с Matlab мало знаком, за меня делать не прошу, но нужен...

Определить, в какую область на рисунке попала точка
Всем привет, не могу сделать задание, вообще не понимаю, кучу роликов пересмотрел и все равно 0 в голове, может кто-нибудь помочь ...

Не могу понять как сделать Дана заштрихованная область и точка с координатами (х, у). Написать программу, определяющую, попадает ли точка в область
Дана заштрихованная область и точка с координатами (х, у). Написать программу, определяющую, попадает ли точка в область. Добавлено...

36
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
07.11.2012, 18:38
Я не гуру в обработке изображений, но что значит "номер области"?
0
1 / 1 / 0
Регистрация: 05.11.2012
Сообщений: 21
08.11.2012, 10:53  [ТС]
область образованная пересечением графиков функций
0
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
08.11.2012, 11:44
А маленькие клеточки тоже считаются областями или они для определения размеров фигур? И как эти области нумеруются?
0
 Аватар для Галина Борисовн
2835 / 2132 / 87
Регистрация: 02.05.2010
Сообщений: 3,194
08.11.2012, 13:40
Зосима, как-то я делала подобную задачу, правда в Mathcad. Области определяются где-то так.
Миниатюры
Необходимо написать программу, определяющую в какую область на рисунке попала точка.  
0
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
08.11.2012, 15:52
Галина Борисовн, мне удалось накропать программу рисования фигур и вывода точки, но вот как выделить области - не наю (спинным мозгом чувствую, что нужно использовать patch)
Кликните здесь для просмотра всего текста
Matlab M
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
clear
clc
% Вводим координаты точки
X0 = input('Введите координату точки X [-3 8]: ');
Y0 = input('Введите координату точки Y [-9 6]: ');
% Рисуем фигуры
% 1. Прямоугольник
a = 5; % ширина
b = 4.5; % длинна
x0 = 0; % координаты нижнего левого угла
y0 = 0;
X1 = [x0 x0 x0+a x0+a x0];
Y1 = [y0 y0+b y0+b y0 y0];
% 2. Элипсик
fi = 0:180; % угловой размер
x0 = 2.5; % координаты центра
y0 = -10;
a = 5; % малый радиус
b = 7.5; % больший радиус
X2 = x0 + a*cosd(fi);
Y2 = y0 + b*sind(fi);
% 3. малая окружность
fi = 0:360; % угловой размер
x0 = 2.5; % координаты центра
y0 = -2.5;
r = 2; % радиус
X3 = x0 + r*cosd(fi);
Y3 = y0 + r*sind(fi);
% 4. большая окружность
fi = 0:360; % угловой размер
x0 = 2.5; % координаты центра
y0 = -2.5;
r = 4; % радиус
X4 = x0 + r*cosd(fi);
Y4 = y0 + r*sind(fi);
% Рисуем все фигуры
h=plot(X0,Y0,'*m',X1,Y1,X2,Y2,X3,Y3,X4,Y4,'LineWidth',2);
axis ([-3 8 -9 6])
axis equal
grid on
hold on
Миниатюры
Необходимо написать программу, определяющую в какую область на рисунке попала точка.  
1
 Аватар для Галина Борисовн
2835 / 2132 / 87
Регистрация: 02.05.2010
Сообщений: 3,194
08.11.2012, 15:59
1. Нужно выбрать начало координат, точку О(0,0).
2. Составить уравнения всех линий.
3. Описать неравенствами (системой неравенств) каждую область.
0
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
08.11.2012, 16:26
Эх, все равно, не могу доганть, как можно составить уравнение для квадрата или элипса
Вот второй рисунок фигур
Кликните здесь для просмотра всего текста
Matlab M
1
2
3
4
5
6
7
8
9
% 4. больший полуэлипс
fi = 0:180; % угловой размер
x0 = 0; % координаты центра
y0 = 0;
a = 3; % малый радиус
b = 6; % большой радиус
X4 = x0 + a*cosd(fi);
Y4 = y0 + b*sind(fi);
plot(X3,Y3)
Миниатюры
Необходимо написать программу, определяющую в какую область на рисунке попала точка.  
0
 Аватар для Галина Борисовн
2835 / 2132 / 87
Регистрация: 02.05.2010
Сообщений: 3,194
08.11.2012, 17:07
Цитата Сообщение от Зосима Посмотреть сообщение
Эх, все равно, не могу доганть, как можно составить уравнение для квадрата или элипса
Квадрат описывается системой неравенств a<x<b; c<y<d
Эллипс, если это его внутренняя часть неравенством (x-a)^2/d1^2+(y-b)^2/d2^2<1
1
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
08.11.2012, 19:51
Галина Борисовна, еще такой вопросик: если я кое-как проpatchу области разными цветами, есть ли возможность узнать, какой цвет будет в точке с координатами x0, y0? Если да, то как?
0
 Аватар для Галина Борисовн
2835 / 2132 / 87
Регистрация: 02.05.2010
Сообщений: 3,194
08.11.2012, 19:56
Зосима, опыта работы с цветом в Matlab у меня нет. Но я полагаю, что этого в задании и не требуется.
0
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
08.11.2012, 20:06
Просто я хотел определить номер области по цвету заливки.

Не по теме:

Однажды я подобным способом писал муз. клавиатуру для сенсорного экрана телефона и чтобы определить октаву и ноту рисовал клавиши немного разными цветами - таким образом время определения было очень малым по сравнению с тем, если бы я использовал условные операторы.


Но и на том гранд мерси
0
1 / 1 / 0
Регистрация: 05.11.2012
Сообщений: 21
08.11.2012, 23:02  [ТС]
Цитата Сообщение от Зосима Посмотреть сообщение
Эх, все равно, не могу доганть, как можно составить уравнение для квадрата или элипса
Вот второй рисунок фигур
Кликните здесь для просмотра всего текста
Matlab M
1
2
3
4
5
6
7
8
9
% 4. больший полуэлипс
fi = 0:180; % угловой размер
x0 = 0; % координаты центра
y0 = 0;
a = 3; % малый радиус
b = 6; % большой радиус
X4 = x0 + a*cosd(fi);
Y4 = y0 + b*sind(fi);
plot(X3,Y3)
а это весь код? просто он что-то маленький какой-то
0
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
09.11.2012, 08:41
Цитата Сообщение от Малька Посмотреть сообщение
а это весь код? просто он что-то маленький какой-то
Ох йё! :facepalm: Прости, Ириш. :-[ Вот бошка дырявая - вставил не то, что нужно, благо код сохранился! :) (хорошо, что я игрался с этими рисунками до упора, а то я пишу все программы в одном файле и, когда выкладываю код на форум, то со спокойной душой стираю его и принимаюсь за написание новой)
Через 2 часа буду на работе и выложу. Кроме того попробую чуток допилить и сделать цветные области, вчера уже кое-что получалось :)
0
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
09.11.2012, 11:01
Как и обещал, чуток допилил программки - получилось довольно психоделично)))
Вот первая:
Кликните здесь для просмотра всего текста
Matlab M
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
clear
clc
clf
 
% Вводим координаты точки
X0 = input('Введите координату точки X [-3 8]: ');
Y0 = input('Введите координату точки Y [-9 6]: ');
 
% Рисуем фигуры
% 0. фон
A = [-10 -10 15 15 -10];
B = [-10 10 10 -10 -10];
patch(A,B,10,'EraseMode','xor')
hold on
 
% 1. Прямоугольник
a = 5; % ширина
b = 4.5; % длинна
x0 = 0; % координаты нижнего левого угла
y0 = 0;
X1 = [x0 x0 x0+a x0+a x0];
Y1 = [y0 y0+b y0+b y0 y0];
patch(X1,Y1,1,'EraseMode','xor')
 
% 2. Элипсик
fi = 0:180; % угловой размер
x0 = 2.5; % координаты центра
y0 = -10;
a = 5; % малый радиус
b = 7.5; % больший радиус
X2 = x0 + a*cosd(fi);
Y2 = y0 + b*sind(fi);
patch(X2,Y2,5,'EraseMode','xor')
 
% 3. малая окружность
fi = 0:360; % угловой размер
x0 = 2.5; % координаты центра
y0 = -2.5;
r = 2; % радиус
X3 = x0 + r*cosd(fi);
Y3 = y0 + r*sind(fi);
patch(X3,Y3,2,'EraseMode','xor')
 
% 4. большая окружность
fi = 0:360; % угловой размер
x0 = 2.5; % координаты центра
y0 = -2.5;
r = 4; % радиус
X4 = x0 + r*cosd(fi);
Y4 = y0 + r*sind(fi);
patch(X4,Y4,3,'EraseMode','xor')
 
% Рисуем точку
plot(X0,Y0,'.','EraseMode','xor')
axis ([-3 8 -9 6])
axis equal
grid off


А вот вторая программка:
Кликните здесь для просмотра всего текста
Matlab M
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
clear
clc
clf
 
% Вводим координаты точки
X0 = input('Введите координату точки X [-6 6]: ');
Y0 = input('Введите координату точки Y [-7 5]: ');
 
% Рисуем фигуры
% 1. растущая линия
a = 1.15; % коэф.наклона
X1 = -10:10;
Y1 = a*X1;
patch([X1 -10],[Y1 10],1,'EraseMode','xor') % верхняя часть
patch([X1 10],[Y1 -10],2,'EraseMode','xor') % нижняя часть
hold on
 
% 2. ниспадающая линия
a = -0.9; % коэф.наклона
X2 = -10:10;
Y2 = a*X2;
patch([X2 10],[Y2 10],3,'EraseMode','xor') % верхняя часть
patch([X2 -10],[Y2 -10],4,'EraseMode','xor') % нижняя часть
 
% 3. малый полуэлипс
fi = 0:180; % угловой размер
x0 = 0; % координаты центра
y0 = -1;
a = 3; % малый радиус
b = 4; % большой радиус
X3 = x0 + a*cosd(fi);
Y3 = y0 + b*sind(fi);
patch(X3,Y3,5,'EraseMode','xor')
 
% 4. больший полуэлипс
fi = 0:180; % угловой размер
x0 = 0; % координаты центра
y0 = -1;
a = 3; % малый радиус
b = 6; % большой радиус
X4 = x0 + a*cosd(fi);
Y4 = y0 + b*sind(fi);
patch(X4,Y4,6,'EraseMode','xor')
 
% 5. центральный элипс
fi = 0:360; % угловой размер
x0 = 0; % координаты центра
y0 = 0;
a = 5; % малый радиус
b = 2; % большой радиус
X5 = x0 + a*cosd(fi);
Y5 = y0 + b*sind(fi);
patch(X5,Y5,7,'EraseMode','xor')
 
% Рисуем точку
plot(X0,Y0,'.','EraseMode','xor')
axis ([-6 6 -5 7])
axis equal
grid off


Правда это все-равно далеко от того, что нужно
1
1 / 1 / 0
Регистрация: 05.11.2012
Сообщений: 21
09.11.2012, 14:59  [ТС]
Цитата Сообщение от Зосима Посмотреть сообщение
Правда это все-равно далеко от того, что нужно
все равно и на этом спасибо))) ещё на учебе у кого-нибудь спрошу, может помогут
0
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
09.11.2012, 15:09
Свисни, если что-то прояснится
0
1 / 1 / 0
Регистрация: 05.11.2012
Сообщений: 21
13.11.2012, 19:47  [ТС]
Цитата Сообщение от Зосима Посмотреть сообщение
Свисни, если что-то прояснится
прояснила сегодня ситуацию. надо сделать, чтоб программа либо выводила номер области, в которую попала (для этого придется пронумеровать области на рисунке), либо писала, в какую фигуру попала точка (овал, большая полусфера и тд)
0
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
14.11.2012, 12:00
Похоже все-равно придется замлрачиваться с кипой неравентств... -_- пичаль

Добавлено через 15 часов 48 минут
Заяц, ну что тебе сказать? Получилось!
Вот листинг программки:
Matlab M
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
clear
clc
 
% Вводим координаты точки
X0 = input('Введите координату точки X [-3 8]: ');
Y0 = input('Введите координату точки Y [-9 6]: ');
clf 
% Рисуем фигуры
% 0. фон
A = [-10 -10 15 15 -10];
B = [-10 10 10 -10 -10];
patch(A,B,10,'EraseMode','xor')
hold on
 
% 1. Прямоугольник
a = 5; % ширина
b = 4.5; % длинна
x0 = 0; % координаты нижнего левого угла
y0 = 0;
X1 = [x0 x0 x0+a x0+a x0];
Y1 = [y0 y0+b y0+b y0 y0];
patch(X1,Y1,1,'EraseMode','xor')
% проверяем попала ли точка в фигуру
inSqr = (X0>=x0)&&(X0<=x0+a)&&(Y0>=y0)&&(Y0<=y0+b);
 
 
% 2. Элипсик
fi = 0:180; % угловой размер
x0 = 2.5; % координаты центра
y0 = -10;
a = 5; % малый радиус
b = 7.5; % больший радиус
X2 = x0 + a*cosd(fi);
Y2 = y0 + b*sind(fi);
patch(X2,Y2,5,'EraseMode','xor')
% проверяем попала ли точка в фигуру
inElip = ((X0-x0)^2/a^2<=1)&&((Y0-y0)^2/b^2<=1);
 
 
% 3. малая окружность
fi = 0:360; % угловой размер
x0 = 2.5; % координаты центра
y0 = -2.5;
r = 2; % радиус
X3 = x0 + r*cosd(fi);
Y3 = y0 + r*sind(fi);
patch(X3,Y3,2,'EraseMode','xor')
% проверяем попала ли точка в фигуру
inSmalCir = ((X0-x0)^2/r^2<=1)&&((Y0-y0)^2/r^2<=1);
 
% 4. большая окружность
fi = 0:360; % угловой размер
x0 = 2.5; % координаты центра
y0 = -2.5;
r = 4; % радиус
X4 = x0 + r*cosd(fi);
Y4 = y0 + r*sind(fi);
patch(X4,Y4,3,'EraseMode','xor')
% проверяем попала ли точка в фигуру
inBigCir = ((X0-x0)^2/r^2<=1)&&((Y0-y0)^2/r^2<=1);
 
 
% подписываем области
text(-2,4,'\bf 1')
text(1,3,'\bf 2')
text(2,0.5,'\bf 3','color',[0.6 0 0.6])
text(2,-1.5,'\bf 4','color',[0.6 0.3 0.8])
text(-0.5,-1.5,'\bf 5','color',[0.8 0.5 0.3])
text(2,-3.5,'\bf 6','color',[0.8 0.5 0.3])
text(2,-5.5,'\bf 7')
text(2,-7.5,'\bf 8')
 
% Рисуем точку
plot(X0,Y0,'.','EraseMode','xor')
axis ([-3 8 -9 6])
axis equal
grid off
 
% Определяем область куда попала точка
if (~inSqr)&&(~inElip)&&(~inSmalCir)&&(~inBigCir) 
    N = 1; 
elseif (inSqr)&&(~inElip)&&(~inSmalCir)&&(~inBigCir)
    N = 2;
elseif (inSqr)&&(~inElip)&&(~inSmalCir)&&(inBigCir)
    N = 3;
elseif (~inSqr)&&(~inElip)&&(inSmalCir)&&(inBigCir)
    N = 4;
elseif (~inSqr)&&(~inElip)&&(~inSmalCir)&&(inBigCir)
    N = 5;
elseif (~inSqr)&&(inElip)&&(inSmalCir)&&(inBigCir)
    N = 6;
elseif (~inSqr)&&(inElip)&&(~inSmalCir)&&(inBigCir)
    N = 7;
elseif (~inSqr)&&(inElip)&&(~inSmalCir)&&(~inBigCir)
    N = 8;
end
disp(['Точка попала в обалсть №', num2str(N)])
Было добавлено:
- В каждой из фигур проверка на попадание в оную
- Нумерация областей
- Определение области исходя из попаданий в фигуры.

Сможешь по подобию сделать вторую?
1
1 / 1 / 0
Регистрация: 05.11.2012
Сообщений: 21
14.11.2012, 12:15  [ТС]
Зосима, я вряд ли разберусь, как написать уравнение, чтоб проверить, попала ли точка в фигуру или нет(((
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.11.2012, 12:15
Помогаю со студенческими работами здесь

Дана заштрихованная область и точка с координатами (х, у). Написать программу, определяющую, попадает ли точка в область
Дана заштрихованная область и точка с координатами (х, у). Написать программу, определяющую, попадает ли точка в область.

Написать программу, попадет ли точка с заданными координатами в область на рисунке
Написать программу, которая определяет, попадет ли точка с заданными координатами в область, закрашенную на рисунке серым цветом. Результат...

Написать программу, которая определяет, попадает ли точка с заданными координатами в область, закрашенную на рисунке
Написать программу, которая определяет, попадает ли точка с заданными координатами в область, закрашенную на рисунке серым цветом....

Написать программу, которая определяет, попадает ли точка с заданными координатами в область, закрашенную на рисунке
Написать программу, которая определяет, попадает ли точка с заданными координатами в область, закрашенную на рисунке серым цветом....

Написать программу, которая определяет, попадает ли точка с заданными координатами в область, закрашенную на рисунке
Написать программу, которая определяет, попадает ли точка с заданными координатами в область, закрашенную на рисунке. Вроде бы задание...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru