Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Excalibur921
647 / 355 / 57
Регистрация: 12.10.2013
Сообщений: 2,502
#1

Подобие math.h для геометрии - C++

29.06.2015, 23:54. Просмотров 546. Ответов 11
Метки нет (Все метки)

Существуют ли такие библиотеки? И где их взять..
Например, нужно найти расстояние от точки до прямой заданной двумя точками в 3д.
А нет ли высокоуровневой функции типа вход 9 чисел( XYZ для 3 точек) выход координаты точки перпендикуляра опущенного на прямую. Чтобы потом найти расстояние от точки до прямой.

Добавлено через 1 час 8 минут
Но неужели всегда пишут велосипед? Не верю… Пример решения внизу страницы.
http://www.cleverstudents.ru/line_an...t_to_line.html
Предложили все 3 точки рассматривать в одной плоскости абстрактно.

Думаю так:
1)формула высоты треугольника дает координаты точки перпендикуляра зная длинны сторон?
1.1)или координаты перпендикуляра на луч в 2д(была формула где то)
3)находим длину отрезка до точки перпендикуляра
4)продолжаем прямую на заданный отрезок получаем XYZ.Понятия не имею как это векторы наверно лучше брать чем искать 3 угла через Эйлера неудобно.

И вроде выглядит намного проще чем методы по ссылке выше.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.06.2015, 23:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Подобие math.h для геометрии (C++):

Задачка по Геометрии - C++
В трехмерном пространстве, шарик диаметра d1 перемещают из точки x1, y1, z1 в точку x2, y2, z2. Но возможно на этом отрезке, шарик...

Не работает math.h - C++
Почему-то мнения функций этой библиотеки сильно расходятся с мнениями моего калькулятора. По крайней мере функции синуса косинуса и...

<iostream.h> и <math.h> - C++
Вопрос такого плана: прописываю дериктивы 1. #include &lt;iosteram.h&gt; - все функции работают или такое #include &lt;iosteram&gt; ...

Аргтансенс в Math - C++
Никак не могу добиться правильного значения значения atan(0,75) пробовал перевод в градусы и в радианы, получается все равно не то, что-то...

Функция ceil() (math) - C++
Почему ceil(23.2); это 24, но ceil(2320/100); это 23?

Математические функции math.h - C++
Не работают стандартные функции библиотеки &lt;math.h&gt; Ну, например: #include &lt;cmath&gt; #include &lt;iostream&gt; using namespace std; ...

11
castaway
Эксперт С++
4884 / 3019 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
30.06.2015, 02:42 #2
Подожди до завтра... Подумаем что можно сделать.
0
Croessmah
Эксперт CЭксперт С++
13415 / 7568 / 855
Регистрация: 27.09.2012
Сообщений: 18,631
Записей в блоге: 3
Завершенные тесты: 1
30.06.2015, 05:20 #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
boost::geometry??
Ну и конкретно boost::geometry::distance
Calculate the distance of two geometries.
1
Excalibur921
647 / 355 / 57
Регистрация: 12.10.2013
Сообщений: 2,502
30.06.2015, 10:55  [ТС] #4
Найдено решение с помощью подсказки программиста и википедии =).
Первый способ решения:
Переход к параметрической форме задания прямой в 100 раз упрощает расчет.
http://www.cyberforum.ru/cgi-bin/latex.cgi?Xa,Ya,Za первая точка прямой
http://www.cyberforum.ru/cgi-bin/latex.cgi?Xb,Yb,Zb, вторая
http://www.cyberforum.ru/cgi-bin/latex.cgi?Xc,Yc,Zc точка из которой перпендикуляр на прямую

http://www.cyberforum.ru/cgi-bin/latex.cgi?Ax=Xb-Xa
http://www.cyberforum.ru/cgi-bin/latex.cgi?Ay=Yb-Ya
http://www.cyberforum.ru/cgi-bin/latex.cgi?Az=Zb-Za
http://www.cyberforum.ru/cgi-bin/latex.cgi?tmin=(Ax(Xc-Xa)+Ay(Yc-Ya)+Az(Zc-Za))/(Ax^2+Ay^2+Az^2)
Затем http://www.cyberforum.ru/cgi-bin/latex.cgi?tmin подставляем даст XYZ перпендикуляра на прямой.
http://www.cyberforum.ru/cgi-bin/latex.cgi?X=Xa+Ax*tmin<br />
Y=Ya+Ay*tmin<br />
Z=Za+Az*tmin
И координаты дает, и расстояния найти легко...красота.
Теперь попробую еще одну подсказку с помощью сферы, если осилю. Наверно этот метод еще быстрей.
0
castaway
Эксперт С++
4884 / 3019 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
30.06.2015, 11:02 #5
Excalibur921, совсем забыл про boost::geometry. Думаю это именно то, что ты искал.
0
Excalibur921
647 / 355 / 57
Регистрация: 12.10.2013
Сообщений: 2,502
30.06.2015, 11:31  [ТС] #6
А вдруг они там считали как умники из первой ссылки что я кидал? В любом случае параметрический наверно самый быстрый из всех. Да и формулы что я привел это универсальный алгоритм может быть для любого языка программирования в мире или программы. По хорошему эту тему бы в Алгоритмы кинуть.
0
castaway
Эксперт С++
4884 / 3019 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
30.06.2015, 12:03 #7
Цитата Сообщение от Excalibur921 Посмотреть сообщение
А вдруг они там считали как умники из первой ссылки что я кидал?
Ты просил библиотеку - вот она, boost::geometry.
А производительность ты можешь и сам проверить. Не думаю что такой простой алгоритм будет плохо реализован в данной библиотеке. В конце концов исходники открыты.
0
Excalibur921
647 / 355 / 57
Регистрация: 12.10.2013
Сообщений: 2,502
30.06.2015, 12:27  [ТС] #8
Судя по ссылкам выше+ куче дублей в инете с заумными методами… думаете там быстрый? А вот это вопрос экспертам с++ и математикам. Хотите гляньте, и нам расскажете =).Может причина сложных методов по ссылке что я кидал в том, что там именно требование решать таким неудобным методом чтобы обучить математике, а не использовать ее правильно и писать быстрый код. Скорость алгоритмов для гуру, хотите раскрутите чей быстрей. Но все это уже немного офтоп, библиотеку подсказали, велосипед ТС накатал, решай не хочу =).
0
castaway
Эксперт С++
4884 / 3019 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
30.06.2015, 12:31 #9
Мне это не интересно, если это не интересно никому, особенно ТС
0
Croessmah
Эксперт CЭксперт С++
13415 / 7568 / 855
Регистрация: 27.09.2012
Сообщений: 18,631
Записей в блоге: 3
Завершенные тесты: 1
30.06.2015, 13:10 #10
Цитата Сообщение от Excalibur921 Посмотреть сообщение
Но все это уже немного офтоп, библиотеку подсказали, велосипед ТС накатал, решай не хочу =).
велосипед
1
castaway
30.06.2015, 13:35
  #11

Не по теме:

Croessmah, еще не смотрел эту серию

0
Mr.X
Эксперт С++
3049 / 1694 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
30.06.2015, 13:46 #12
М-да, доучились, высоту параллелограмма уже вычислить проблема...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.06.2015, 13:46
Привет! Вот еще темы с ответами:

Работа с библиотекой math.h - C++
Задача звучит так: найти f(x) при x=0.7 и остаток от деления f(x) на g(x). Среда Borland C++ 3.1 #include &lt;stdio.h&gt; #include...

math.h тригонометрические функции - C++
Приветствую. Ребят, такой вопрос возник..работал, работал..потом решил проверить..и смотрю, что sin() выводит какие-то бредовые значения,...

math.h перегруженная функция - C++
sqrt , pow - существует более одного экземпляра перегруженная функция &quot;pow/sqrt&quot;,соответствующего списку аргументов В коде программы: ...

Подобие графа - C++
Имеется примерно такой вот класс: class Room { private: string name; string story; vector &lt;Room*&gt; rooms; //указатели,...


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

Или воспользуйтесь поиском по форуму:
12
Yandex
Объявления
30.06.2015, 13:46
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru