Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.09.2014, 23:40   #1
enotgr
 
Регистрация: 08.09.2014
Сообщений: 8
По умолчанию Проблема процедуры circle в Pascal ABC

Я запрограммировал анимацию и дело в том, что как я только что выяснил, окружность в Pascal ABC закрашивает все, на что наступает. Я выложу код программы, если кто знает в чем суть и знает как решить проблему, ответьте. У меня закрашивается линия, вы поймете в чем суть, если запустите прогу у себя.

Код:
Program graphic;
uses graphabc;
const w0=-1;
      Pi=3.1415;
var b,i,xc,yc,dx,dy:integer;
    R,r1,h,m,x,y,x1,y1,t:real;
    XX,YY,XX1,YY1:integer;
procedure main(var xc,yc:integer);
var b,dx,dy:integer;
    s:string;
begin
     dx:=60;
     dy:=60;
     setwindowwidth(800);
     setwindowheight(800);
     xc:=round(windowWidth/2)-30;
     yc:=round(windowHeight/2)-3;
     setpenwidth(1);
     circle(xc,yc,3*dx);
     line(xc,20,xc,windowWidth-20);
     line(20,yc,windowWidth-20,yc);
     b:=-round(windowWidth/2/dx);
     for i:=b to -b do
         begin
              line(xc+i*dx,yc+10,xc+i*dx,yc-10);
              str(i,s);
              textout(xc+i*dx,yc+20,s);
              line(xc+10,yc+i*dy,xc-10,yc+i*dy);
         end;
end;
procedure EpiTrohoid(t,R,h:Real;var x,y,x1,y1:real);
var XX,YY,XX1,YY1:integer;
begin
     x:=(R+r1)*cos(w0*t)-r1*cos(((R+r1)/r1)*w0*t);
     y:=(R+r1)*sin(w0*t)-r1*sin(((R+r1)/r1)*w0*t);
     x1:=(R+r1)*cos(w0*t);
     y1:=(R+r1)*sin(w0*t);
     XX:=xc+Round(x);
     YY:=yc+Round(y);
     circle(xc+Round(x1),yc+Round(y1),Round(r1));
     line(XX1,YY1,XX,YY);
     XX1:=XX;
     YY1:=YY;
     line(xc+round(x1),yc+round(y1),XX,YY);
end;
BEGIN
     r1:=60;
     R:=3*r1;
     h:=r1;
     t:=0;
     while (t<=2*Pi) do
           begin
                setpencolor(clwhite);
                EpiTrohoid(t,R,h,x,y,x1,y1);
                t:=t+0.05;
                setpencolor(clred);
                EpiTrohoid(t,R,h,x,y,x1,y1);
                setpencolor(clblack);
                main(xc,yc);
                sleep(100);
           end;
END.
Изображения
Тип файла: jpg 13.jpg (58.4 Кб, 126 просмотров)

Последний раз редактировалось enotgr; 14.09.2014 в 23:43.
enotgr вне форума Ответить с цитированием
Старый 15.09.2014, 08:54   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

есть возможность управлять стилями заливки фигур.

попробуйте вот так:
Код:
procedure main(var xc,yc:integer);
var b,dx,dy:integer;
    s:string;
begin
     dx:=60;
     dy:=60;
     setwindowwidth(800);
     setwindowheight(800);
     xc:=round(windowWidth/2)-30;
     yc:=round(windowHeight/2)-3;
     setpenwidth(1);
     
     SetBrushStyle(bsClear);
     
     circle(xc,yc,3*dx);
....
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с матрицами. Процедуры и функции [Pascal ABC] VadimTopOdin Помощь студентам 0 28.01.2014 15:34
pascal abc, pascal turbo. выборка данных из одного .txt в другой ТипичныйСтудент Помощь студентам 6 27.04.2013 15:29
процедуры и функции: Описать процедуру RectPS (x1,y1,x2,y2,P,S), вычисляющую периметр P и площадь S прямоугольника (Pascal ABC) Ivanacats Помощь студентам 10 03.10.2012 17:50
Проблема Pascal ABC программирование tomate Помощь студентам 15 11.10.2010 12:54
Окружность или Circle. NIQK Помощь студентам 2 15.12.2009 18:36