1470 / 825 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
1

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

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

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

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

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

И вроде выглядит намного проще чем методы по ссылке выше.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.06.2015, 23:54
Ответы с готовыми решениями:

Почему Math.round(Math.random() * (max - min) дает неравномерное распределение?
Если min - 0, а max - целое. Рекомендуют Math.floor(Math.random() * (max - min + 1)) вместо...

math или не math?! вот в чем вопрос...
Доброго времени суток! Пипл подскажите у вас в VS в math.h есть такие функции, как: round trunc...

Заменить Math.Min, Math.Max операторами if-else
Доброго времени. Как можно условия формул (Math.Min,Math.Max) заменить операторами if. Как в итоге...

Windows Form Math:: или Math
Добрый день! Подскажите пожалуйста как подключить библиотеку Math или написсать namespace что бы в...

11
Эксперт С++
4978 / 3085 / 456
Регистрация: 10.11.2010
Сообщений: 11,164
Записей в блоге: 10
30.06.2015, 02:42 2
Подожди до завтра... Подумаем что можно сделать.
0
Don't worry, be happy
17752 / 10522 / 2028
Регистрация: 27.09.2012
Сообщений: 26,497
Записей в блоге: 1
30.06.2015, 05:20 3
Лучший ответ Сообщение было отмечено castaway как решение

Решение

boost::geometry??
Ну и конкретно boost::geometry::distance
Calculate the distance of two geometries.
1
1470 / 825 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
30.06.2015, 10:55  [ТС] 4
Найдено решение с помощью подсказки программиста и википедии =).
Первый способ решения:
Переход к параметрической форме задания прямой в 100 раз упрощает расчет.
https://www.cyberforum.ru/cgi-bin/latex.cgi?Xa,Ya,Za первая точка прямой
https://www.cyberforum.ru/cgi-bin/latex.cgi?Xb,Yb,Zb, вторая
https://www.cyberforum.ru/cgi-bin/latex.cgi?Xc,Yc,Zc точка из которой перпендикуляр на прямую

https://www.cyberforum.ru/cgi-bin/latex.cgi?Ax=Xb-Xa
https://www.cyberforum.ru/cgi-bin/latex.cgi?Ay=Yb-Ya
https://www.cyberforum.ru/cgi-bin/latex.cgi?Az=Zb-Za
https://www.cyberforum.ru/cgi-bin/latex.cgi?tmin=(Ax(Xc-Xa)+Ay(Yc-Ya)+Az(Zc-Za))/(Ax^2+Ay^2+Az^2)
Затем https://www.cyberforum.ru/cgi-bin/latex.cgi?tmin подставляем даст XYZ перпендикуляра на прямой.
https://www.cyberforum.ru/cgi-bin/latex.cgi?X=Xa+Ax*tmin<br />
Y=Ya+Ay*tmin<br />
Z=Za+Az*tmin
И координаты дает, и расстояния найти легко...красота.
Теперь попробую еще одну подсказку с помощью сферы, если осилю. Наверно этот метод еще быстрей.
0
Эксперт С++
4978 / 3085 / 456
Регистрация: 10.11.2010
Сообщений: 11,164
Записей в блоге: 10
30.06.2015, 11:02 5
Excalibur921, совсем забыл про boost::geometry. Думаю это именно то, что ты искал.
0
1470 / 825 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
30.06.2015, 11:31  [ТС] 6
А вдруг они там считали как умники из первой ссылки что я кидал? В любом случае параметрический наверно самый быстрый из всех. Да и формулы что я привел это универсальный алгоритм может быть для любого языка программирования в мире или программы. По хорошему эту тему бы в Алгоритмы кинуть.
0
Эксперт С++
4978 / 3085 / 456
Регистрация: 10.11.2010
Сообщений: 11,164
Записей в блоге: 10
30.06.2015, 12:03 7
Цитата Сообщение от Excalibur921 Посмотреть сообщение
А вдруг они там считали как умники из первой ссылки что я кидал?
Ты просил библиотеку - вот она, boost::geometry.
А производительность ты можешь и сам проверить. Не думаю что такой простой алгоритм будет плохо реализован в данной библиотеке. В конце концов исходники открыты.
0
1470 / 825 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
30.06.2015, 12:27  [ТС] 8
Судя по ссылкам выше+ куче дублей в инете с заумными методами… думаете там быстрый? А вот это вопрос экспертам с++ и математикам. Хотите гляньте, и нам расскажете =).Может причина сложных методов по ссылке что я кидал в том, что там именно требование решать таким неудобным методом чтобы обучить математике, а не использовать ее правильно и писать быстрый код. Скорость алгоритмов для гуру, хотите раскрутите чей быстрей. Но все это уже немного офтоп, библиотеку подсказали, велосипед ТС накатал, решай не хочу =).
0
Эксперт С++
4978 / 3085 / 456
Регистрация: 10.11.2010
Сообщений: 11,164
Записей в блоге: 10
30.06.2015, 12:31 9
Мне это не интересно, если это не интересно никому, особенно ТС
0
Don't worry, be happy
17752 / 10522 / 2028
Регистрация: 27.09.2012
Сообщений: 26,497
Записей в блоге: 1
30.06.2015, 13:10 10
Цитата Сообщение от Excalibur921 Посмотреть сообщение
Но все это уже немного офтоп, библиотеку подсказали, велосипед ТС накатал, решай не хочу =).
велосипед
1
castaway
30.06.2015, 13:35
  #11

Не по теме:

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

0
Эксперт С++
3218 / 1745 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
30.06.2015, 13:46 12
М-да, доучились, высоту параллелограмма уже вычислить проблема...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.06.2015, 13:46
Помогаю со студенческими работами здесь

Почему Math.sin(Math.PI) не равно 0?
Почему Math.sin(Math.PI)=1.2246467991473532e-16 ? Хотя синус от Пи должно быть равным нулю.

Программа для геометрии
Всех приветствую ! Подскажите пожалуйста, есть ли программа для геометрических задач ? чтобы можно...

Float и метод Math.Ceiling и Math.Round? как округлить float?
Согласно документации Microsoft метод Math.Ceiling и Math.Round не работает с float , а только с...

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


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru