![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
||||
|
||||
|
Собственно нужно найти формулы или способ обойтись без формул:
Значит имеется некий квадрат (или куб, хотя не важно, тут всего 2 оси); И имеется некий второй объект (отрезок например); Требуется, чтобы при вращении квадрата, отрезок следовал за его нижней гранью (или любой другой) как привязанный, вокруг той же оси, естественно совершая при этом не только перемещение но и вращение, чтобы было естественно. Пояснительный рисунок: ![]() Будет здорово если кто-нибудь поможет, мне честно в голову не лезет как это реализовать. |
|
#2
|
||||
|
||||
|
вот пожалста. только математика.
Последний раз редактировалось dr. F.I.N., 12.01.2012 в 17:09. |
|
#3
|
||||
|
||||
|
Спасибо большое, сейчас попробую себе в программу запихать.
|
|
#4
|
||||
|
||||
|
Чувствую себя дико тупым. Пытался применить это к своему коду, но ничего хорошего кроме обычного вращения без нормального поворота не получается.
Может кто сможет подпнуть меня в нужное направление? В общем мой кусок кода: Код:
var
i,j: Integer;
angle: Single;
begin
angle:=a*5000;
//for planes
for i:=1 to 3 do
begin
for j:=1 to 3 do
begin
with GridsDC[i,j] do
begin
if i=1 then
begin
Position.X:=CubeDC.Position.X+2*cos(angle)-1;
Position.Z:=CubeDC.Position.Z+2*sin(angle);
end;
if i=2 then
begin
Position.X:=CubeDC.Position.X+2*cos(angle);
Position.Z:=CubeDC.Position.Z+2*sin(angle);
end;
if i=3 then
begin
Position.X:=CubeDC.Position.X+2*cos(angle)+1;
Position.Z:=CubeDC.Position.Z+2*sin(angle);
end;
// Turn(0.2);
end;
end;
end;
//for cube
with CubeDC do
begin
// Turn(0.2);
end;
Вращение вокруг своих осей закомментированно, так как портит общею наглядность. Результат того что получилось у меня: ![]() И тут большой косяк - оно должно еще и ПРАВИЛЬНО смещаться по осям x и z, для организации ПРАВИЛЬНОГО вращения, но я не знаю как это ПРАВИЛЬНО сделать. Помогите. |
|
#5
|
||||
|
||||
|
Проблема решилась с помощью метода MoveObjectAround(Object: TCustom, Pitch: Single, Turn: Single);
Всем спасибо. |