Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нарисовать линию, и небольшой алгоритмик 
:(
    Опции темы
Rekah
Дата 16.8.2007, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Всем привет.
Мне нужен небольшой примерчик, в котором реализованы нечто похожее на часы. Есть линия, которая двигается как стрелка часов. Я не знаю как реализовать алгоритм. 

Что-то типа:
Код

LineTo(100, 10);
MooviTo(100, 110);

//перерисовка и остановка на секунду
for(int x=100, y=10; //алгоритм ; ){

lineTo(x, y);
MooviTo(x, y);

sleep(1000); 
}


помогите у кого есть пример или время smile
PM MAIL   Вверх
SABROG
Дата 16.8.2007, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

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



Есть центр круга, если линия круга. Найдешь алгоритм рисования окружности - найдешь ответ на свой вопрос.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
jonie
Дата 16.8.2007, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

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



вспомнить про sin-усы, полярные координаты и PI )
___
ну если совсем невтерпеж то http://articles.org.ru/cfaq/index.php?qid=2438&catid=96

Это сообщение отредактировал(а) jonie - 16.8.2007, 19:52


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
Rekah
Дата 16.8.2007, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Можно пример, как использовать sin и cos ?

Почему у меня не получается сделать четверь круга таким образом: 
Код

void __fastcall TForm1::Button1Click(TObject *Sender)
{
 double X=100, Y=160, endX=100, endY=10;
 double eden=150.00/15.00, Y_=0.00; // åäåíèöà äëèíû

 //ShowMessage(eden);

 for(int t=1;t!=16;t++){

 Canvas->MoveTo(X, Y);
 Canvas->LineTo(endX, endY);

 endX +=eden;
 Y_ = std::pow(150.00, 2.00) - std::pow((eden*t), 2); //Êâàäðàò êàòåòà ïî îñè Y
 if(Y_!=0)
  endY= 160 - std::sqrt(Y_);
 else
  endY= 160;

 Sleep(1000);
 };

}


Добавлено через 3 минуты и 47 секунд
Я беру длину линии равной 150, делю ее на "15 минут". Вычитаю из квадрата гипотенузы = 150 квадрат катета который возрастает с каждой секундой, и получаю квадрат катета  - сторона по оси Y. Но четверь круга не прорисовываеться все равно. Почему так? 
PM MAIL   Вверх
Rekah
Дата 17.8.2007, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Нууууууу. Что, ни кому не интересно ? :(
PM MAIL   Вверх
volvo877
Дата 17.8.2007, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

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



Чтобы не мучаться с Sleep(1000), положи на форму TTimer с интервалом в 1000, изначально его свойство Enabled выстави в false, и сделай:

Код

void __fastcall TForm1::Button3Click(TObject *Sender)
{
  Timer1->Enabled = true;
}

int angle = 0;

void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
    int center_x = 100, center_y = 100;
    const int R = 50;

    if(angle <= 90) { // Это - если надо четверть круга
        PaintBox1->Canvas->MoveTo(center_x, center_y);
        double x = center_x + R * sin(angle/(180/M_PI));
        double y = center_y - R * cos(angle/(180/M_PI));
        PaintBox1->Canvas->LineTo(x, y);

        angle += 10; // по 10 градусов
        if(angle > 360) angle = 0;
    }
    else
        Timer1->Enabled = false; // Останавливаем таймер - можешь этого и не делать

}


PM MAIL   Вверх
jonie
Дата 17.8.2007, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

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



-DELETE-

Это сообщение отредактировал(а) jonie - 17.8.2007, 18:58


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
Rekah
Дата 18.8.2007, 07:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



volvo877, ОГРОМНЕЙШЕЕ спасибо тебе smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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