|
0 / 0 / 0
Регистрация: 12.02.2019
Сообщений: 11
|
||||||
Векторное сложение двух контуров12.02.2019, 15:49. Показов 2799. Ответов 24
Мне нужно нарисовать контура и определить направление обхода координат. Нужно считать данные из txt файла, координаты в файле заданы последовательно и обход контура либо по часовой стрелке, либо против. Я так понимаю нужно векторно сложить вектора и если в результате будет +360 то это по часовой, а если -360 против часовой.
У меня получилось считать данные и вывести конур на экран, но как сейчас мне векторное сложение не понимаю. Помогите пожалуйста Тут читаю
0
|
||||||
| 12.02.2019, 15:49 | |
|
Ответы с готовыми решениями:
24
Конкатенация двух нибблов (сложение двух полубайт в байт) Решить векторное сложение 2 векторов Сложение, скалярное и векторное произведение векторов |
|
66 / 57 / 13
Регистрация: 16.03.2017
Сообщений: 426
|
|
| 12.02.2019, 17:44 | |
|
Покажите, что у вас в txt
0
|
|
|
391 / 64 / 11
Регистрация: 06.08.2018
Сообщений: 202
|
||
| 12.02.2019, 17:55 | ||
|
Что вы имеете в виду под "векторно сложить вектора"? Если вы складываете два вектора, то получаете вектор, а не угол... Тогда какое действие вам нужно сделать, если не сложить?
1
|
||
|
391 / 64 / 11
Регистрация: 06.08.2018
Сообщений: 202
|
|
| 13.02.2019, 11:08 | |
|
Ну как продвигается? Какие идеи по поводу векторных операций? Просто переберите в голове какие операции можно делать с векторами, какой результат дает каждая из этих операций и поймете что именно вам нужно.
0
|
|
|
0 / 0 / 0
Регистрация: 12.02.2019
Сообщений: 11
|
|
| 13.02.2019, 18:49 [ТС] | |
|
Вот что лежит у меня в txt. 7 - это количество координат. В данном случае обход по часовой
7 50 100 350 100 250 150 300 200 100 200 150 150 50 100
0
|
|
|
391 / 64 / 11
Регистрация: 06.08.2018
Сообщений: 202
|
|
| 13.02.2019, 19:11 | |
|
Давайте рассуждать. Какие опрации с векторами бывают?
0
|
|
|
0 / 0 / 0
Регистрация: 12.02.2019
Сообщений: 11
|
|
| 13.02.2019, 19:12 [ТС] | |
|
Да, вы правы при векторном сложении векторов получается вектор. Это должно быть скалярное произведение
0
|
|
|
391 / 64 / 11
Регистрация: 06.08.2018
Сообщений: 202
|
|
| 13.02.2019, 19:15 | |
|
лучше. Но,
скалярное проиведение может дать вам косиус угла (если поделить на произведение длин). А косинус(угла) == косинус(-угла)... Что еще можем сделать?
0
|
|
|
0 / 0 / 0
Регистрация: 12.02.2019
Сообщений: 11
|
|
| 13.02.2019, 19:32 [ТС] | |
|
Не пойму о чем вы сейчас, но скалярное произведение для двух векторов с координатами (x1; y1) и (x2; y2) вычисляется по формуле: x1x2 + y1y2, но тогда опять получается вектор. Тогда формула угла такая
0
|
|
|
391 / 64 / 11
Регистрация: 06.08.2018
Сообщений: 202
|
|
| 13.02.2019, 19:56 | |
|
Я о том, что скалярное произведение тоже не поможет. Потому как знак угла получить не получится.
cos(alpha)=cos(-alpha). Нужно что-то другое. Что еще бывает? Добавлено через 8 минут Про скалярное произведение подробнее: формула такая: (a*b)=|a|*|b|*cos(alpha) Здесь alpha - угол между векторами a и b, |a|, |b| -длины этих векторов. Левая часть уравнения считается, как выправильно заметили ax*bx+ay*by Длины векторов тоже легко посчитать: |a|=sqrt(ax*ax+ay*ay), аналогично с |b|. В итоге можем найти cos(alpha). Но, увы, он нам направления обхда не подскажет. Нужно что-то другое. Добавлено через 6 минут Поскольку мне пора идти и я не уверена когда смогу заглянуть в следующий раз, то, чтоб вас сильно не задервивать: Обратите внимание на операцию векторное произведение. В результате будет вектор, но какой! Его направление/знак должно подсказать направление обхода, насколько я себе это представляю. Как считать легко находится в гугле.
1
|
|
|
0 / 0 / 0
Регистрация: 12.02.2019
Сообщений: 11
|
|
| 13.02.2019, 20:22 [ТС] | |
|
Спасибо большое вам. Я так долго отвечаю потому что туплю и пытаюсь разобраться
0
|
|
|
391 / 64 / 11
Регистрация: 06.08.2018
Сообщений: 202
|
|
| 14.02.2019, 11:00 | |
|
Я не имела намерения торопить. Наоборот - разбираться полезно
Просто реально надо было уходить. Погуглили про векторное произведение?
0
|
|
|
"C with Classes"
|
|
| 14.02.2019, 12:59 | |
|
В чем проблема?
Определение. Скалярным произведением двух векторов называется число, равное произведению их длин на косинус угла между ними.
0
|
|
|
391 / 64 / 11
Регистрация: 06.08.2018
Сообщений: 202
|
|
| 14.02.2019, 13:18 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 12.02.2019
Сообщений: 11
|
|
| 14.02.2019, 21:49 [ТС] | |
|
Как-то так
0
|
|
|
391 / 64 / 11
Регистрация: 06.08.2018
Сообщений: 202
|
|
| 15.02.2019, 00:44 | |
|
Оно!
Результом будет вектор, перпендикулярный к обоим исходным векторам. Т.е., если векторы a и b лежали, например, в плоскости xy, то новый вектор будет вдоль оси z. А в какую сторону будет направлен (к примеру в + или - ) - зависит как раз от направления обхода. (погуглите правило Буравчика если не помните) Теперь надо решить какие у нас вектора a и b и можно приступать к написанию кода
0
|
|
|
0 / 0 / 0
Регистрация: 12.02.2019
Сообщений: 11
|
|
| 19.02.2019, 16:06 [ТС] | |
|
Как я поняла. Учитывая что у меня контур задан только в плоскости x и y, то для того чтобы определить знак нужно координаты векторов перемножить так: а х b = ax * by - ay * bx. Если получится число со знаком плюс то против часовой стрелки, а если минус по часовой стрелке. Только не пойму пока, достаточно ли взять первые две по очереди в txt строчки со значениями координат или их нужно больше
Добавлено через 30 минут Похоже нужно так делать с соседними векторами. А потом сложить всё вместе знак получившегося числа укажет по часовой или против часовой обход контура. Иначе могут быть ошибки определения направления обхода, проверила на небольших примерах. То есть если фигура четырехугольная нужно векторно перемножить a x b, b x c, c x d, d x a
0
|
|
|
391 / 64 / 11
Регистрация: 06.08.2018
Сообщений: 202
|
||
| 19.02.2019, 18:57 | ||
|
Д, т.к. az и bz равны нулю, то остается тол'ко (ax * by - ay * bx), заметьте, там стоит к. T.e. полученный вектор axb имеет координаты (0, 0, ax * by - ay * bx) - направлен вдоль +/- z. Все правильно, знак (ax * by - ay * bx) определяет в какую сторону обход.
Теперь про векторы a и b. У вас в txt файле, если я правильно понимаю, заданы НЕ вектора, а координаты точек. Если начало координат находится внутри фигуры, образуемой данными точками, то проблем быть не должно. (Предполагаю выпуклую фигуру, иначе надо подробнее думать). Т.е. мы берем координаты точек, но подразумеваем вектора из начала координат к данным точкам. Но, если начало координат вне, то получится, что часть векторных произведений даст обратный знак. Если я правильно поняла, то именно то, что вы имели жжиду здесь: Лично мне, если с ходу, то приходят в голову два варианта: 1) посчитаем координаты центра фигуры и будем считать, что все вектора имеют начало там (а конец, в тех точках). Таким образом, начало наших векторов внутри фигуры и не будет проблем со сменой знака, когда идем вдоль контура в одну сторону. 2) можно взять за начало всех векторов одну из точек, а концы вектров - оставшиеся точки. Таким образом, у нас на один вектор меньше. Оба способа предполагают что фигура выпуклая. При этом, этими способами можно заодно и проверить соблюдается ли направление обхода (а то вдруг кто-то нам дал точки в произвольном порядке? 1423... или 1324...) Возможно есть и другие способы. Это то, что мне первым в голову пришло.
1
|
||
|
0 / 0 / 0
Регистрация: 12.02.2019
Сообщений: 11
|
||||
| 19.02.2019, 19:34 [ТС] | ||||
И предполагаю что контур задан в положительной, первой плоскости
0
|
||||
|
391 / 64 / 11
Регистрация: 06.08.2018
Сообщений: 202
|
|||
| 19.02.2019, 20:35 | |||
|
наверное сложение результатов попарного векторного произведения (если я правильно вас поняла вы это сейчас и делаете?) должно помочь. Длина нового вектора равна площади параллелограма, образованного исходными векторами, что логично, вроде бы как бы и взвешанное получается. Вроде все логично. Надо подумать не появится ли еще каких подводных камней... (Считать началом векторов начало координат мне почему-то не нравится... хотя может я и не права - надо пробовать, смотреть как получается... а если начало координат очень далеко?...) Добавлено через 8 минут Еще такая мысль закралась... а вы потом собираетесь это для чего-то использовать? Или это упражнение "сдал и забыл" или зарядка для ума? Если использовать потом, то я бы еще юниттесты написала бы для нескольких контуров, хорошо продумав какие контура могут быть наиболее интересны или проблемны Добавлено через 26 минут Не по теме: Моя подпись хорошо подходит к вашему нику ;))))
0
|
|||
| 19.02.2019, 20:35 | |
|
Помогаю со студенческими работами здесь
20
Векторное сложение скоростей, найти скорость встречного ветра Преобразование схемы до двух контуров создание, сложение, вычитание векторов, скалярное и векторное умножение векторов
Векторная алгебра. Векторное произведение двух векторов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам
Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|