Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 6, 2021 10:05:01

ilya.zybulski
Зарегистрирован: 2021-04-06
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Геометрическая задача в ПИТОНЕ ПОМОГИТЕ пожалуйста

Центр двух сфер радиуса R1=20см и R2=80см располагаются в точках пространства, задаваемых с клавиатуры тройками координат. Определить, имеют ли сферы хоть одну общую точку.
ПОМОГИТЕ ПОЖАЛУЙСТА
В ПАЙТОНЕ)))))

Отредактировано ilya.zybulski (Апрель 6, 2021 14:19:25)

Офлайн

#2 Апрель 6, 2021 11:33:07

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Геометрическая задача в ПИТОНЕ ПОМОГИТЕ пожалуйста

https://mathworld.wolfram.com/Sphere-SphereIntersection.html



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

#3 Апрель 6, 2021 13:09:03

ilya.zybulski
Зарегистрирован: 2021-04-06
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Геометрическая задача в ПИТОНЕ ПОМОГИТЕ пожалуйста

PEHDOM
https://mathworld.wolfram.com/Sphere-SphereIntersection.html
Мне нужен код в пайтоне

Офлайн

#4 Апрель 6, 2021 17:23:27

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9716
Репутация: +  842  -
Профиль   Отправить e-mail  

Геометрическая задача в ПИТОНЕ ПОМОГИТЕ пожалуйста

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

PEHDOM
Sphere-SphereIntersection.html
Не думаю, что тут нужно уравнение сферы. Задачка школьного уровня про расстояния между точками.



Офлайн

#5 Апрель 6, 2021 19:47:09

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Геометрическая задача в ПИТОНЕ ПОМОГИТЕ пожалуйста

py.user.next
Задачка школьного уровня про расстояния между точками.
вобще да, и там по ссылке на первой же картинке это досаточно наглядно показано, считаем расстояние меджу центрами, если оно равно или меньше суммы радиусов то имеют.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

#6 Апрель 6, 2021 23:17:55

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9716
Репутация: +  842  -
Профиль   Отправить e-mail  

Геометрическая задача в ПИТОНЕ ПОМОГИТЕ пожалуйста

PEHDOM
считаем расстояние меджу центрами, если оно равно или меньше суммы радиусов то имеют
Не, сфера это не шар. Если маленькая сфера находится внутри большой, то они запросто могут не иметь общих точек. И центр сферы точкой сферы не является, если что. Так что задачка всё ещё школьного уровня, но чуть-чуть там надо пораскинуть мозгами.



Офлайн

#7 Апрель 6, 2021 23:42:19

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Геометрическая задача в ПИТОНЕ ПОМОГИТЕ пожалуйста

py.user.next
Не, сфера это не шар.
ну ладно, сфера это поверхность шара, убедил



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Апрель 6, 2021 23:43:18)

Офлайн

#8 Апрель 7, 2021 21:06:46

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9716
Репутация: +  842  -
Профиль   Отправить e-mail  

Геометрическая задача в ПИТОНЕ ПОМОГИТЕ пожалуйста

ilya.zybulski , ну что, решил задачу? Как математически определить, есть ли у сфер хотя бы одна общая точка?



Офлайн

#9 Апрель 16, 2021 02:27:22

Ocean
Зарегистрирован: 2021-03-14
Сообщения: 131
Репутация: +  9  -
Профиль   Отправить e-mail  

Геометрическая задача в ПИТОНЕ ПОМОГИТЕ пожалуйста

py.user.next, наверное решил, раз молчит

А если не знает, то может ему алгоритм поможет и сам код уже написать не будет проблемой.

Тройки координат задают центр сфер, получается что исходные условия будут такие:
имеем точку А с координатами (x1, y1, z1), которая является центром первой сферы с радиусом R1 = 20 см
имеем точку В с координатами (x2, y2, z2), которая является центром второй сферы с радиусом R2 = 80 см

Решение:
1) Длину отрезка АВ (между центрами сфер) обозначим как L и будем вычислять ее по формуле https://i.ytimg.com/vi/cavwFx4Xd0o/maxresdefault.jpg (самая нижняя на картинке, та что для пространства)

2) Определяем условия, которые будут соответствовать возможному взаимному расположению сфер.
2.1. Условие: L > R1+R2
Это самый простой вариант: сферы не пересекаются, потому что расположены далеко друг от друга

2.2. Условие L < R2 - R1, cферы не пересекаются, потому что одна из них полностью расположена внутри другой

