Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/55: Рейтинг темы: голосов - 55, средняя оценка - 4.82
-1 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 106

Вычисление положения точек относительно вектора направления, зная координаты точки и угол

02.11.2015, 13:49. Показов 11773. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Разрабатываю игру, в игре есть точка с определенными координатами и направление точки( то есть куда смотрит ГГ (он и есть точка))
1) нужно найти заданное количество точек (их координаты), которые располагаются на прямой перпендекуляроной направлению "точки" и проходящей через эту точку. (при этом я задаю расстояние, на котором находится точка от ГГ)
2) нужно найти заданное количество точек (их координаты), которые располагаются на прямой перпендекуляроной направлению "точки" и находящиеся на расстоянии от точки .(при этом я задаю расстояние, на котором находится точка от ГГ)
Изображения
  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.11.2015, 13:49
Ответы с готовыми решениями:

Значение вектора направления повернутого на угол относительно другого вектора
Unity3D. Есть известный вектор направления V1. И есть какой-то определённый угол alpha. Нужно узнать значение нового вектора направления,...

Как найти координаты вектора, зная длину и угол?
Найти координаты вектора X, длина которого равна 8, зная, что он образует с осью Ox угол 45 градусов, с осью Oz - угол 60 градусов, а с...

На какой угол был поворот зная координаты центра круга(х0,у0), и точки(х1,у1)?
Мой же ответ function ygolA(x0,y0,x1,y1:Real):Real; begin if (xm-x0>=0)and(y0-ym<0) then result:=((Abs(y0-ym)/r)*90)*(pi/180); ...

12
-1 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 106
02.11.2015, 14:32  [ТС]
расстояния равные между точками проходящими по прямой перпендикулярной направлению "точки" (вектора)

Добавлено через 40 минут
начала координат не в точке, а в левом вверхнем угле экрана
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
02.11.2015, 14:49
Исходя из скалярного произведения находишь 2 вектора, перпендикулярных к вектору направления гг. Далее умножаешь эти вектора на нужную величину и находишь координаты точек. Для второго случая, если я правильно понял, прибавляешь нужный вектор сдвига, который находишьумножением на вектор направления гг.
0
-1 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 106
02.11.2015, 15:00  [ТС]
Здравствуй Дорогой The trick, Всегда рад тебя видеть! Пожалуйста, напиши конкретнее, именно какие уравнения, как школьнику.. Я очень плохо дружу с геометрией. А как раз встал на этом месте, а на деле это малая часть всего, чего еще стоит сделать, но геометрия и алгебра , подводят....
Мне не известен сам вектор, а только его поворот, на рисунке он равен 315 градусам и координаты точки.
Буду очень тебе благодарен!
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
02.11.2015, 15:09
Если известен только угол, то вектор направления можно найти как {cos a; sin a}, где a - угол. Скалярное произведение перпендикулярных векторов равно нулю, для перпендикулярного вектора нужно просто поменять местами координаты и у одной из них поменять знак.
0
-1 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 106
02.11.2015, 16:25  [ТС]
The trick, это даже без разницы где находится центр отсчета?
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
02.11.2015, 16:28
Цитата Сообщение от smsgeorge Посмотреть сообщение
The trick, это даже без разницы где находится центр отсчета?
Для векторов это не имеет значение, т.к. вектор это направление.
0
-1 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 106
02.11.2015, 16:44  [ТС]
The trick,
координаты точки к примеру равны (3.2)
угол к примеру равен 270 гр
x1=cos(270)
y1=sin(270)
направляющий вектор равен (0,-1)
получается 1 точка (1,0)
получается 2 точка (-1,0)
а если точек больше ? как тут учитывать положение точки ГГ? и расстояние которое мне нужно от точки ГГ?

Добавлено через 3 минуты
The trick, что если мой герой находится по координатам х=254 у=454 нужно найти. что обсуждается вверху, чтобы расстояние было от ГГ до точек на расстоянии 30 каких либо едениц (по существу, пикселей)?
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
02.11.2015, 16:54
Лучший ответ Сообщение было отмечено smsgeorge как решение

Решение

Цитата Сообщение от smsgeorge Посмотреть сообщение
координаты точки к примеру равны (3.2)
Координаты точки не важны для нахождения перпендикуляров.
Цитата Сообщение от smsgeorge Посмотреть сообщение
угол к примеру равен 270 гр
x1=cos(270)
y1=sin(270)
направляющий вектор равен (0,-1)
Для чего тогда угол? У тебя либо угол, либо направление.
Все вычисления идут относительно координат игрока, так что принимай за них {0; 0}, просто итог потом просуммируешь с координатами.
Если направление равно d (0, -1), то два перпендикуляра будут a (-1, 0) и b (1, 0).
Находим приращение координат для нужного расхождения A = 30 * a и B = 30 * b.
Заводишь цикл сколько нужно точек, к примеру 3 в каждую сторону
a1 = A * 1, b1 = B * 1
a2 = A * 2, b2 = B * 2
a3 = A * 3, b3 = B * 3
Теперь полученные точки прибавляешь к позиции игрока p (254; 454) для получения координат на игровом поле.
1
-1 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 106
03.11.2015, 08:44  [ТС]
The trick, огромная благодарность тебе! сегодня буду реализовывать. Слушай, еще такой вопрос возник. У меня есть ГГ (точка с координатами) и направление куда он повернут, есть 2 точка, нужно определить угол поворота до точки. По существу имеем, ГГ (координаты) угол поворота ГГ и 2 точку на которую нужно определить угол поворота.
Изображения
 
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
03.11.2015, 10:52
Лучший ответ Сообщение было отмечено smsgeorge как решение

Решение

Найти можно вычислив арккосинус скалярного произведения вектора направления игрока и вектора цели. Оба вектора должны быть нормированы. Это вернет угол в диапазоне от 0..π.
1
-1 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 106
03.11.2015, 17:13  [ТС]
Благодарю!

Добавлено через 15 минут
The trick, Благодараю. а если мне угол нужен больше 180
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
03.11.2015, 20:34
Ну угол между векторами не может быть больше 180 грудусов. Для нахождения значения со знаком, сперва нужно уточнить направление отсчета, для этого нужно ввести 3-й вектор. К примеру ты можешь найти перпендикуляр к вектору ГГ и посчитать скалярное произведение с ним. Какой из двух перпендикуляров ты выберешь в ту сторону и будет считаться угол. Но если тебе нужен именно угол, то можешь воспользоваться функцией atan2, она возвращает угол с учетом знака относительно оси абсцисс.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Option Explicit
 
Private Const PI = 3.14159265358979
 
Private Sub Form_Load()
    Scale (-1, 1)-(1, -1)
    AutoRedraw = True
    Line (-1, 0)-(1, 0)
    Line (0, -1)-(0, 1)
End Sub
 
Public Function Atan2(ByVal Y As Double, ByVal X As Double) As Double
    If Y > 0 Then
        If X >= Y Then
            Atan2 = Atn(Y / X)
        ElseIf X <= -Y Then
            Atan2 = Atn(Y / X) + PI
        Else
            Atan2 = PI / 2 - Atn(X / Y)
        End If
    Else
        If X >= -Y Then
            Atan2 = Atn(Y / X)
        ElseIf X <= Y Then
            Atan2 = Atn(Y / X) - PI
        Else
            Atan2 = -Atn(X / Y) - PI / 2
        End If
    End If
End Function
 
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Me.Caption = Format(Atan2(Y, X) * (180 / PI), "0.00 degrees")
End Sub
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.11.2015, 20:34
Помогаю со студенческими работами здесь

Найти координаты точки, зная расстояние до других точек
Здравствуйте! Нужна помощь в решении задачи. Сам даже не знаю с чего подступить, совсем геометрию забыл. Есть 4 точки в трехмерной...

Как найти вектор направления тела, зная угол поворота?
Как найти вектор направления\смещения по осям тела, зная угол его поворота.

Вычисление времени ,зная координаты по осям x,y,z после каждого передвижения ,и, соответственно зная скорость
Ситуация следующая : автоматизированный станок на заводе работает по программам следующего вида 1 x20y55z0 f000 // началные...

Найти угол направления к точки в 2D плоскости
Подскажите плиз формулу как найти направления что-та типа компаса, есть компас и нужно найти курс направления в градусах или радианах до...

Найти угол направления к точки в 2D плоскости
Подскажите плиз формулу как найти направления что-та типа компаса, есть компас и нужно найти курс направления в градусах или радианах до...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru