Помощь - Поиск - Пользователи - Календарь
Полная версия: Графика
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Mantikor123
Помогите написать програми времени уже савсем неуспеваю:(
нарисовать график:
y=sinX+3;

Нарисовать анимацию:
Шатающевовася подсолнуха
Ozzя
Цитата
уже савсем неуспеваю:(

А шо, таки призыв в РА уже объявлен? blum.gif

Цитата
нарисовать график:

Поиск по образцу "построение графика функции"
Mantikor123
В РА мне не грозит:)
а так не успеваю:(
Собствена график уже нарисовал:)
а вот анимацию......
Ozzя
Цитата
а вот анимацию......
А чего уж такого сложного?
Сам цветок рисуется элементарно (окружностями). А анимацию можно получить, сгибая стебель, например
Mantikor123
Цитата(Ozzя @ 26.03.2010 15:00) *

А чего уж такого сложного?
Сам цветок рисуется элементарно (окружностями). А анимацию можно получить, сгибая стебель, например

Помогите тогда плиз:)
а то мне даже на цветок смотреть страшна..sad.gif
Ozzя
Цитата
Помогите тогда плиз:)

Да не проблема. Вот только одну окружность нарисуй. А цветок из них я тебе сделаю
Mantikor123
М_м не совсем понял што ви имеете в виду, ну вот мои наброски...

program gr_1;
uses graph,crt;
var r1, rad, i, grDriver, grMode, errCode : integer;



