393 / 193 / 48
Регистрация: 11.07.2013
Сообщений: 1,198
|
|
Как найти координату Z по известным X и Y?15.11.2017, 23:00. Показов 15641. Ответов 16
Метки нет Все метки)
(
Заданы координаты X, Y и Z вершин треугольника ABC, расположенного в пространстве. На плоскости треугольника лежит точка H, координаты которой X и Y известны. Как определить координату Z этой точки?
На рисунке желтым цветом обозначен треугольник, серым - его проекция, красным - точка, а зелёным её проекция. Желательно алгоритм должен иметь минимально возможное количество вычислений и без использования извлечения корня, т.к. в дальнейшем алгоритм планируется использовать в программе для вычисления нескольких сотен миллионов точек, а извлечение корня снижает быстродействие.
0
|
15.11.2017, 23:00 | |
Ответы с готовыми решениями:
16
Как найти угол между двумя прямыми на плоскости по известным точкам
|
![]() ![]() |
|
15.11.2017, 23:19 | |
Радикалы не нужны здесь. Но матрицы хоть можно умножать? А брать обратную?
Если есть встроенная операция взятия обратной матрицы (как в Матлабе, например), то
2
|
![]() ![]() |
|
16.11.2017, 00:15 | |
![]()
1
|
393 / 193 / 48
Регистрация: 11.07.2013
Сообщений: 1,198
|
|
16.11.2017, 21:23 [ТС] | |
jogano попытался воспользоваться советом murom2013 (правда, пришлось вспоминать курс 10-го класса, а это было лет так более 40 назад). Получилось, но слишком много вычислений для каждой точки (нужен более быстрый алгоритм).
Воспользоваться вашим советом не смог. Просмотрел справочники по математике, но самое первое действие - умножение вектора на матрицу считается недопустимым ( матрицу на вектор умножать можно, а вектор на матрицу - нет). К стати, мой вопрос "а горизонтальная черта..." вполне справедлив, т.к. в моё время вектора обозначались верхней стрелкой. Не исключено, что не прав я... Прошу, если это вам не сложно, проконсультировать. Среднюю часть - матрицу возвожу в -1 степень, умножаю на правую. Однако, куда "прикрутить" левую часть - ничего не получается... Ваше замечание хочу оспорить. Хорошая была советская школа, если я смог вспомнить через столько лет матрицы..., если учесть, что с тех пор ни разу ими пользоваться, как и многими другими разделами математики, не приходилось. Хотелось бы вспомнить один анегдот: "Внук спрашивает у деда: Дед, а тебе в жизни интеграл пригодился? Да, внучек. Один раз уронил ключи в туалет, пришлось проволоку согнуть интегралом..."
0
|
![]() ![]() |
|
16.11.2017, 22:08 | |
Можно умножать две матрицы (а вектор - частный случай матрицы) по правилу "строка левой матрицы умножается на столбец правой матрицы, при этом количество элементов и в строке, и в столбце, должно быть одинаковым". Произведение i-й строки 1-й матрицы на j-й столбец 2-й матрицы даст элемент cij матрицы результата.
Т.е. можно: - умножать вектор-строку на матрицу (с тем же количеством строк, что и элементов у вектора). Результат - вектор-строка. или - умножать матрицу на вектор-столбец (с тем же количеством элементов, что и столбцов в матрице). Результат - вектор-столбец. И так, и так можно. Это условное обозначение. Находите обратную матрицу. Для матриц 2-го порядка это делается просто: Умножить матрицу на число означает умножить каждый её элемент на это число. Смотря где вы это считать будете, все эти сотни миллионов точек. Не руками же. Я не знаю, какие функции вам доступны. В Матлабе, например, есть функция inv(...), которая считает обратную матрицу - не нужно расписывать всё для пользователей бухгалтерского калькулятора. А у вас что есть?
1
|
17.11.2017, 01:16 | |
![]() Решение
Вот пример как решать задачу, имея понятие о векторах и решении системы двух уравнений с двумя неизвестными.
См.картинку.
1
|
![]() ![]() |
|
17.11.2017, 01:28 | |
0
|
393 / 193 / 48
Регистрация: 11.07.2013
Сообщений: 1,198
|
||||||
17.11.2017, 07:45 [ТС] | ||||||
Пишу конвертор STL формата в G-код для управления настольным фрезерным станком. Более подробно здесь: Посоветуйте алгоритм нахождения максимальной высоты Использую IDE Lazarus.
Всем участникам большое спасибо за помощь. Воспользовался вариантом, предложенным Nacuott. Тестовая программа получилась вот так: PointZ.rar Вот так выглядит код:
Тему можно закрывать.
0
|
17.11.2017, 20:21 | |
shyub , неплохо было бы выложить анимацию фрезеровки какой-либо поверхности, чтобы посмотреть визуально - что получается.
0
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|
17.11.2017, 21:01 | |
Может лучше поискать готовый? Не привязываться к STL в G-код т.к. конвертировать 3д модель можно в разные.
Неужели нет кучи готовых САПР создающих G-код? По первой ссылке в гугле “алгоритм G кода из 3д модели”: “для расчета траектории попытаться освоить MasterCAM, SolidCAM, PowerMill, EdgeCAM или что-то подобное.” “Арткаме задаю обработку по ним и G-код. Арткам вполне достойная программа с множеством возможностей и ее большой плюс- простота в освоении,” Вон некоторые даже берут буфер глубины 3д модели вместо интерполяции Z точки внутри треугольника. Смысл делать велик с нуля?
0
|
393 / 193 / 48
Регистрация: 11.07.2013
Сообщений: 1,198
|
|
18.11.2017, 11:37 [ТС] | |
Пока нечего выкладывать, т.к. пока в стадии разработки.
Готовый - не интересно, да и тем более более-менее нормальные САПР платные. Что касается STL, то это только один из планируемых форматов.
Пытаюсь, но пока ничего хорошего получить не удалось.
0
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|
18.11.2017, 12:38 | |
Вот это единственная и главная причина. Все остальное выдумано.
В гугле набрал “разрядность буфера глубины opengl” http://www.gamedev.ru/code/terms/ZBuffer Ого 24 бита аппаратный…вот вам и интерполятор миллионов треугольников в реальном времени…причем готовый. Боюсь существует ли в мире станок который потянет 24 бита на вашу глубину профиля картины…
1
|
393 / 193 / 48
Регистрация: 11.07.2013
Сообщений: 1,198
|
|
18.11.2017, 19:54 [ТС] | |
Кому интересна эта тема, прошу перейти на ветку Посоветуйте алгоритм нахождения максимальной высоты.
Ущё раз спасибо за оказанную помощь.
0
|
18.11.2017, 19:54 | ||||||
Помогаю со студенческими работами здесь
17
найти координату 3-ей вершины треугольника Найти координату вершины параллелепипеда найти вторую координату отрезка Найти координату Z точки находящейся на плоскости Найти координату вершины в прямоугольном треугольнике Искать еще темы с ответами Или воспользуйтесь поиском по форуму:
|
|
Новые блоги и статьи
![]() |
||||
std::mutex в C++: Советы и примеры использования
bytestream 03.04.2025
std::mutex - это механизм взаимного исключения, который гарантирует, что критический участок кода выполняется только одним потоком в каждый момент времени. Это простое, но могущественное средство. . .
|
Не удержался от оценки концепции двигателя Стирлинга.
Hrethgir 03.04.2025
Сколько не пытался - она выдавала правильные схемы, причём случайно рисовала горячие области в середине, холодные по краям, трубки с краёв в низ и магнит в соединяющей, но при этой выдавала описание. . .
|
Метод с двумя буферами (или double buffering) или ping-pong buffering
Hrethgir 02.04.2025
Из ответов LM модели.
Метод, который предполагает использование двух массивов для хранения промежуточных результатов сложения векторов, обычно применяется в сценариях, где необходимо минимизировать. . .
|
На любовном киберфронте
Alexander-7 01.04.2025
Недавно на одном малоизвестном сайте знакомств мною заинтересовалась девушка:
«Текст немного странный. Но, судя по адресу почты, иностранка», – подумал я. Поколебавшись пару суток, я ответил ей:. . .
|
Как работает Node.js изнутри
run.dev 29.03.2025
Node. js изменил подход к разработке веб-приложений, позволив использовать JavaScript не только на стороне клиента, но и на сервере. Созданный в 2009 году Райаном Далем, этот открытый,. . .
|
Моки в Python: Mock Object Library
py-thonny 29.03.2025
Тестирование кода требует особого подхода, когда речь идёт о компонентах, взаимодействующих с внешним миром. Мы часто сталкиваемся с непредсказуемостью HTTP-запросов, чтением данных из базы или. . .
|
JavaScript: Управление памятью и улучшение производительности
run.dev 29.03.2025
В отличие от низкоуровневых языков программирования, JavaScript не требует ручного выделения и освобождения памяти. Здесь работает автоматический сборщик мусора, который определяет, какие объекты. . .
|
Мультитенантная архитектура со SpringBoot и PostgreSQL
ArchitectMsa 29.03.2025
SaaS-приложения редко обслуживают одного клиента и обычно они должны поддерживать множество организаций, каждая из которых работает в своём изолированном пространстве. Мультитенантная архитектура. . .
|
std::span в C++: Производительность и лучшие практики
NullReferenced 28.03.2025
std::span — одно из самых недооценённых нововведений стандарта C++20, которое радикально меняет подход к работе с непрерывными последовательностями данных. По сути, это невладеющее представление. . .
|
Многопоточность в C#: Threadpool
UnmanagedCoder 28.03.2025
Пул потоков в C# — это коллекция заранее созданных и готовых к использованию потоков, которые находятся в распоряжении приложения. Вместо того чтобы создавать и уничтожать потоки для каждой небольшой. . .
|