forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Математика (http://forum.boolean.name/forumdisplay.php?f=85)
-   -   Векторы (http://forum.boolean.name/showthread.php?t=12120)

FireOwl 05.03.2010 12:34

Векторы
 
Вложений: 1
Есть вектор и точка, или два вектора:

Необходимо как-нибудь различить, в какой полуплоскости лежит точка относительно оси вектора. Т.е. "слева" или "справа" от вертора она лежит. Как это можно реализовать на BB?

З.Ы. Пробовал через вычисление угла между векторами AB и BC, но чё-то хрень получается.

H@NON 05.03.2010 13:18

Ответ: Векторы
 
самый простой способ :
Код:

local yaw# = VectorYaw(vx1, vy1, vz1)
local pitch# = VectorPitch(vx1, vy1, vz1)
ROtateEntity Pivot, pitch, yaw, 0

TformVector vx2, vy2, vz2, 0, pivot
If TfomedX() > 0 Then
    ;Лежит справа от вектора
ElseIf TfomedX() < 0 Then
    ;Лежит слева от вектора
EndIf


Mr_F_ 05.03.2010 14:49

Ответ: Векторы
 
уравнение плоскости гугли

Alex.D. 05.03.2010 23:11

Ответ: Векторы
 
Цитата:

Сообщение от FireOwl (Сообщение 140638)
Т.е. "слева" или "справа" от вертора она лежит.

1) Берешь вектор AB и вычисляешь его перпендикуляр.
2) По знаку скалярного произведения вектора BC с перпендикуляром к AB определяешь с какой стороны лежит точка C

Код:

; вектор AB
ABx = Bx - Ax
ABy = By - Ay

; перепендикуляр к AB
ABNx = -ABy
ABNy =  ABx

; вектор BC
BCx = Cx - Bx
BCy = Cy - By

; скалярное произведение
dot = ABNx * BCx + ABNy * BCy

скалярное произведение - аркосинус угла между векторами (для его корректного получения необходимо вектора нормализовать, но для этой задачи важен только знак)


Часовой пояс GMT +4, время: 08:28.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot