Автор Гілка: Цікава задачка :) (Розв'язання буде використано для створення програми)  (Прочитано 27177 раз)

Відсутній HetmanNet

  • Графоман
  • ****
  • дописів: 412
  • Карма: +1/-0
  • Fedora, CentOS, RHEL, KDE
Шановні лінуксоїди і заблудші душі, що не відрізняють Linux від Windows :)

Маю проблему, яку можна описати задачкою:

Є три точки з координатами A(x1,y1,z1), B(x2,y2,z2), C(x3,y3,z3), навколо яких описані сфери з відповідними радіусами r1, r2, r3. Всі сфери пересікаються і мають одну спільну точку D(x,y,z). Маючи координати центрів сфер (точок A,B, C) та радіуси сфер (r1, r2, r3) визначити координати точки D.

Прошу допомогти, бо рішення цієї задачки буде використане для створення однієї цікавої програми, бажано обмежитися тригометричними функціями і т.п..

P.S. Можна рішення, а можна підказати літературу і метод рішення.
« Змінено: 2012-08-13 00:34:37 від ombaranovskyi »
Віддамся на один вечір в хороші дівочі руки.. не дорого, в у.о. .. Якщо сподобається, то залишуся безкоштовно назавжди..

r00t x

  • Гість
а-а-а, шкода я тригноматики не знаю  :-[

А задачка дійсно цікава! Суть задачі зрозумів, а от для чого і як це використовується  в програмі?  :-/ і в якій програмі?

Відсутній HetmanNet

  • Графоман
  • ****
  • дописів: 412
  • Карма: +1/-0
  • Fedora, CentOS, RHEL, KDE
а-а-а, шкода я тригноматики не знаю  :-[
А задачка дійсно цікава! Суть задачі зрозумів, а от для чого і як це використовується  в програмі?  :-/ і в якій програмі?
Ну от, як матиму рішення, розповім і пакажу для чого :) Але скажу одразу, програмка цікава і незвична, тай буде дуже корисною в деяких випадках.
« Змінено: 2012-08-12 21:24:32 від HetmanNet »
Віддамся на один вечір в хороші дівочі руки.. не дорого, в у.о. .. Якщо сподобається, то залишуся безкоштовно назавжди..

Відсутній Re.

  • Загальний модератор
  • Літератор
  • *****
  • дописів: 1898
  • Карма: +1/-0
По-перше, прочитайте правила, пункт 3. Наступного разу буду санкції робити, якщо не дослухаєтесь.
По-друге, умова:
Всі сфери пересікаються і мають одну спільну точку D(x,y,z).
Вона дуже дивна, бо дуже малоймовірна в реальному середовищі. Якщо точка точно одна, то вам потрібно просто знайти спільне значення діапазонів A,B,C. Діапазон, наприклад: числа від x1-r1 до x1+r1 для x1 в A, відповідно так само x2, x3. Аналогічно так само y і z. Ці спільні значення і будуть координат D. Десь так.
« Змінено: 2012-08-12 22:35:21 від Re. »

Відсутній peinguin

  • Літератор
  • ******
  • дописів: 1419
  • Карма: +0/-0
якщо точка перетину дійсно одна, то тут навіть радіуси не треба
Треба просто провести бісектриси з усих кутів. І де перетнуться - там і є шукана точка - де пересікаються всі сфери.

Відсутній Михайло Даниленко

  • Адміністратор ЩОДО
  • Літератор
  • *****
  • дописів: 1262
  • Карма: +0/-0
  • [Debian Stretch]
Діапазон, наприклад: числа від x1-r1 до x1+r1 для x1 в A, відповідно так само x2, x3. Аналогічно так само y і z. Ці спільні значення і будуть координат D. Десь так.
Мені здається, що це не спрацює — ви, здається, шукаєте перетин кубів.

Я б спробував танцювати від площини, проведеної через ці три точки — спільна точка (якщо вона точно одна, а не дві) буде лежати на ній.

P.S. I моє припущення теж неправильне :(

P.P.S. А ні, вірне.
Якщо всі три сфери перетинаються лише у одній точці, то принаймні дві з них мають лише дотикатися (інакше точок перетину буде дві). Якщо вони дотикаються, то ця єдина точка дотику лежить на лінії, що проходить через їх центри, а лінія не може не належати до площини, проведеної через ці точки.
Власне, маємо два випадки: коли одна сфера знаходиться усередині іншої, або коли ззовні. Якщо усередині — треба шукати різницю радіусів і порівнювати з відстанню між точками, якщо ззовні — то суму радіусів. Після цього вирахувати положення точки вже неважко.


P.P.P.S. Ні, навіть не так.
Коли дві сфери перетинаються, маємо коло або точку, що лежить на сфері. Отож, в нашому випадку, маємо два кола (або коло і точку, або точку і точку), що лежать на одній сфері. Щоб була одна точка дотику всіх трьох сфер, потрібно, щоб ці кола дотикалися.
Якщо вони дотикаються, то їх центри (у площині сфери) і точка дотику лежать на одній лінії (знов-таки, у площині сфери).
На жаль, зараз не приходить в голову, як просто довести, що ця лінія є екватором, але якщо собі уявити ці два кільця на сфері, то неважко зрозуміти, що це так.
Через центри цих кіл проходять лінії, що проходять через центри сфер, що перетинаються по відповідному колу. Отож площина "екватору" співпадає з площиною трьох точок. Точка дотику кіл знаходиться "екваторі", тож належить цій площині.
« Змінено: 2012-08-12 23:45:14 від ISBear »

Відсутній peinguin

  • Літератор
  • ******
  • дописів: 1419
  • Карма: +0/-0
просто знайти спільне значення діапазонів A,B,C.
Я думаю - кількість елементів в діапазоні рівна континіуму. Так що перебір не варіант.
Це задача скоріш аналітичної, а не дискретної геометрії.

Відсутній Михайло Даниленко

  • Адміністратор ЩОДО
  • Літератор
  • *****
  • дописів: 1262
  • Карма: +0/-0
  • [Debian Stretch]
Треба просто провести бісектриси з усих кутів. І де перетнуться - там і є шукана точка - де пересікаються всі сфери.
Мені здається, це теж не спрацює. Приклад у долученому зображенні. (показаний перетин по площині, що проходить через три точки).

Відсутній Re.

  • Загальний модератор
  • Літератор
  • *****
  • дописів: 1898
  • Карма: +1/-0
Мені здається, що це не спрацює — ви, здається, шукаєте перетин кубів.
А сфера з однією спільною точкою, це не одне і те ж?
Я думаю - кількість елементів в діапазоні рівна континіуму. Так що перебір не варіант.
Якщо радіус дорівнює континууму, тоді так. Але в такому випадку я однаково не бачу, як це можна обрахувати без перебирання, ви ж однаково шукаєте точку в площині. Я, звісно, можу помилятись, але поки що не бачу можливості розв'язати задачу вашим способом.

Відсутній Михайло Даниленко

  • Адміністратор ЩОДО
  • Літератор
  • *****
  • дописів: 1262
  • Карма: +0/-0
  • [Debian Stretch]
А сфера з однією спільною точкою, це не одне і те ж?
Ні. дивіться малюнок — за вашим алгоритмом (якщо я правильно розумію задачу) усі точки простору з сірого прямокутника (плюс z-координата) будуть спільними.

Відсутній HetmanNet

  • Графоман
  • ****
  • дописів: 412
  • Карма: +1/-0
  • Fedora, CentOS, RHEL, KDE
Вона дуже дивна, бо дуже малоймовірна в реальному середовищі.
Не така вже малоймовірна, але дивна, бо потреби в її розв'язані дуже рідко мають.  ;) Переважно її вирішують з використанням лише двох вісей координат (ігноруючи третю), але при потребі мати точніші координати - використовують три.
Віддамся на один вечір в хороші дівочі руки.. не дорого, в у.о. .. Якщо сподобається, то залишуся безкоштовно назавжди..

Відсутній Re.

  • Загальний модератор
  • Літератор
  • *****
  • дописів: 1898
  • Карма: +1/-0
Ні. дивіться малюнок — за вашим алгоритмом (якщо я правильно розумію задачу) усі точки простору з сірого прямокутника (плюс z-координата) будуть спільними.
Так, але умова така, що спільна точка одна, навіть із z.

Відсутній Михайло Даниленко

  • Адміністратор ЩОДО
  • Літератор
  • *****
  • дописів: 1262
  • Карма: +0/-0
  • [Debian Stretch]
Так, але умова така, що спільна точка одна, навіть із z.
А на малюнку саме так. Умова що всі три сфери перетинаються у цій точці. Інакше кажучи, дві сфери можуть перетинатися між собою скільки завгодно, рахується лише точка, де перетинаються всі три сфери.

Ви ж розглядаєте координати окремо, єдиний випадок, коли ви зможете визначити одну точку — якщо куби, описані навколо цих кіл мають зовнішнє дотикання. У цьому випадку — сфери точно не перетинатимуться.

P.S. Вибачаюся за якість малюнків — у мене в цьому плані гіпер-криві руки, плюс малюю тачпадом.
P.P.S. До речі — ніхто не знає якоїсь тулзи для побудови геометричних ілюстрацій?
« Змінено: 2012-08-13 00:09:59 від ISBear »

Відсутній Олександр Барановський

  • Модератор дошки
  • Графоман
  • *****
  • дописів: 366
  • Карма: +0/-0
Якщо точка належить трьом сферам одночасно, то її координати задовольняють рівняння усіх трьох сфер.
У своїх заявках дехто з науковців описував, якими корисними будуть їхні заплановані дослідження для національних інтересів, тоді як насправді ними рухала щира наукова допитливість і бажання написати пару статей.
Станіслав М. Улям, «Пригоди математика»

Відсутній Олександр Барановський

  • Модератор дошки
  • Графоман
  • *****
  • дописів: 366
  • Карма: +0/-0
До речі — ніхто не знає якоїсь тулзи для побудови геометричних ілюстрацій?
Наведені вище ілюстрації, можливо, буде зручно будувати за допомогою PGF/TikZ або Asymptote.

Перше я пробував, але не для таких зображень. Непросто, але коли розібрався, то зручно. Оскільки мені потрібні були ілюстрації, які будуть використовуватися з LaTeXом, то навіть дуже зручно.
У своїх заявках дехто з науковців описував, якими корисними будуть їхні заплановані дослідження для національних інтересів, тоді як насправді ними рухала щира наукова допитливість і бажання написати пару статей.
Станіслав М. Улям, «Пригоди математика»