2.3. Сферы касаются в одной точке
Таких возможных пересечений может быть 2:
- yсловие: L = R1+R2, когда сфера с меньшим радиусом расположена за пределами сферы с большим радиусом
- yсловие: L = R2-R1, когда сфера с меньшим радиусом расположена внутри сферы с большим радиусом

2.4. Сферы пересекаются и областью их пересечения является окружность (но это в задаче не спрашивается, так что пофигу. У них даже больше одной точки пересечения, значит достаточно ответить “Да”)
Условие: R1+R2 > L > R2 - R1

3. Выводим результат, если:
- выполняется 2.1 или 2.2 , то ответ “Нет
- выполняется 2.3 или 2.4, то ответ ”Да"

Пы.Сы. Интересно для какого класса эту задачу на Python задают )


Офлайн

#10 Апрель 16, 2021 04:06:47

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9716
Репутация: +  842  -
Профиль   Отправить e-mail  

Геометрическая задача в ПИТОНЕ ПОМОГИТЕ пожалуйста

Ocean
Интересно для какого класса эту задачу на Python задают
У нас в детском саду робототехнику изучают. Английский сейчас тоже бывает с разного возраста, к тому же есть частные школы и дополнительное образование, где английский можно с пяти лет изучать, просто платишь отдельно. Стандартная школьная программа в плане информатики и английского тоже сейчас гибче стала. Раньше начинают, чем у нас было. А у меня в школе было то, что у моего брата старшего вообще не было в школе. Поэтому ко мне привозили видики все его друзья, чтобы я им в 13-15 лет их свадьбы переписывал с кассеты на кассету, ну и порнуху тоже. Так меня заваливали там конфетами, пивом, всем подряд в благодарность за переписанную свадьбу для родоков там или кого. Они не могли разобраться в аппаратуре. Видик у них был, а как он там работает, какие кнопки там нажимать, они не знали, всё по-английски было. Не школа, конечно, научила этому меня, но в школе у меня была информатика, а у брата не было информатики вообще, потому что он в СССР учился ещё. Разные поколения - это разрыв конкретный. И вот сейчас новое поколение вообще другое.

Но вот это вот
Ocean
- выполняется 2.3 или 2.4, то ответ ”Да"
  
>>> def points_distance3d(x1, y1, z1, x2, y2, z2):
...     return ((x1 - x2) ** 2 + (y1 - y2) ** 2 + (z1 - z2) ** 2) ** 0.5
... 
>>> def spheres_intersect(o1, r1, o2, r2):
...     dist = points_distance3d(*o1, *o2)
...     return r1 + r2 >= dist >= r2 - r1
... 
>>> def f():
...     o1 = tuple(map(float, input('Input x1 y1 z1: ').split()))
...     r1 = 20
...     o2 = tuple(map(float, input('Input x2 y2 z2: ').split()))
...     r2 = 80
...     spherefmt = '<{} r={}>'
...     if spheres_intersect(o1, r1, o2, r2):
...         print('Spheres {} and {} intersect'.format(
...             spherefmt.format(o1, r1),
...             spherefmt.format(o2, r2)))
...     else:
...         print('Spheres {} and {} don\'t intersect'.format(
...             spherefmt.format(o1, r1),
...             spherefmt.format(o2, r2)))
... 
>>> f()
Input x1 y1 z1: 0 0 0
Input x2 y2 z2: 100 0 0
Spheres <(0.0, 0.0, 0.0) r=20> and <(100.0, 0.0, 0.0) r=80> intersect
>>> f()
Input x1 y1 z1: 0 0 0
Input x2 y2 z2: 101 0 0
Spheres <(0.0, 0.0, 0.0) r=20> and <(101.0, 0.0, 0.0) r=80> don't intersect
>>>
Ну, где-то в пятом классе можно уже давать спокойно. Математику надо только всю готовую дать, как обезьянкам, которые просто код пишут. В пятом классе рано ещё сферу изучать, потому что не даны базовые понятия о пространстве, окружности, координатах и тому подобных вещах. Просто не надо натягивать на современных детей навыки современных взрозлых. Это разные поколения. С молодыми сейчас надо связываться через Интернет. Со взрослыми сейчас надо связываться через телефон. Кроме WhatsApp'а и тому подобного они ничего освоить не в состонии. Какие там Trello, Slack, роботы? Это всё для них, для таких современных копец как сложно. В том числе и английский. Что-то по-английски написано - всё, это прямо инопланетная технология для них.



Отредактировано py.user.next (Апрель 16, 2021 04:22:08)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version