Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вращение по кругу, Вращение точки вокрук центра Бол. круга 
:(
    Опции темы
Veve
Дата 7.6.2007, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 1.1.2005
Где: Латвия, Рига

Репутация: нет
Всего: 13



Помогите плиз а то запарился... Нужно сделать вращение точки вокруг центра, у меня получилось так:
всё нормально, но когда даходит до Pi... точка застривает...  чё-то голова не варит, помогите плизз... или потскажите другое решине....



Код

procedure TForm1.Button3Click(Sender: TObject);
var x,y,xcent,ycent, xpoint, ypoint,
    R,alfa,alfay, newalfa : extended ;
begin
  // Получаем координаты центра вращения:

     xcent:=      Shape4.Left+(Shape4.Width/2);
     ycent:=      Shape4.Top+(Shape4.Height/2);

  // Получаем координаты точки вращения:
     xpoint:=     Shape3.Left+(Shape3.Width/2);
     ypoint:=     Shape3.Top+(Shape3.Height/2);

  // проекции 
    x:=xpoint-xcent;
    y:=ypoint-ycent;

 // ростояние от центра до точки
    R:=sqrt(sqr(x)+sqr(y));

// угол
     alfa:=  ArcCos(x/R);

  // новый угол
    newalfa:=alfa+Pi/45;

  // Новые координаты:

    x:=Cos(newalfa)*r;
    y:=Sin(newalfa)*r;


    Shape3.Left:=ROUND(xcent+x-(Shape3.Width/2));
    Shape3.Top:=ROUND(ycent+y-(Shape3.Height/2));
end;


Присоединённый файл ( Кол-во скачиваний: 15 )
Присоединённый файл  1.JPG 11,93 Kb
PM MAIL ICQ Skype MSN   Вверх
Burka
Дата 7.6.2007, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 11.5.2007

Репутация: нет
Всего: 2



А важен ли способ построения?
Я примерно так делал:
 
Код

var 
 R //радиус
,XCenter,YCenter //Центр
,A:integer; //угол
 X,Y:real; //точка на окружности

A:=Random(360);
R:=5;
Xcenter:=10;
Ycenter:=10;
 
//сначала правда угол в радианы вроде перевести надо, будем считать что перевели

 x:=R*sin(A) + Xcenter;
 y:=R*cos(A) + Ycenter; 

Вертелось даже если угол больше/меньше 360.



Это сообщение отредактировал(а) Burka - 7.6.2007, 22:25


--------------------
Великие умы обсуждают идеи; средние умы обсуждают события; мелкие умы обсуждают людей.
PM MAIL   Вверх
Veve
Дата 7.6.2007, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 1.1.2005
Где: Латвия, Рига

Репутация: нет
Всего: 13



Это не совсем то... мне нужно чтобы вращение происходило плавно с шагом допустим в 4 градуса... да и в дальнейшем радиус и начальное положение точки будут менятся....
PM MAIL ICQ Skype MSN   Вверх
Burka
Дата 7.6.2007, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 11.5.2007

Репутация: нет
Всего: 2



Ну меняй угл на 4 градуса и будет плавно.
Ведь от координаты точки зависят координаты центра, поэтому перемещай скоко влезет, все работать будет.


--------------------
Великие умы обсуждают идеи; средние умы обсуждают события; мелкие умы обсуждают людей.
PM MAIL   Вверх
Veve
Дата 7.6.2007, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 1.1.2005
Где: Латвия, Рига

Репутация: нет
Всего: 13



Ну у тебя угол меняется рандомом... а чтобы увеличивать надо знать начальный угол.. 
к тому же не понятно почему
 x:=R*sin(A) + Xcenter;
 y:=R*cos(A) + Ycenter; 
начколько я помню наооборот...
А в остальном у меня тоже самое только я получаю эти данные.... 
PM MAIL ICQ Skype MSN   Вверх
Burka
Дата 7.6.2007, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 11.5.2007

Репутация: нет
Всего: 2



Цитата

Ну у тебя угол меняется рандомом... а чтобы увеличивать надо знать начальный угол.. 

Емое, проблема рандом поменять на Inc(A,4); и сделать глобальные переменные.

Цитата

А в остальном у меня тоже самое только я получаю эти данные....


А зачем лишние расчеты? Да и менее гибкий год получается.
ЗЫ а косинус с синусом мог и местами перепутать.

Это сообщение отредактировал(а) Burka - 7.6.2007, 22:47


--------------------
Великие умы обсуждают идеи; средние умы обсуждают события; мелкие умы обсуждают людей.
PM MAIL   Вверх
Veve
Дата 7.6.2007, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 1.1.2005
Где: Латвия, Рига

Репутация: нет
Всего: 13



Не всё равно... мне нужно так... долго объяснять.. лучше помоги с этим алгоритмом
PM MAIL ICQ Skype MSN   Вверх
Sunvas
Дата 8.6.2007, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



Есть такая хорошая функция (когда-то писал для себя) - поворачивает точку относительно другой точки на определенный градус. Воспользуйся ей.
Код

function rotate(t,p:tpoint;angle:integer):tpoint;
begin
  result.x:=trunc((t.x-p.X)*cos(angle*pi/180) - (t.y-p.Y)*sin(-angle*pi/180)+p.X);
  result.y:=trunc((t.y-p.Y)*cos(angle*pi/180) + (t.x-p.X)*sin(-angle*pi/180)+p.y);
end;



--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0776 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.