Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.60/25: Рейтинг темы: голосов - 25, средняя оценка - 4.60
1963 / 819 / 114
Регистрация: 01.10.2012
Сообщений: 4,763
Записей в блоге: 2

Найти любой вектор перпендикулярный данному, не используя логических операций (if, ? и др)

18.08.2015, 16:55. Показов 5128. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте

Очень банально, но немного в др редакции. Есть ненулевой вектор (x, y, z). Найти любой вектор перпендикулярный ему не используя логических операций (if, ? и др). Хмм... не вижу решения, по-моему никак. Вот на плоскости - пожалуйста

Спасибо
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.08.2015, 16:55
Ответы с готовыми решениями:

Найти вектор x, перпендикулярный a и b
Здравствуйте! Помогите решить задачу: Даны вектора a(-10,10,-5), b(-4,4,8), c(3,-8,6). Найти вектор x перпендикулярный a и b такой, что...

Найти вектор x, перпендикулярный a и b
1. Даны вектора a(2,-6,-8) b(-10,2,-2) c(-8,7,-5) Найти вектор x перпендикулярный a и b такой , что (x,c)=69 Помогите решить...

Найти вектор перпендикулярный векторам
Пожалуйста, помогите решить!!! Найти вектор с перпендикулярный векторам а=2i+3j-k и b=i-2j+3k удовлетворяющий условию (с,d)=-6, где...

21
71 / 59 / 14
Регистрация: 20.12.2013
Сообщений: 720
18.08.2015, 21:38
Так, вроде, из условий скалярного, векторного произведений и задав одну компоненту можно получить искомое?
0
1963 / 819 / 114
Регистрация: 01.10.2012
Сообщений: 4,763
Записей в блоге: 2
19.08.2015, 09:38  [ТС]
Цитата Сообщение от AndrSlav Посмотреть сообщение
Так, вроде, из условий скалярного, векторного произведений и задав одну компоненту можно получить искомое?
Мое понимание Вашего ответа = нулю На всякий случай повторю условие: есть вектор, т.е. 3 числа (x1, y1, z1) и гарантируется что хотя бы одно из них ненулевое. Получить др вектор, 3 числа (x2, y2, z2) любых, но таких чтобы вектора были перпендикулярны, т.е.

x1 * x2 + y1 * y2 + z1 * z2 = 0
0
 Аватар для JIuXOMAHT
26 / 24 / 6
Регистрация: 15.08.2015
Сообщений: 165
Записей в блоге: 4
19.08.2015, 12:45
Есть еще одно условие - модуль векторного произведения равен произведению модулей.
0
Модератор
Эксперт функциональных языков программирования
3132 / 2279 / 469
Регистрация: 26.03.2015
Сообщений: 8,870
19.08.2015, 17:31
Вот это не подойдёт?
Нужна функция Sign без проверки условий
0
71 / 59 / 14
Регистрация: 20.12.2013
Сообщений: 720
19.08.2015, 21:47
Я туплю, здесь надо сформировать вектор, не коллинеарный заданному, и получить их векторное произведение - это и будет результат.
0
1963 / 819 / 114
Регистрация: 01.10.2012
Сообщений: 4,763
Записей в блоге: 2
20.08.2015, 09:45  [ТС]
Цитата Сообщение от AndrSlav Посмотреть сообщение
здесь надо сформировать вектор, не коллинеарный заданному,
Совершенно верно, но я не вижу способа это сделать без "if", напр

- как-то переставить x, y, z - но они могут быть все равны
- помножить почленно - не сработает для вектора (1, 0, 0)
- добавить какой-то вектор - но он может быть равен исходному
..?

Цитата Сообщение от Shamil1 Посмотреть сообщение
Вот это не подойдёт?
Нужна функция Sign без проверки условий
"Навеяно" именно этим
0
Модератор
Эксперт функциональных языков программирования
3132 / 2279 / 469
Регистрация: 26.03.2015
Сообщений: 8,870
20.08.2015, 12:49
Лучший ответ Сообщение было отмечено Igor3D как решение

Решение

Цитата Сообщение от Igor3D Посмотреть сообщение
"Навеяно" именно этим
Тогда можно выбрать любой из методов, позволяющих избежать ветвления. Например,
C#
1
2
3
4
5
6
7
8
9
10
Vector Perpendicular(Vector a)
{
    int alpha = Convert.ToInt32(a.Z == 0);
    
    int x = a.Y * alpha - a.Z;
    int y = -a.X * alpha;
    int z = a.X  - y; //a.X * (1 - alpha)
    
    return new Vector { X = x, Y = y, Z = z };
}
1
1963 / 819 / 114
Регистрация: 01.10.2012
Сообщений: 4,763
Записей в блоге: 2
21.08.2015, 09:41  [ТС]
Да, все четко, спасибо
0
 Аватар для snake32
3502 / 1685 / 236
Регистрация: 26.02.2009
Сообщений: 8,387
Записей в блоге: 6
21.08.2015, 10:23
Igor3D, большой профит от отказа условия? Сколько % конкретно в вашей задаче на каком железе?
0
1963 / 819 / 114
Регистрация: 01.10.2012
Сообщений: 4,763
Записей в блоге: 2
21.08.2015, 10:33  [ТС]
Цитата Сообщение от snake32 Посмотреть сообщение
Igor3D, большой профит от отказа условия? Сколько % конкретно в вашей задаче на каком железе?
Да бог с Вами, чтобы я здесь какой-то профит искал ... Просто уже не раз приходилось говорить/советовать типа "постройте любые 2 вектора перпендикулярные данному", напр

Перевести точку, лежащую на плоскости в двухмерную систему координат, заданную на этой плоскости

Что провоцирует лишние вопросы "а как..". Поэтому хотелось бы иметь возможность дать "формулу" (без "if") вместо "фрагмента кода"
0
 Аватар для snake32
