Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нарисовать дерево канвой, рисую дерево канвой с помощью рекурсии 
:(
    Опции темы
Yuran89
Дата 3.5.2010, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 16.1.2009
Где: }{рустовая

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



Добрый вечер. У меня следующий вопрос: Пытаюсь нарисовать дерево с помощью канвы, но это надо сделать с помощью рекурсии. Сколько не пытаюсь получается нарисовать только одну ветку. Дерево следующего вида: user posted image

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

#include <vcl.h>
#include <math.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
double pi=3.1415926535;
int flag=0;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
        //Image1->Canvas->MoveTo(100,200);
        //Image1->Canvas->LineTo(100,150);

        BETKA(100,200,90,-pi/2);
        BETKA(100,200,90,pi/2);
}
//---------------------------------------------------------------------------
void TForm1::BETKA(int x,int y, int L, double a)
{
       double b=pi/4,m=0.5;
       int x0,y0;
       if(L<5 || L>100) flag=1;

       if (flag==0)
       {
       Image1->Canvas->MoveTo(x,y);
       x0=x;  y0=y;

       x=x+(L*cos(a));
       y=y+(L*sin(a));

       Image1->Canvas->LineTo(x,y);

       BETKA(x,y,L*m,a-b/2);  // первый "отросток" - отклонение на -b/2

       //BETKA(x,y,L*m,a+b/2);  //второй "отросток" - отклонение на +b/2

       Image1->Canvas->MoveTo(x0,y0);


       }
}
//----------------------------------------------


Что я делаю не так?
PM MAIL WWW   Вверх
Yuran89
Дата 3.5.2010, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 16.1.2009
Где: }{рустовая

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



Все нашел ответ. Надо обьявить int flag=0; прямо в функции.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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