Поиск:

Ответ в темуСоздание новой темы Создание опроса
> движение колеса по наклонной поверхности 
V
    Опции темы
Dakotta
Дата 28.11.2010, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Добрый день!

Мне нужно написать программу, имитирующую движение колеса со спицами по наклонной поверхности.

Вот мой код. 
Код

TForm1 *Form1;
const int n=10;
float speed=M_PI/40;
float angl=0;;
int R;
int dx;
int dy;
TPoint centr(int x,int y);
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{  
    int width=Form1->Image1->Width/10;
    R = width;
    TPoint centr(0+R,0+R);
    dx=2;
    dy=1;
    Timer1->Interval=30;
    Timer1->Enabled = true;
    Image1->Canvas->Rectangle(Image1->ClientRect);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
   if (angl>2*M_PI)
   {
       angl-=2*M_PI;
   }
   angl+=speed;

TCanvas *canv=Form1->Image1->Canvas;
int width=Form1->Image1->Width/10;
int R=width;
//центр окружности
TPoint centr(0+R,0+R);
//стираем колесо
canv->Pen->Color = clWhite;
canv->Ellipse(centr.x-R,centr.y-R,centr.x+R,centr.y+R);
//спицы
for (int i=0; i < n; i++)
{
canv->MoveTo(centr.x,centr.y);
canv->LineTo(cos(M_PI/n*i*2+angl)*R+centr.x,sin(M_PI/n*2*i+angl)*R+centr.y);
}
//приращение по х и у
centr.x+=dx;centr.y+=dy;
//рисуем колесо в новом месте
canv->Pen->Color = clRed;
canv->Ellipse(centr.x-R,centr.y-R,centr.x+R,centr.y+R);
//спицы в новом месте
for (int i=0; i < n; i++)
{
canv->MoveTo(centr.x,centr.y);
canv->LineTo(cos(M_PI/n*i*2+angl)*R+centr.x,sin(M_PI/n*2*i+angl)*R+centr.y);
}
}


В результате колесо со спицами крутится на одном месте, не могу понять, почему оно не движется по наклонной. Подскажите, пожалуйста, как это правильно реализовать.
PM MAIL   Вверх
cyberstream
Дата 28.11.2010, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Раз не движется, логично заключить, что координаты оси колеса не меняются? smile Тут и копай …
Код

 TPoint centr(int x,int y); //(line 8) - это прототип функции, принимающей аргументы х и у, возвращающей значение типа TPoint 
 TPoint centr; // а это объявление переменной типа TPoint

 TPoint centr(0+R,0+R);        //(line 15) - вновь объявляем переменую centr. Незачем. Заменить на 
 centr.x=0+R;  centr.y= 0+R;   
 Form1->DoubleBuffered = true; // чтоб не мерцал TImage 

 //центр окружности
 TPoint centr(0+R,0+R);    //(line 35) Убрать. Причина вращения на месте - каждым вызовом OnTimer создаётся локальная centr, уничтожаемая завершением работы функции.

--------------------
Не знаешь кого спросить? - Спроси google!
PM MAIL   Вверх
Dakotta
Дата 30.11.2010, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



спасибо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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