Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Графика и игры
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.10.2010, 17:03
Аватар для ~TB~
~TB~ ~TB~ вне форума
Начинающий
 
Регистрация: 17.02.2006
Адрес: Казахстан
Сообщения: 172
Версия Delphi: XE
Репутация: 1500
По умолчанию Нужна помощь при вращении

Собственно нужно найти формулы или способ обойтись без формул:
Значит имеется некий квадрат (или куб, хотя не важно, тут всего 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  
Старый 16.10.2010, 18:33
Аватар для dr. F.I.N.
dr. F.I.N. dr. F.I.N. вне форума
I Like it!
 
Регистрация: 12.12.2009
Адрес: Россия, г. Новосибирск
Сообщения: 660
Версия Delphi: D6/D7
Репутация: 26643
По умолчанию

вот пожалста. только математика.
__________________
Грамотно поставленный вопрос содержит не менее 50% ответа.
Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть.

Последний раз редактировалось dr. F.I.N., 12.01.2012 в 17:09.
Ответить с цитированием
  #3  
Старый 16.10.2010, 21:14
Аватар для ~TB~
~TB~ ~TB~ вне форума
Начинающий
 
Регистрация: 17.02.2006
Адрес: Казахстан
Сообщения: 172
Версия Delphi: XE
Репутация: 1500
По умолчанию

Спасибо большое, сейчас попробую себе в программу запихать.
__________________
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  
Старый 17.10.2010, 02:27
Аватар для ~TB~
~TB~ ~TB~ вне форума
Начинающий
 
Регистрация: 17.02.2006
Адрес: Казахстан
Сообщения: 172
Версия Delphi: XE
Репутация: 1500
По умолчанию

Чувствую себя дико тупым. Пытался применить это к своему коду, но ничего хорошего кроме обычного вращения без нормального поворота не получается.

Может кто сможет подпнуть меня в нужное направление?

В общем мой кусок кода:
Код:
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  
Старый 17.10.2010, 14:57
Аватар для ~TB~
~TB~ ~TB~ вне форума
Начинающий
 
Регистрация: 17.02.2006
Адрес: Казахстан
Сообщения: 172
Версия Delphi: XE
Репутация: 1500
По умолчанию

Проблема решилась с помощью метода 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
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 02:40.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter