Форум программистов, компьютерный форум, киберфорум
Геометрия
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
0 / 0 / 0
Регистрация: 15.05.2025
Сообщений: 6

Геодезическое расстояние на поверхности цилиндра

15.05.2025, 12:13. Показов 1916. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Столкнулся со следующей, кажущейся несложной, на первый взгляд, задачей, которую так и не смог решить.
1) Дан тонкостенный полый цилиндр диаметром 1020 мм. Ось цилиндра совпадает с осью Z системы координат. В этом цилиндре выполнено 2 отверстия. Ось первого отверстия сонаправлено с осью Y а само отверстие смещено по оси Z на 200 мм (то есть центр отверстия имеет координаты 0, 510, 200). Второе смещено по оси Z на 600 мм, повернуто вокруг оси Z на 20 градусов, после чего смещено по нормали к оси отверстия на 200 мм (координаты центра данного отверстия 352.11, 137.35, 600).
2) Дан тот же цилиндр с тем же первым отверстием. Однако, второе отверстие расположено немного по-другому: само отверстие смещено также на 600 мм по оси Z и повернуто на 20 градусов вокруг оси Z. Затем, если представить, что в получившейся точке мы строим локальную систему координат с направлениями осей по же логике (то есть ось Z лск сонаправлена с осью Z цилиндра), отверстие "наклонено" на 30 градусов вокруг оси X ЛСК и повернуто на 45 градусов вокруг оси Z ЛСК (центр отверстия в координатах 174.43, 0, 600).
Собственно суть задачи: нужно численно найти расстояние по дуге цилиндра (по сути, геодезическое расстояние) между точками на этих отверстиях, которые наиболее приближены друг к другу. Я смог найти расстояние между центрами отверстий, а дальше моих знаний катастрофически не хватает, чтобы пересчитать вторые отверстия на развертку цилиндра.

У меня есть правильные ответы для этих случаев, полученные с помощью CAD системы: в первом ответ будет 330,68 мм, а во втором 195,17 мм

По ссылкам приложил изображение и два stp файла с геометрией данных цилиндров.
https://drive.google.com/file/... sp=sharing
https://drive.google.com/file/... sp=sharing
https://drive.google.com/file/... sp=sharing
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.05.2025, 12:13
Ответы с готовыми решениями:

Параллельно оси цилиндра проведено плоскость, отсекает от окружности основания дугу (бета). Отрезок соединяющий центер основания цилиндра с точкой окр
Помогите решить задачку... Параллельно оси цилиндра проведено плоскость, отсекает от окружности...

Построить линию пересечения наклонного цилиндра и цилиндра и определить видимость
нужно построить линию пересечения наклонного цилиндра и цилиндра и определить видимость

Найти площадь полной поверхности цилиндра
Площадь осевого сечения цилиндра равна 108 см2.а его образующая в три раза меньше диаметра...

21
Нарушитель
212 / 352 / 62
Регистрация: 09.06.2015
Сообщений: 1,436
15.05.2025, 13:07
Непонятно, если ответы уже есть, то надо разобраться, как они получены, или для расстояний между точками на границах дырок ответа ещё нет?
0
0 / 0 / 0
Регистрация: 15.05.2025
Сообщений: 6
15.05.2025, 13:13  [ТС]
Ответ я получил, используя CAD систему. Мне же нужно понять, как найти эти расстояния численно, не используя средства моделирования. Приложенные мной ответы - это и есть необходимая величина между двумя наиболее близкими друг к другу точками на двух отверстиях.

Также прикладываю код на python, с помощью которого я нашел расстояния между центрами отверстий (здесь x1, y1, z1, x2, y2, z2 - координаты центров отверстий)

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def calculating_arc_distance(x1, y1, z1, x2, y2, z2):
    # функция получения угле тетта в полярных координатах цилиндра
    def compute_theta(x, y):
        cos_theta = x / (cilinder/2)      # Косинус угла θ = x / R
        sin_theta = (y - cilinder/2) / (cilinder/2)  # Синус угла θ = (y - R) / R
        theta = math.atan2(sin_theta, cos_theta)   # Арктангенс с учетом квадранта 
        # Корректировка угла для диапазона [0, 2π)
        return theta if theta >= 0 else theta + 2 * math.pi
    # Вычисление углов θ для точек
    theta1 = compute_theta(x1, y1)
    theta2 = compute_theta(x2, y2)
    # Вычисление минимальной разности углов Δθ (учитывая периодичность 2π)
    delta_theta = min(abs(theta2 - theta1), 2 * math.pi - abs(theta2 - theta1))
    arc_length = math.sqrt((cilinder/2 * delta_theta)**2 + (z2 - z1)**2)
    
    return arc_length
arc_between_centers = calculating_arc_distance(x1, y1, z1, x2, y2, z2)
 Комментарий модератора 
