Форум программистов, компьютерный форум, киберфорум
Геометрия
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/75: Рейтинг темы: голосов - 75, средняя оценка - 4.75
393 / 193 / 48
Регистрация: 11.07.2013
Сообщений: 1,198

Как найти координату Z по известным X и Y?

15.11.2017, 23:00. Показов 15641. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Заданы координаты X, Y и Z вершин треугольника ABC, расположенного в пространстве. На плоскости треугольника лежит точка H, координаты которой X и Y известны. Как определить координату Z этой точки?
Как найти координату Z по известным X и Y?

На рисунке желтым цветом обозначен треугольник, серым - его проекция, красным - точка, а зелёным её проекция.
Желательно алгоритм должен иметь минимально возможное количество вычислений и без использования извлечения корня, т.к. в дальнейшем алгоритм планируется использовать в программе для вычисления нескольких сотен миллионов точек, а извлечение корня снижает быстродействие.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.11.2017, 23:00
Ответы с готовыми решениями:

Как найти другую координату этой хорды?
Есть окружность с диаметром 4 и центром в точке (0;2) и проведена хорда длинной 2 из точки (0;0) как найти другую координату этой хорды?

Как найти угол между двумя прямыми на плоскости по известным точкам
Есть 2 прямые, для которых известна точка пересечения и еще по одной точке для каждой прямой. Например, прямая А проходит через 2 точки...

Найти угол между стороной АВ и медианой, проведенной из вершины В. Найти третью координату вектора с
1.Даны 2 вектора AB={-4;8;-1} и BC={-2;16;1}, совпадающие со сторонами треугольника АВС. Найти угол между стороной АВ и медианой,...

16
 Аватар для murom2013
386 / 180 / 42
Регистрация: 20.02.2013
Сообщений: 470
15.11.2017, 23:16
Векторы AH, BH и CH компланарны. Их смешанное произведение равно нулю. Никаких корней, все линейно.
2
Эксперт по математике/физике
 Аватар для jogano
6358 / 4065 / 1512
Регистрация: 09.10.2009
Сообщений: 7,550
Записей в блоге: 4
15.11.2017, 23:19
Радикалы не нужны здесь. Но матрицы хоть можно умножать? А брать обратную?
Если есть встроенная операция взятия обратной матрицы (как в Матлабе, например), то
https://www.cyberforum.ru/cgi-bin/latex.cgi?z_H=\bar{\left(z_B-z_A, z_C-z_A \right)} \cdot \begin{pmatrix}x_B-x_A & x_C-x_A \\ y_B-y_A & y_C-y_A \end{pmatrix}^{-1}\cdot \begin{pmatrix}x_H\\ y_H\end{pmatrix}
2
393 / 193 / 48
Регистрация: 11.07.2013
Сообщений: 1,198
16.11.2017, 00:10  [ТС]
Цитата Сообщение от murom2013 Посмотреть сообщение
Векторы AH, BH и CH компланарны. Их смешанное произведение равно нулю. Никаких корней, все линейно.
Спасибо. Если можно, то подробнее, типа: Hz=(Ax+Bx) и т.п.

Добавлено через 2 минуты
jogano, а горизонтальная черта - это корень квадратный из Zb - Za*Zc - Za ?
0
28 / 26 / 3
Регистрация: 10.07.2014
Сообщений: 687
16.11.2017, 00:14
Можно решить через уравнение плоскости.
0
Эксперт по математике/физике
 Аватар для jogano
6358 / 4065 / 1512
Регистрация: 09.10.2009
Сообщений: 7,550
Записей в блоге: 4
16.11.2017, 00:15
Цитата Сообщение от shyub Посмотреть сообщение
а горизонтальная черта - это корень квадратный из Zb - Za*Zc - Za ?
Горизонтальная черта - это обозначение двумерного вектора (кого делает наша школа?), запятой отделены его координаты. А справа вектор-столбец (тоже двумерный).
1
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
16.11.2017, 19:21
Может если H в 2д задать через “деление отрезка в заданном соотношении” или “кривые безье 1 ст.( отрезок) “.
То можно найти Zh в 3д быстрей?
Название: ScreenShot01056.jpg
Просмотров: 202

Размер: 15.3 Кб
0
393 / 193 / 48
Регистрация: 11.07.2013
Сообщений: 1,198
16.11.2017, 21:23  [ТС]
jogano попытался воспользоваться советом murom2013 (правда, пришлось вспоминать курс 10-го класса, а это было лет так более 40 назад). Получилось, но слишком много вычислений для каждой точки (нужен более быстрый алгоритм).
Воспользоваться вашим советом не смог. Просмотрел справочники по математике, но самое первое действие - умножение вектора на матрицу считается недопустимым ( матрицу на вектор умножать можно, а вектор на матрицу - нет). К стати, мой вопрос "а горизонтальная черта..." вполне справедлив, т.к. в моё время вектора обозначались верхней стрелкой. Не исключено, что не прав я...
Прошу, если это вам не сложно, проконсультировать. Среднюю часть - матрицу возвожу в -1 степень, умножаю на правую. Однако, куда "прикрутить" левую часть - ничего не получается...
Ваше замечание
Цитата Сообщение от jogano Посмотреть сообщение
(кого делает наша школа?)
хочу оспорить. Хорошая была советская школа, если я смог вспомнить через столько лет матрицы..., если учесть, что с тех пор ни разу ими пользоваться, как и многими другими разделами математики, не приходилось. Хотелось бы вспомнить один анегдот: "Внук спрашивает у деда: Дед, а тебе в жизни интеграл пригодился? Да, внучек. Один раз уронил ключи в туалет, пришлось проволоку согнуть интегралом..."
0
Эксперт по математике/физике
 Аватар для jogano
6358 / 4065 / 1512
Регистрация: 09.10.2009
Сообщений: 7,550
Записей в блоге: 4
16.11.2017, 22:08
Цитата Сообщение от shyub Посмотреть сообщение
матрицу на вектор умножать можно, а вектор на матрицу - нет
Можно умножать две матрицы (а вектор - частный случай матрицы) по правилу "строка левой матрицы умножается на столбец правой матрицы, при этом количество элементов и в строке, и в столбце, должно быть одинаковым". Произведение i-й строки 1-й матрицы на j-й столбец 2-й матрицы даст элемент cij матрицы результата.
Т.е. можно:
- умножать вектор-строку на матрицу (с тем же количеством строк, что и элементов у вектора). Результат - вектор-строка.
или
- умножать матрицу на вектор-столбец (с тем же количеством элементов, что и столбцов в матрице). Результат - вектор-столбец.
Цитата Сообщение от shyub Посмотреть сообщение
т.к. в моё время вектора обозначались верхней стрелкой. Не исключено, что не прав я...
И так, и так можно.
Цитата Сообщение от shyub Посмотреть сообщение
Среднюю часть - матрицу возвожу в -1 степень,
Это условное обозначение. Находите обратную матрицу. Для матриц 2-го порядка это делается просто:
https://www.cyberforum.ru/cgi-bin/latex.cgi?\begin{pmatrix}a & b\\ c & d\end{pmatrix}^{-1}=\frac{1}{ad-bc}\begin{pmatrix}d & -b\\ -c & a\end{pmatrix}
Умножить матрицу на число означает умножить каждый её элемент на это число.
Смотря где вы это считать будете, все эти сотни миллионов точек. Не руками же. Я не знаю, какие функции вам доступны. В Матлабе, например, есть функция inv(...), которая считает обратную матрицу - не нужно расписывать всё для пользователей бухгалтерского калькулятора. А у вас что есть?
1
1820 / 1013 / 188
Регистрация: 24.02.2013
Сообщений: 3,014
Записей в блоге: 12
17.11.2017, 01:16
Лучший ответ Сообщение было отмечено shyub как решение

Решение

Вот пример как решать задачу, имея понятие о векторах и решении системы двух уравнений с двумя неизвестными.
См.картинку.
Миниатюры
Как найти координату Z по известным X и Y?  
1
Эксперт по математике/физике
 Аватар для jogano
6358 / 4065 / 1512
Регистрация: 09.10.2009
Сообщений: 7,550
Записей в блоге: 4
17.11.2017, 01:28
Nacuott, можно, конечно, и так. Один раз. Но
Цитата Сообщение от shyub Посмотреть сообщение
алгоритм планируется использовать в программе для вычисления нескольких сотен миллионов точек
. В Маткаде? Без программирования?
0
393 / 193 / 48
Регистрация: 11.07.2013
Сообщений: 1,198
17.11.2017, 07:45  [ТС]
Цитата Сообщение от jogano Посмотреть сообщение
В Маткаде? Без программирования?
Пишу конвертор STL формата в G-код для управления настольным фрезерным станком. Более подробно здесь: Посоветуйте алгоритм нахождения максимальной высоты Использую IDE Lazarus.