3502 / 1685 / 236
Регистрация: 26.02.2009
Сообщений: 8,387
Записей в блоге: 6
21.08.2015, 11:44
Цитата Сообщение от Igor3D Посмотреть сообщение
Да бог с Вами, чтобы я здесь какой-то профит искал ...
Так и думал, но надежда(может я что не знаю) умерла последней.
Тогда поясните почему x,y,z целые?
И не может ли случится так что при малой длине вектора a получится x=y=z=0?

Добавлено через 2 минуты
*малой длине в смысле значения любого компонента вектора менее 0.5
0
1963 / 819 / 114
Регистрация: 01.10.2012
Сообщений: 4,763
Записей в блоге: 2
21.08.2015, 12:09  [ТС]
Цитата Сообщение от snake32 Посмотреть сообщение
Так и думал, но надежда(может я что не знаю) умерла последней.
Тогда поясните почему x,y,z целые?
И не может ли случится так что при малой длине вектора a получится x=y=z=0?
Ну это просто набросок (демонстрация идеи) на чуждом мне языке Конечно в конкретной реализации будут флоты и длину исходного вектора все равно проверять придется.
1
Модератор
Эксперт функциональных языков программирования
3132 / 2279 / 469
Регистрация: 26.03.2015
Сообщений: 8,870
21.08.2015, 14:36
Цитата Сообщение от snake32 Посмотреть сообщение
И не может ли случится так что при малой длине вектора a получится x=y=z=0?
Ответ записан как сумма двух векторов.
result = alpha * { a.Y, -a.X, 0 } + (1 - alpha) * { -a.Z, 0, a.X }
В зависимости от условия z == 0 мы берём один или другой вектор (alfa = 1 или 0).
По условию исходный вектор не нулевой. То есть, хотя бы одно из a.X, a.Y, a.Z имеет "достаточный" размер.
Единственно, условие Z == 0 можно поменять на Z > epsilon.
1
71 / 59 / 14
Регистрация: 20.12.2013
Сообщений: 720
25.08.2015, 20:53
Инет не работал, так что, наверно, уже все решено, но внесу предположение. Я вот подумал, если к нему приложить тензоры поворота на 90 град по 3 углам Эйлера- не будет ли как раз неколлинеарный вектор?
0
 Аватар для snake32
3502 / 1685 / 236
Регистрация: 26.02.2009
Сообщений: 8,387
Записей в блоге: 6
26.08.2015, 14:04
Цитата Сообщение от AndrSlav Посмотреть сообщение
Я вот подумал, если к нему приложить тензоры поворота на 90 град по 3 углам Эйлера
Вычислений наверно больше получится, не?
0
 Аватар для JIuXOMAHT
26 / 24 / 6
Регистрация: 15.08.2015
Сообщений: 165
Записей в блоге: 4
26.08.2015, 14:10
Цитата Сообщение от snake32 Посмотреть сообщение
Вычислений наверно больше получится, не?
Примерно столько же, сколько, используя квартенион, развернуть целевой вектор на необходимые 90 градусов.
0
1963 / 819 / 114
Регистрация: 01.10.2012
Сообщений: 4,763
Записей в блоге: 2
26.08.2015, 14:34  [ТС]
Цитата Сообщение от AndrSlav Посмотреть сообщение
Инет не работал, так что, наверно, уже все решено, но внесу предположение. Я вот подумал, если к нему приложить тензоры поворота на 90 град по 3 углам Эйлера- не будет ли как раз неколлинеарный вектор?
Вот когда человек сыпет терминами... Позвольте Вас спросить: а что такое "тензор поворота" - матрица что ли? Если так то с 3 поворотами мы рискуем попасть на тот самый "джимбал лок" - напр первая не крутит (ось совпадает), вторая на 90, 3-я еще на 90 - в рез-те коллинеарный

Цитата Сообщение от JIuXOMAHT Посмотреть сообщение
Примерно столько же, сколько, используя квартенион, развернуть целевой вектор на необходимые 90 градусов.
Кватерниону нужна ось, где Вы ее возьмете?
0
 Аватар для JIuXOMAHT
26 / 24 / 6
Регистрация: 15.08.2015
Сообщений: 165
Записей в блоге: 4
26.08.2015, 15:55
Цитата Сообщение от Igor3D Посмотреть сообщение
Кватерниону нужна ось, где Вы ее возьмете?
Само собой, необходимо сначала выбрать единичный вектор , перпендикулярный данному из условия их скалярного нулевого произведения.
0
71 / 59 / 14
Регистрация: 20.12.2013
Сообщений: 720
26.08.2015, 23:03
А если углы Крылова вместо Эйлера?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.08.2015, 23:03
Помогаю со студенческими работами здесь

Найти вектор, перпендикулярный к плоскости
Добрый вечер. Имеется очень странное, как по мне, задание по аналитической геометрии. Условие: Даны координаты вершин треугольника:...

Найти единичный вектор, перпендикулярный к вектору а
Даны два вектора: a=(1,1,1); b=(1,0,0). Найти единичный вектор c , перпендикулярный к вектору а,образующий с вектором b угол пи/3 И...

Найти вектор, перпендикулярный двум данным
2) Даны вектора а = (-5, 1, 5), b = (-4, 1, 4) и с = (1, -2, -9). Найти вектор х перпендикулярный а и b такой, что (х,с) = 16.

Как найти четвертый вектор d перпендикулярный к векторам a и b
Даны три вектора: a={8,4,1}, b={2,-2,1},c={4,0,3}. Найти четвертый вектор d перпендикулярный к векторам a и b и направленный так, чтобы...

Упростить выражение, используя минимум законов логических операций
Помогите решить выражения


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru