|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Нужна помощь при вращении
Собственно нужно найти формулы или способ обойтись без формул:
Значит имеется некий квадрат (или куб, хотя не важно, тут всего 2 оси); И имеется некий второй объект (отрезок например); Требуется, чтобы при вращении квадрата, отрезок следовал за его нижней гранью (или любой другой) как привязанный, вокруг той же оси, естественно совершая при этом не только перемещение но и вращение, чтобы было естественно. Пояснительный рисунок: Будет здорово если кто-нибудь поможет, мне честно в голову не лезет как это реализовать. 00110001 00101100 00110110 00110001 00111000 00110000 00110011 00110011 00111001 00111000 00111000 00110111 00110100 00111001 00111000 00111001 00110100 00111000 00110100 00111000 00110010 00110000 00110100 00110101 00111000 00110110 00111000 00110011 00110100 00110011 00110110 00110101 00110110 |
#2
|
||||
|
||||
вот пожалста. только математика.
Грамотно поставленный вопрос содержит не менее 50% ответа. Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть. Последний раз редактировалось dr. F.I.N., 12.01.2012 в 17:09. |
#3
|
||||
|
||||
Спасибо большое, сейчас попробую себе в программу запихать.
00110001 00101100 00110110 00110001 00111000 00110000 00110011 00110011 00111001 00111000 00111000 00110111 00110100 00111001 00111000 00111001 00110100 00111000 00110100 00111000 00110010 00110000 00110100 00110101 00111000 00110110 00111000 00110011 00110100 00110011 00110110 00110101 00110110 |
#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, для организации ПРАВИЛЬНОГО вращения, но я не знаю как это ПРАВИЛЬНО сделать. Помогите. 00110001 00101100 00110110 00110001 00111000 00110000 00110011 00110011 00111001 00111000 00111000 00110111 00110100 00111001 00111000 00111001 00110100 00111000 00110100 00111000 00110010 00110000 00110100 00110101 00111000 00110110 00111000 00110011 00110100 00110011 00110110 00110101 00110110 |
#5
|
||||
|
||||
Проблема решилась с помощью метода MoveObjectAround(Object: TCustom, Pitch: Single, Turn: Single);
Всем спасибо. 00110001 00101100 00110110 00110001 00111000 00110000 00110011 00110011 00111001 00111000 00111000 00110111 00110100 00111001 00111000 00111001 00110100 00111000 00110100 00111000 00110010 00110000 00110100 00110101 00111000 00110110 00111000 00110011 00110100 00110011 00110110 00110101 00110110 |