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

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

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

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

Ответ
 
Опции темы
Старый 22.09.2012, 22:17   #1
Izunad
ПроЭктировщик
 
Аватар для Izunad
 
Регистрация: 02.06.2011
Адрес: Набережные Челны
Сообщений: 103
Написано 27 полезных сообщений
(для 91 пользователей)
Вопрос Движение точки в системе координат


Известны углы по осям XYZ Двигаем точку на растояние R как найти координаты подвинутой точки? (Расчет по полярной системе не подходит, ибо в нем используется именно полярные углы)
(Offline)
 
Ответить с цитированием
Старый 22.09.2012, 22:40   #2
jimon
 
Сообщений: n/a
Ответ: Движение точки в системе координат

проецируем вектор R на каждую ось отдельно строя в голове прямоугольный прямоугольник между вектором и осью, получаем вектор A, добавляем вектор A к позиции точки, всё
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
impersonalis (28.09.2012)
Старый 22.09.2012, 22:46   #3
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Движение точки в системе координат

(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Izunad (22.09.2012)
Старый 22.09.2012, 22:46   #4
Izunad
ПроЭктировщик
 
Аватар для Izunad
 
Регистрация: 02.06.2011
Адрес: Набережные Челны
Сообщений: 103
Написано 27 полезных сообщений
(для 91 пользователей)
Ответ: Движение точки в системе координат

Окей с одним вопросом разобрался, вроде было несложно.
Procedure MoveEntity(Entity,Move.f) ;Только для движения вперед, т.е в моей программе больше не требуется
  AngleX.f=УголХ Объекта
  AngleY.f=УголУ Объекта

  DX.f=-Move*Sin(Angley)*Cos(Anglex)
  DY.f=-Move*Sin(Anglex)
  DZ.f=Move*Cos(Angley)*Cos(Anglex)
EndProcedure
Проверял с Ксорсом, работают как часики
Теперь возникла очередная сложность, это команда TurnEntity(Entity,TurnX,TurnY,TurnZ) -Поворот объекта
Тупо приплюсовывать к углу угол не получится ибо оси смещаются по какойто зависимости.

Последний раз редактировалось Izunad, 24.09.2012 в 17:16.
(Offline)
 
Ответить с цитированием
Старый 24.09.2012, 17:16   #5
Izunad
ПроЭктировщик
 
Аватар для Izunad
 
Регистрация: 02.06.2011
Адрес: Набережные Челны
Сообщений: 103
Написано 27 полезных сообщений
(для 91 пользователей)
Сообщение Ответ: Движение точки в системе координат

в Векипедии нарыл Ссылка но от увиденного захотелось просто застрелится. Видимо не стоило пропускать уроки алгебры
(Offline)
 
Ответить с цитированием
Старый 24.09.2012, 17:29   #6
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Движение точки в системе координат

Сообщение от Izunad Посмотреть сообщение
в Векипедии нарыл Ссылка но от увиденного захотелось просто застрелится. Видимо не стоило пропускать уроки алгебры
xTForm, xTFormPoint, xTFormVector тебе в помощь они делают именно то что тебе нужно, а именно переводят точку из одних координат в другие и т.д. А чтобы не стреляться попробуй про поворот осей почитать, это тоже самое но проще описывается доступно для школьников, без всяких там страшных слов и символов.

ну и это пригодится наверно: http://habrahabr.ru/post/131931/
(Offline)
 
Ответить с цитированием
Старый 26.09.2012, 17:26   #7
Izunad
ПроЭктировщик
 
Аватар для Izunad
 
Регистрация: 02.06.2011
Адрес: Набережные Челны
Сообщений: 103
Написано 27 полезных сообщений
(для 91 пользователей)
Ответ: Движение точки в системе координат

По общему представлению точка образует три оси относительно которых можно совершить поворот точки, т.е поворачиваются только оси точки сама точка неподвижна.
Дальше мое представление об осях кажется мне немного неправильной, а именно то что каждая ось несет в себе два значения широту и долготу, два угла с помощью которых можно полноценно определить направление оси в 3х мерном пространстве.
Я пытаюсь повернув точку вокруг 1ой оси вычислить направления двух других(т.е. их широту и долготу).

Подозреваю что есть куда более внятное представления об осях.
(Offline)
 
Ответить с цитированием
Старый 26.09.2012, 18:33   #8
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Движение точки в системе координат

Попробуй в этом направлении копать:
Как перевести вектор из одного базиса в другой?

а вообще на блитце я вот так поворачивал и все работало:
Function VectorRoller(selectedmesh,alfa#,beta#,gama#)

surf=GetSurface(selectedmesh,1)
qverts=CountVertices (surf)

For i=0 To qverts-1

;for simulation rotateentity
;x0#=saveddata#(i,0)
;y0#=saveddata#(i,1)
;z0#=saveddata#(i,2)

;for simulation turnentity
x0#=VertexX(surf,i)
y0#=VertexY(surf,i)
z0#=VertexZ(surf,i)

;alfa vocrug z
x1#=x0#*Cos(alfa)+y0#*Sin(alfa)
y1#=-x0#*Sin(alfa)+y0#*Cos(alfa)
z1#=z0#

;beta vokrug x

x2#=x1#
y2#=y1*Cos(beta)+z1*Sin(beta)
z2#=-y1*Sin(beta)+z1*Cos(beta)

;gama wokrug y
x3#=x2*Cos(-gama)+z2*Sin(-gama)
y3#=y2
z3#=-x2*Sin(-gama)+z2*Cos(-gama)

VertexCoords surf,i,x3,y3,z3

Next
UpdateNormals selectedmesh;it makes this function in two times slower
End Function
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Izunad (26.09.2012)
Ответ


Опции темы

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

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


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


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