Всем участникам большое спасибо за помощь.
Воспользовался вариантом, предложенным Nacuott.
Тестовая программа получилась вот так: PointZ.rar
Вот так выглядит код:
Delphi Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
procedure TForm1.PointHZ();
var
  Ax, Ay, Az: Single;
  Bx, By, Bz: Single;
  Cx, Cy, Cz: Single;
  Dx, Dy, Dz: Single;
  e, f: Single;
begin
  Ax:=M[0].X; Ay:=M[0].Y; Az:=M[0].Z;
  Bx:=M[1].X; By:=M[1].Y; Bz:=M[1].Z;
  Cx:=M[2].X; Cy:=M[2].Y; Cz:=M[2].Z;
  Dx:=M[3].X; Dy:=M[3].Y; Dz:=M[3].Z;
  Ax:=Ax-Bx; Ay:=Ay-By; Az:=Az-Bz;
  Cx:=Cx-Bx; Cy:=Cy-By; Cz:=Cz-Bz;
  f:=(Ax*(Dy-By)-Ay*(Dx-Bx))/(Ax*Cy-Ay*Cx);
  e:=(Dx-Cx*f-Bx)/Ax;
  Dz:=Az*e+Cz*f+Bz;
  M[4].Z:=Dz;
end;
Следующим этапом будет определение того же параметра, но для треугольников, расположенных на сферической поверхности.
Тему можно закрывать.
0
1820 / 1013 / 188
Регистрация: 24.02.2013
Сообщений: 3,014
Записей в блоге: 12
17.11.2017, 20:21
shyub , неплохо было бы выложить анимацию фрезеровки какой-либо поверхности, чтобы посмотреть визуально - что получается.
0
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
17.11.2017, 21:01
Цитата Сообщение от shyub Посмотреть сообщение
конвертор STL формата в G-код для управления настольным фрезерным станком
Может лучше поискать готовый? Не привязываться к 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  [ТС]
Цитата Сообщение от Nacuott Посмотреть сообщение
неплохо было бы выложить анимацию фрезеровки какой-либо поверхности, чтобы посмотреть визуально - что получается
Пока нечего выкладывать, т.к. пока в стадии разработки.
Цитата Сообщение от Excalibur921 Посмотреть сообщение
Может лучше поискать готовый? Не привязываться к STL в G-код т.к. конвертировать 3д модель можно в разные.
Готовый - не интересно, да и тем более более-менее нормальные САПР платные. Что касается STL, то это только один из планируемых форматов.
Цитата Сообщение от Excalibur921 Посмотреть сообщение
Вон некоторые даже берут буфер глубины 3д модели вместо интерполяции Z точки внутри треугольника.
Пытаюсь, но пока ничего хорошего получить не удалось.
0
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
18.11.2017, 12:38
Цитата Сообщение от shyub Посмотреть сообщение
Готовый - не интересно
Вот это единственная и главная причина. Все остальное выдумано.

Цитата Сообщение от shyub Посмотреть сообщение
Пытаюсь, но пока ничего хорошего получить не удалось.
В гугле набрал “разрядность буфера глубины 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.11.2017, 19:54
Помогаю со студенческими работами здесь

найти координату 3-ей вершины треугольника
Даны две координаты треугольника ABC. A(2:-1) B(1:5) и точка пересечения его биссектрис L(3:0). Составить уравнения сторон треугольника....

Найти координату вершины параллелепипеда
Ребята, объясните пожалуйста, ни как не могу сообразить как найти вершину точки t Задача такая: Точки A(-2,1,-3) B(3,4,4) C(5,6,0) и...

найти вторую координату отрезка
Здравствуйте, пожалуста, возможно кто-мо может помочь и освежить память. Стоит задача: имеются 2 полигона, находящиеся на расстоянии...

Найти координату Z точки находящейся на плоскости
Задача: Есть плоскость в пространстве, которая описана 3-мя точками: A(Ax,Ay,Az) B(Bx,By,Bz) C(Cx,Cy,Cz) Координаты...

Найти координату вершины в прямоугольном треугольнике
Найти координаты точки С прямоугольного треугольника АВС, если известно, что вершины А(2,3) и В(6,-1) являются концами его гипотенузы, а...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
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# — это коллекция заранее созданных и готовых к использованию потоков, которые находятся в распоряжении приложения. Вместо того чтобы создавать и уничтожать потоки для каждой небольшой. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер