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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.03.2017, 15:06   #1
users1
Пользователь
 
Регистрация: 12.01.2017
Сообщений: 19
По умолчанию Graph ABC.NET

При масштабировании смещается сетка может кто знает че сделать?

Код:
program p2;

uses
    GraphABC;
var
  h_form: real;
  W, H: integer;
  CamX, CamY: integer;
  scale: integer;

procedure KeyDown(Key: integer);
begin
  case Key of
    VK_Z: if scale > 15 then scale := scale - 15;
    VK_X: if scale < 150 then scale := scale + 15;
    VK_Up: if CamX > -200 then  CamX := CamX - 10;
    VK_Down: if CamX < 200 then CamX := CamX + 10;
    VK_Right: if CamY < 200 then CamY := CamY + 10;
    VK_Left: if CamY > -200 then  CamY := CamY - 10;
  end;
end;

procedure coord_grid(scale: integer);
var
  step: word;
begin
  SetPenColor(clLightBlue);
  step := 1;
  for var i := 1 to H div scale do
  begin
    line(0 + step, 0, 0 + step, W);
    line(0, 0 + step, H, 0 + step);
    step := step + scale;
  end;
  
end;

procedure coord_plane(W: integer; scale: integer);
var
  step: word;
  center_disp: word;
begin
  SetPenColor(clBlack);
  center_disp := W div 2;
  step := scale;
  line(0, center_disp + CamX, 3 * center_disp, center_disp + CamX);
  line(center_disp + CamY, 0, center_disp + CamY, 3 * center_disp);
  textout(2 * center_disp - 10, center_disp - 20 + CamX, 'Y');
  textout(center_disp + 5 + CamY, 0, 'X');
  textout(center_disp + 5 + CamY, center_disp + CamX + 10, '0');
  
  for var i := 1 to 10 do
  begin
    line(center_disp + round(i * step) + CamY, center_disp - 3 + CamX, center_disp + round(i * step) + CamY, center_disp + 3 + CamX);
    textout(center_disp + round(i * step) + CamY, center_disp + 10 + CamX, i);
    line(center_disp - round(i * step) + CamY, center_disp - 3 + CamX, center_disp - round(i * step) + CamY, center_disp + 3 + CamX);
    textout(center_disp - round(i * step) + CamY, center_disp + 10 + CamX, -i);
    line(center_disp - 3 + CamY, center_disp - round(i * step) + CamX, center_disp + 3 + CamY, center_disp - round(i * step) + CamX);
    textout(center_disp - 15 + CamY, center_disp - round(i * step) + CamX, i);
    line(center_disp - 3 + CamY, center_disp + round(i * step) + CamX, center_disp + 3 + CamY, center_disp + round(i * step) + CamX);
    textout(center_disp - 20 + CamY, center_disp + round(i * step) + CamX, -i);
  end;
end;

function f(x: real): real;
begin
  f := x * x * x * x * x;
end;

begin
  
  W := 600;
  H := 600;
  SetWindowSize(W, H);
  
  h_form := 0.02;
  
  LockDrawing;
  scale := 15;
  CamX := 0;
  CamY := 0;
  OnKeyDown := KeyDown;
  repeat
    ClearWindow;
    coord_grid(scale);
    coord_plane(W, scale);
    
    SetCoordinateOrigin(W div 2, W div 2  );
    SetPenColor(clRed);
    
    SetBrushStyle(bsClear);
    moveto(Round(W / 2 * scale + CamY ), Round(H / 2 * scale + CamX));
    
    var x := -10.0;
    while x < 10 do
    begin
      var y := f(x);
      lineto(Round(-x * scale) + CamY, Round(y * scale) + CamX );
      x := x + h_form;
    end;
    
    SetBrushStyle(bsSolid);
    
    SetCoordinateOrigin(0, 0);
    textout(10, 20, 'График функции y = x^5,');
    textout(10, 40, 'Масштаб: ');
    textout(75, 40, scale);
    
    Redraw;
  until false;
end.
_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 29.03.2017 в 15:09.
users1 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите переделать из паскаля abc в паскаль abc.net Smile189 Паскаль, Turbo Pascal, PascalABC.NET 3 09.11.2016 08:12
Сколько положительных элементов содержит матрица?(Модуль Graph ABC) Otar4ik Помощь студентам 0 04.02.2014 18:32
паскаль.Как подключить модуль ''graph'' в паскале abc? AndrewPl Помощь студентам 11 22.03.2013 19:11
graph в pascal ABC toffee4ka Помощь студентам 0 20.02.2012 10:31
Можно ли к среде PascalABC.NET прикрутить модуль “graph» WitaliG Помощь студентам 0 18.09.2010 08:24