Правила форума: пункт 4.9. Используйте тэги форматирования текста и редактор формул для удобства восприятия ваших сообщений другими пользователями.
0
Нарушитель
212 / 352 / 62
Регистрация: 09.06.2015
Сообщений: 1,436
15.05.2025, 13:21
Цитата Сообщение от 9083 Посмотреть сообщение
Приложенные мной ответы
Кто будет файлы разбирать, тем более скачивать?
Каждое отверстие это линия пересечения двух цилиндров, правильно? Если через центры отверстий провести плоскость, перпендикулярную оси исходного цилиндра, то на линии её пересечения с этим цилиндром будет лежать отрезок кривой между точками на отверстиях. А не будет ли он той самой геодезической?
0
0 / 0 / 0
Регистрация: 15.05.2025
Сообщений: 6
15.05.2025, 13:38  [ТС]
Ну, во-первых, ответ я написал вполне себе числами, поэтому надобности куда-то лезть нет. Во-вторых, если кто-то захочет - может открыть приложенные файлы, я же, кажется, никого не принуждаю. Тем более, если есть софт - это вообще не проблема.
И по вашему вопросу: в моем случае, если я трактовал правильно ваш ответ, у меня физически не получится создать плоскость через точки в центрах отверстий, перпендикулярную оси исходного цилиндра. По первой ссылке прикреплено изображение, на котором показано, как примерно располагаются отверстия. Если вы на нее посмотрите, то увидите, что прямая, проходящая через эти две точки в плоскости XY не перпендикулярная оси цилиндра, поэтому и создать плоскость, которую вы предлагаете, не получится.
0
Нарушитель
212 / 352 / 62
Регистрация: 09.06.2015
Сообщений: 1,436
15.05.2025, 15:51
Цитата Сообщение от 9083 Посмотреть сообщение
создать плоскость через точки в центрах отверстий, перпендикулярную оси исходного цилиндра.
Ну, это я впопыхах снебрежничал. Плоскость, содержащая перпендикуляр к оси, и проходящая через две точки. Всё получится.
0
0 / 0 / 0
Регистрация: 15.05.2025
Сообщений: 6
15.05.2025, 16:15  [ТС]
Я, кажется, все равно не до конца правильно понимаю. В таком случае у получится криволинейная поверхность. И даже если мы получим уравнение этой плоскости, то я не представляю, что делать дальше, т к. Координаты точек между которыми нужно найти расстояние все равно неизвестно.
0
Нарушитель
212 / 352 / 62
Регистрация: 09.06.2015
Сообщений: 1,436
15.05.2025, 17:08
Цитата Сообщение от 9083 Посмотреть сообщение
Координаты точек между которыми нужно найти расстояние все равно неизвестно.
Координаты каких точек, пересечений осей свёрл с цилиндром, или точек по периметрам дырок. В любом случае составляем соответствующие системы уравнений и решаем. Решения, скорее всего, численные, уравнения должны быть несложные. Если решать в параметрическом виде, то надо думать, но самое простое, как мне кажется, это прямоугольные координаты.
Например, точки на периметре: два уравнение - точка принадлежит обоим цилиндрам, то же самое для второй точки. 4 уравнения. Ищем минимум расстояния с условием этих четырёх уравнений. То есть, задача на условный экстремум, решать можно через множители Лагранжа. Можно решать дискретным перебором точек на линиях пересечения. Найдя координаты точек, найдём расстояние между ними, но уже по цилиндру.
Всё должно получиться, но лучше, мне кажется, пользоваться мат пакетом.
0
0 / 0 / 0
Регистрация: 15.05.2025
Сообщений: 6
15.05.2025, 19:09  [ТС]
Расстояние между точками, образованными пересечением "сверл" и цилиндра диаметром 1020 я нашел. Я выше прикреплял код на python, в котором это реализовано. Проблема в нахождении расстояния между двумя точками на поверхностях отверстий (то есть на их периметрах), которые наиболее приближены друг к другу. Я прикрепил иллюстрацию для лучшего понимания. Я пытался решить эту задачу в прямоугольных координатах, но, в данных случаях, я могу найти координаты точек центров получившихся отверстий, но не тех, которые на их периметрах. Скорее всего, эту задачу можно решить таким методом, но у меня не хватает знаний.
Миниатюры
Геодезическое расстояние на поверхности цилиндра  
0
Нарушитель
212 / 352 / 62
Регистрация: 09.06.2015
Сообщений: 1,436
15.05.2025, 20:59
Цитата Сообщение от 9083 Посмотреть сообщение
Скорее всего, эту задачу можно решить таким методом, но у меня не хватает знаний
Я уже несколько способов предложил, по какому именно способу и в каком его месте не хватает знаний? Первый способ через плоскость
Цитата Сообщение от one man Посмотреть сообщение
Плоскость, содержащая перпендикуляр к оси, и проходящая через две точки
самый простой. Получается 6 уравнений и 6 переменных. 6 переменных это три координаты точек на периметре отверстий.
4 уравнения это принадлежность каждой точки двум цилиндрам, и 2 уравнения это принадлежность точек общей плоскости. Плоскость проходит через центры отверстий и прямую, перпендикулярную оси основного цилиндра. То есть, отрезок b на чертеже принадлежит прямой, которая скрещивается с осью основного цилиндра. Это школьная геометрия.
0
1833 / 1027 / 192
Регистрация: 24.02.2013
Сообщений: 3,084
Записей в блоге: 12
16.05.2025, 13:16
9083, запишите уравнение винтовой линии на основном цилиндре (угол бета имеется согласно картинке).
Расположите на ней линии пересечения цилиндров сверления с основным цилиндром.
Найдите длину винтовой винтовой линии между точками пересечения кривых сверления с винтовой линии.
0
5515 / 2868 / 571
Регистрация: 07.11.2019
Сообщений: 4,758
16.05.2025, 13:33
9083, я так понимаю, что геодезическая на цилиндре будет просто отрезком (минимальным) на его развертке.
0
1833 / 1027 / 192
Регистрация: 24.02.2013
Сообщений: 3,084
Записей в блоге: 12
16.05.2025, 13:59
Пояснение к посту 11
Кратчайшая на цилиндре - винтовая линия.
Миниатюры
Геодезическое расстояние на поверхности цилиндра  
0
5515 / 2868 / 571
Регистрация: 07.11.2019
Сообщений: 4,758
16.05.2025, 14:48
Nacuott, так винтовых линий можно сколько угодно провести. И точно не факт что геодезическая будет проходить через оси/центры отверстий.
0
1833 / 1027 / 192
Регистрация: 24.02.2013
Сообщений: 3,084
Записей в блоге: 12
16.05.2025, 14:59
Цитата Сообщение от u235 Посмотреть сообщение
Nacuott, так винтовых линий можно сколько угодно провести. И точно не факт что геодезическая будет проходить через оси/центры отверстий.
Под углом бета только одну
0
5515 / 2868 / 571
Регистрация: 07.11.2019
Сообщений: 4,758
16.05.2025, 15:11
Nacuott, угол бета это угол между центрами. А геодезическая через центры не проходит.
По сути, надо отобразить отверстия на развертку и искать минимальное растояние между кривыми/отверстиями.
0
1833 / 1027 / 192
Регистрация: 24.02.2013
Сообщений: 3,084
Записей в блоге: 12
16.05.2025, 15:37
Цитата Сообщение от u235 Посмотреть сообщение
Nacuott, угол бета это угол между центрами. А геодезическая через центры не проходит.
По сути, надо отобразить отверстия на развертку и искать минимальное растояние между кривыми/отверстиями.
Если цилиндр с отверстиями развернуть на плоскость, то винтовая (т.е. геодезическая превратится в прямую) и эта прямая пройдет через центры окружностей и через точки на окружностях, находящихся друг от друга на минимальном расстоянии.
0
5515 / 2868 / 571
Регистрация: 07.11.2019
Сообщений: 4,758
16.05.2025, 16:09
Nacuott, нет, окружностей на развертке уже не будет, они превратятся в замкнутые кривые (жестянщики подтвердят). И надо искать минимальное растояние между этими кривыми. С центрами это растояние никак не связано.
0
1833 / 1027 / 192
Регистрация: 24.02.2013
Сообщений: 3,084
Записей в блоге: 12
16.05.2025, 16:38
Цитата Сообщение от u235 Посмотреть сообщение
Nacuott, нет, окружностей на развертке уже не будет, они превратятся в замкнутые кривые (жестянщики подтвердят). И надо искать минимальное растояние между этими кривыми. С центрами это растояние никак не связа
Да у Вас мощные аргументы- апелляция к жестянщикам.
Неважно, что окружности превратятся в эллипсы, прямая пройдет через точки эллипсов, расстояние между которыми минимально.
0
5515 / 2868 / 571
Регистрация: 07.11.2019
Сообщений: 4,758
16.05.2025, 16:58
Nacuott, это даже не эллипсы будут.
Возьмите простой случай: два одинаковых по диаметру цилиндра, пересекающиеся под углом 90 градусов.
На развертке линия их пересечения будет состоять из участков двух синусоид. Какой же это эллипс?
Цитата Сообщение от Nacuott Посмотреть сообщение
прямая пройдет через точки эллипсов, расстояние между которыми минимально.
Именно это я и говорил.
Даже если (допустим) это эллипсы. Задача сведется к тому, чтобы найти минимальное расстояние между двумя эллипсами на плоскости. Она не решается аналитически, только численно. И этот отрезок минимальной длины не будет находиться на прямой между центрами эллипсов. Это понятно?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.05.2025, 16:58
Помогаю со студенческими работами здесь

Пересчет координат точек поверхности цилиндра
Добрый день. Помогите, пожалуйста в решении задачи: Пересчет координат точек поверхности цилиндра...

Вычислить площадь боковой поверхности криволинейного цилиндра
Вычислить площадь боковой поверхности криволинейного цилиндра,если его основание - четырехугольник...

Найдите площадь боковой поверхности вписанного в параллелепипед цилиндра
Основанием прямого параллелепипеда служит ромб со стороной,равной 4 и углом 60 градусов.Высота...

Найти высоту и площадь боковой поверхности цилиндра
Радиус цилиндра равен 2,его высота- x, площадь боковой поверхности равна y , площадь полной...

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru