Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование в широком смысле слова > Математика

Математика Методы математического моделлирования, программирование математических концепций, роль математики в создании игр

Ответ
 
Опции темы
Старый 05.03.2010, 12:34   #1
FireOwl
Бывалый
 
Аватар для FireOwl
 
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений
(для 1,836 пользователей)
Векторы

Есть вектор и точка, или два вектора:

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

З.Ы. Пробовал через вычисление угла между векторами AB и BC, но чё-то хрень получается.
Миниатюры
Нажмите на изображение для увеличения
Название: vectors.png
Просмотров: 957
Размер:	3.2 Кб
ID:	9411  
__________________
N"Gasta! Kvata! Kvakis!
Ahkstas so novajxletero (oix jhemile) so Ranetauw.
(Offline)
 
Ответить с цитированием
Старый 05.03.2010, 13:18   #2
H@NON
Дэвелопер
 
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений
(для 774 пользователей)
Ответ: Векторы

самый простой способ :
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
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо H@NON за это полезное сообщение:
FireOwl (05.03.2010), Harter (05.03.2010)
Старый 05.03.2010, 14:49   #3
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Векторы

уравнение плоскости гугли
__________________
бложик | geom.io | твиттер | faded | демо 1 2 | роботы | лайтмаппер
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
FireOwl (06.03.2010)
Старый 05.03.2010, 23:11   #4
Alex.D.
Оператор ЭВМ
 
Регистрация: 02.11.2008
Сообщений: 27
Написано 12 полезных сообщений
(для 24 пользователей)
Ответ: Векторы

Сообщение от FireOwl Посмотреть сообщение
Т.е. "слева" или "справа" от вертора она лежит.
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
скалярное произведение - аркосинус угла между векторами (для его корректного получения необходимо вектора нормализовать, но для этой задачи важен только знак)
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Alex.D. за это полезное сообщение:
FireOwl (06.03.2010), Harter (09.03.2010)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com