begin
 grDriver:=detect;
   InitGraph(grDriver,grMode,'\bp\bgi\');
   errCode:=GraphResult;
   if errCode=grOk then begin
{for i:=1 to 999 do begin  }
   setcolor(14);
   circle(320+i,200+i,75);
  { floodfill(330,210,yellow);}
   circle(320+i,200+i,50);

   setcolor(18);
   setlinestyle(0,99,0);
   {circle(320,340,);}
   line(320,273,320,480);
   {end;}
   readln;

    closegraph;{ўi¤¬i­  ०Ё¬г Ја дiЄЁ}


    end;
end.


.
Ozzя
program gr_1;
uses
  graph,crt;
var
  i, grDriver, grMode, errCode : integer;

procedure PodSolnuh(x,y: Integer);
var
  rsmall,rad : Integer;
begin
  rad:=75;
  rsmall:=30;
  setcolor(Yellow);
  circle(x,y,rad);
  SetFillStyle(1,yellow);
  floodfill(x-1,y-1,yellow);
  setcolor(White);
  SetFillStyle(1,White);
  circle(x+rad,y-rad,rsmall);
  floodfill(x+rad,y-rad,White);
  circle(x+rad,y+rad,rsmall);
  floodfill(x+rad,y+rad,White);
  circle(x-rad,y+rad,rsmall);
  floodfill(x-rad,y+rad,White);
  circle(x-rad,y-rad,rsmall);
  floodfill(x-rad,y-rad,White);
  circle(x,y-rad-rsmall ,rsmall);
  floodfill(x,y-rad-rsmall,White);
  circle(x,y+rad+rsmall ,rsmall);
  floodfill(x,y+rad+rsmall,White);
  circle(x+rad+rsmall,y ,rsmall);
  floodfill(x+rad+rsmall,y,White);
  circle(x-rad-rsmall,y ,rsmall);
  floodfill(x-rad-rsmall,y,White);
end;

begin
  grDriver:=detect;
  InitGraph(grDriver,grMode,'\bp\bgi\');
  errCode:=GraphResult;
  if errCode=grOk then
    begin
      for i:=1 to 4 do
        begin
          podsolnuh(GetMaxX div 2 - i*100 ,GetMaxY div 2 + i*100);
          Delay(200);
          ClearviewPort;
        end;
      readln;
    end;
    closegraph;
end.

Рисуется и стирается подсолнух (без стебля).
Простейшая анимация - подсолнух рисуется, стирается - меняются координаты - снова/заново

volvo
Что-то больше на ромашку похоже, чем на подсолнух smile.gif

Оззя, кстати, у тебя нигде нет формулы для отрисовки фрактала - подсолнуха?... Где-то давно видел, теперь найти не могу. Просто для коллекции, я понимаю, что в этой теме делать движущийся фрактал - не совсем то, что нужно...
Ozzя
Ну-да smile.gif
Лепестки ж эллипсами надо отрисовывать. А рисование эллипса под наклоном под эту задачу - перебор, кажется.
Не, кода фрактального подсолнуха не встречал.
volvo
Цитата
А рисование эллипса под наклоном под эту задачу - перебор, кажется.
Ну, не настолько это сложно как может показаться.

Может, топикстартеру и не пригодится, но красиво получается smile.gif Может, кто-нибудь и использует когда потребуется.

program gr_1;
uses
  graph, crt;
const
  r2d = 180/Pi;

procedure DrawEllipse(xCenter, yCenter, Angle: integer);
const
  a = 15;
  b = 30;
var
  Alpha, Phi, fX, fY: double;
  i, X, Y: Integer;
begin
  Alpha := Angle/r2d;
  for i := 0 to 359 do
  begin
    Phi := i / r2d;
    fX := a * Cos(phi);
    fY := b * Sin(phi);
    X := Trunc(xCenter + fX * Cos(Alpha) - fY * Sin(Alpha));
    Y := Trunc(yCenter + fX * Sin(Alpha) + fY * Cos(Alpha));
    PutPixel(X, Y, Yellow);
  end;
  FloodFill(xCenter, yCenter, Yellow)
end;


procedure SunFlower(X, Y: Integer);
const
  RCircle = 75;
var
  i, dist: integer;
  phi: real;
begin
  SetColor(Yellow);
  SetFillStyle(SolidFill, Yellow);
  FillEllipse(X, Y, RCircle, RCircle);

  dist := (3 * RCircle div 2);
  for i := 0 to 359 do
  begin
    if i mod 20 <> 0 then continue;
    phi := i / r2d;

    DrawEllipse(Trunc(x + dist*cos(phi)),
                Trunc(y - dist*sin(phi)), 450 - i);
  end;
end;

var
  i, grDriver, grMode, errCode: integer;


begin
  grDriver := Detect;
  InitGraph(grDriver, grMode, '');

  errCode := GraphResult;
  if errCode = grOk then
  begin
    i := 1;
    SunFlower(GetMaxX div 2 - i*100, GetMaxY div 2 + i*100);
    readln;
  end;
  closegraph;
end.
(Движение добавлять не стал, это вообще элементарно)
Client
прикрепите скрин плз, охото глянуть что получилось smile.gif (у меня виста... smile.gif )
Lapp
Цитата(Client @ 26.03.2010 22:58) *
прикрепите скрин плз, охото глянуть что получилось smile.gif (у меня виста... smile.gif )

1. TP/BP прекрасно идет на Vista-32. Проблема не в Висте, а в 64-разрядности.
2. Обе проги замечательно компилируются FPC на моей W7-64 smile.gif
Client
у меня 32 битная и ни один проект с графикой на ТР не идет. А FPC нету smile.gif пойду скачаю...
sheka
Вот когда-то тоже похожую программку делал), только солнышко smile.gif Появился вопросик: floodfill так и должен долго отрисовывать заливку?
Lapp
Цитата(Client @ 26.03.2010 23:16) *
у меня 32 битная и ни один проект с графикой на ТР не идет.
А, ну да, сорри, она же полнооконная.. Извиняюсь )).
volvo
Цитата
floodfill так и должен долго отрисовывать заливку?
Не знаю, насчет должен или нет, но всегда FloodFill был намного медленнее, чем отрисовка заполненной фигуры (Bar будет быстрее чем Rectangle+FloodFill, а FillEllipse - быстрее Circle+FloodFill).

Вот что рисует мой код:
Нажмите для просмотра прикрепленного файла
А вот это - Оззин:
Нажмите для просмотра прикрепленного файла
Client
солнышко супер smile.gif сейчас бы у меня такое светило... гроза, дождь,тучи... smile.gif
Mantikor123
Всем спасибо за помощ и понимание:)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.