Поиск:

Ответ в темуСоздание новой темы Создание опроса
> рекурсия, небольшая проблема 
:(
    Опции темы
krot100500
Дата 27.5.2012, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Программа строит с помощью рекурсии: кривая фон Коши, основанная на треугольниках,направленных внутрь.
Код

#include <vcl.h>
#pragma hdrstop
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int nmodel=0;
float xx[30],yy[30];
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void side(float xA,float yA,float xB,float yB,int n)
{int i;
 float x,y,x1,y1,dx=xB-xA,dy=yB-yA;
 if(n==0)
 {Form1->Canvas->MoveTo(xA,yA);
  Form1->Canvas->LineTo(xB,yB);
 }
 else
 {
 x1=xA;y1=yA;
  for(i=1;i<=nmodel;i++)
  {x=x1;y=y1;
  x1=xA+dx*xx[i]-dy*yy[i];
  y1=yA+dy*xx[i]+dx*yy[i];
  side(x,y,x1,y1,n-1);
  }}}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
 int Xmax,Ymax;
 Xmax = StrToInt(Form1->ClientWidth);
 Ymax = StrToInt(Form1->ClientHeight);
 TColor pc,bc;
 Form1->Canvas->Pen->Color = clWhite;
 Form1->Canvas->Brush->Color = clWhite;
 Form1->Canvas->Rectangle(0,0,Xmax,Ymax);
 Canvas->Pen->Color = pc;
 Canvas->Brush->Color = bc;

 int n,k,i;
 float pi,theta,r,xA,yA,xB,yB,xC,yC,sizefactor,xmargin,phi;
 k=3;
 n= StrToFloat(Edit2->Text);
 nmodel=3;
 nmodel++;
 xx[1]=0.334;xx[2]=0.5;xx[3]=0.666;
 yy[1]=0;yy[2]=0.3;yy[3]=0;
 sizefactor=0.8;
 xx[nmodel]=1;

 xC=Xmax/2;
 yC=Ymax/2;
 r=yC*sizefactor;
 pi=4*3.14;
 theta=2*pi/k;
 phi=-0.5*theta;
 xB=xC+r*cos(phi);
 yB=yC+r*sin(phi);

 for(i=0;i<k;i++)
  {xA=xB;yA=yB;
   phi+=theta;
   xB=xC+r*cos(phi);
   yB=yC+r*sin(phi);
   side(xA,yA,xB,yB,n);}
}

Вот сам текст.
Проблема в следуещем: при рисовании любой глубины рекурсии "обрубается" небольшой кусочек в нижнем угле треугольника. С чем это может быть связано?
PM MAIL   Вверх
Dem_max
Дата 28.5.2012, 03:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



наверное с количеством проходов, если их у тебя например 10 то должно быть 11


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
krot100500
Дата 30.5.2012, 01:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



проверил, с проходами вроде норм все, я думаю что нето что-то в массиве координат, хотя там вроде тоже норм, последнее на что могу подумать так это само рисование

Это сообщение отредактировал(а) krot100500 - 30.5.2012, 01:24
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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