6 / 6 / 3
Регистрация: 17.04.2014
Сообщений: 156
|
|
1 | |
Получить вектор отражения от плоскости12.08.2018, 10:39. Просмотров 1793. Ответов 3
Метки вектор отражения (Все метки)
У меня есть вектор dir, заданный через x,y,z.
Есть плоскость, которая описана тремя точками {vert0, vert1, vert2}. Т.е. описана треугольником, которая лежит на плоскости. Мне нужно найти вектор, который получиться при отражении dir от плоскости. Думаю найти вектор так: 1) получить нормаль к плоскости {vert0,vert1,vert2}; 2) получить проекцию dir на нормаль 3) удвоить полученный вектор 4) отнять полученный от исходного вектор dir. Нормаль я нахожу так: Сначала получаю два вектора, которые лежат на плоскости: v0 = vert1-vert0 v1 = vert2-vert0 После вычисляю векторное произведение v0 и v1: X = v0.Y * v1.Z - v0.Z * v1.Y Y = v0.Z * v1.X - v0.X * v1.Z Z = v0.X * v1.Y - v0.Y * v1.X Теперь мне нужно получить проекцию на эту нормаль, но у меня не получается. Пробовал разные способы, с нормализацией векторов и без. Но что то я делаю не так, видимо.
0
|
|
12.08.2018, 10:39 | |
Найти уравнение отражения относительно плоскости Получить атрибут техникой отражения Получить значение поля с помощью рефлексии (отражения) Получить элементы квадратной матрицы. Сформировать из матрицы А вектор. Используя вектор Х получить значение п |
|
12.08.2018, 14:18 | 2 |
Lagilo.
я не понял, зачем вам проекция вашего вектора на нормаль к плоскости? Лично я мыслю так. 1. получить нормаль к плоскости и (естественно) точку пересечения нормали и плоскости 2. ваш вектор, нормаль и искомый вектор должны лежать в одной плоскости, то есть смешанное произведение этих векторов должно равно 0 и последнее длина искомого вектора должна равняться длине исходного вектора кажется так...
0
|
Модератор
![]() |
|
12.08.2018, 18:05 | 3 |
Алгоритм правильный, за исключением пункта 2): проекция вектора на вектор это число, а вам нужен вектор.
Формула такая: Т.е. вы предлагаете записать систему? Которую ещё нужно решать как-то.
1
|
6 / 6 / 3
Регистрация: 17.04.2014
Сообщений: 156
|
|
13.08.2018, 07:55 [ТС] | 4 |
Спасибо)) Решил еще вчера, но не написал ответ.
Приведу пример на C#. Получилось так: [ Кликните здесь для просмотра всего текста
CSHARP]
public static Vector3 GetReflectedVector(Vector3 direction,Vector3 vert0, Vector3 vert1, Vector3 vert2) { Vector3 normalizeDirection = Normalize(direction); Vector3 planeNormal = Normalize(Cross(vert1 - vert0, vert0 - vert2)); return CombineVector(normalizeDirection, planeNormal, 1, (float)(-2 * Dot(normalizeDirection, planeNormal))); } private static Vector3 CombineVector(Vector3 v1, Vector3 v2, float f1, float f2) { Vector3 vector3; vector3.X = (f1 * v1.X) + (f2 * v2.X); vector3.Y = (f1 * v1.Y) + (f2 * v2.Y); vector3.Z = (f1 * v1.Z) + (f2 * v2.Z); return vector3; } [/CSHARP]
0
|
13.08.2018, 07:55 | |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь. Есть квадратная матрица А порядка n и вектор b с n элементами. Получить вектор Аb. Даны квадратная матрица A порядка n и вектор b c n элементами. Получить вектор: A^2b
Найти максимальное значение в каждой строке. Из этих значений получить вектор из 5-ти элементов. Выдать матрицу А и вектор В. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |