forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   вопросик :) (http://forum.boolean.name/showthread.php?t=207)

jimon 15.10.2005 21:01

вообщем есть точка e1 и точка e2
надо зделать поворот точки e2 отосительно e1 на углы x,y,z
и узнать конечные координаты точки e2

как ето зделать ?
с помощью блица я знаю как зделать
но надо чисто алгебраическое решение :bad:

alcosholik 15.10.2005 21:19

А ты приведи пример на Блице, из него можно будет вывести мат. формулу.

impersonalis 15.10.2005 22:33

Вложений: 2
Код:

x=r*cos(fi)*cos(te)
y=r*sin(fi)*cos(te)
z=r*sin(te)


jimon 15.10.2005 22:45

Цитата:

А ты приведи пример на Блице, из него можно будет вывести мат. формулу.
создаем два pivotа e1 и e2
задаем e1 и e2 позиции
e2 парентим к e1
поворачиваем e1
узнаем координаты e2 (глобальные)

раз такой умный - выведи отсюда формулы :bad:



2 impersonalis - ето вообщето только самое начало... буду выражать формулы :))
спасибо...типа... если оно еще сработает

alcosholik 16.10.2005 00:53

:) Я немного продуплил сначала.

Не пробовал пример impersonalis'a, но придумал свою версию.

ax0 и ay0 - начальные координаты точки a
bx0 и by0 - начальные координаты точки b

b будет вращаться вокруг a

Для начала находим расстояние между этими точками (т.е. радиус вращения, который является величиной постоянной):
s=sqr((bx0-ax0)^2 + (by0-ay0)^2), где sqr - корень квадратный

А теперь для поворота вокруг оси x на угол angle:
by=s*cos(angle)
bz=s*sin(angle)

Аналогично делается с поворотом вокруг y и z.

Вот пример реализации на Blitz:
Код:

Graphics3D 800,600,16,2
SetBuffer BackBuffer()

cam=CreateCamera()
PositionEntity cam,10,0,0
RotateEntity cam,0,90,0

lit=CreateLight()

Global ax0#, ay0#, az0#
Global bx0#, by0#=3, bz0#

a=CreateSphere()
PositionEntity a,ax0,ay0,az0
b=CreateSphere()
PositionEntity b,bx0,by0,bz0

s#=Sqr((bx0-ax0)^2+(by0-ay0)^2)

While Not KeyHit(1)
angle#=angle+1

PositionEntity b,bx0,s*Cos(angle),s*Sin(angle)

RenderWorld()
Flip
Wend
End


impersonalis 16.10.2005 02:15

Главное - чтобы работало; в принципе, можно всё на пивотах построить.

jimon 16.10.2005 13:29

я тут просто подумал... три угла... три координаты... и каждая координата зависит ОТ КАЖДОГО УГЛА

дык ... даже из етого правила выходит что формула посложнее :(


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

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