Помощь - Поиск - Пользователи - Календарь
Полная версия: Модуль Graph
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
setare
Вы не могли бы подсказать как можно нарисовать с помощью модуля graph подшипник. Эта тема будет у нас на экзамене и никто не знает как это можно сделать. Спасибо!
volvo
setare
Ээээ.... Правда это очень отдаленно напоминает подшипник lol.gif
Код
uses Graph;

var
 grDriver, grMode, ErrCode: Integer;
 i, nx, ny: integer;
begin
 grDriver := Detect;
 InitGraph(grDriver, grMode,'');
 ErrCode := GraphResult;
 if ErrCode <> grOk then
 begin
   Writeln('Graphics error:', GraphErrorMsg(ErrCode));
   halt;
 end;

 circle(getmaxx div 2, getmaxy div 2, 200);
 circle(getmaxx div 2, getmaxy div 2, 150);
 i := 0;
 while i <= 360 do
   begin
     nx := (getmaxx div 2) + trunc(175 * sin(i / (180 / Pi)));
     ny := (getmaxy div 2) + trunc(175 * cos(i / (180 / Pi)));
     circle(nx, ny, 25);
     inc(i, 18)
   end;

 readln;
 CloseGraph;
end.
Altair
Цитата
Вы не могли бы подсказать как можно нарисовать с помощью модуля graph подшипник.

Нарисовать подшипник в масштабе 1:1 в Auto CAD'e, сохранить в BMP файл, и вывести с помощью модуля Graph на экран этото BMP - так будет точно подшипник smile.gif
Jahnerus
Кстати! вот к чему может привести лень програмера ...
volvo
Цитата
...
inc(i, 18)
...

Было слегка лень подберать это число просто перебором... потому чучуть модернизировал прогу ... smile.gif Вводятся только 2 радиуса ... ну и так всё видно наверно ...
Код
uses
 graph;

const
 r1=100;
 r2=200;
var
 dr,lo,hi,x,y,i,step:integer;
 r3,r4:real;

begin
 dr:=detect;
 getmoderange(dr,lo,hi);
 initgraph(dr,hi,'e:\bp\bgi');
 setcolor(12);
 circle(getmaxx div 2, getmaxy div 2,r1);
 circle(getmaxx div 2, getmaxy div 2,r2);
 i:=0;
 r3:=r1+(r2-r1)/2;
 r4:=(r2-r1)/2;
 step:=round(2*(180-360*arctan(2*sqrt(sqr(r3)-sqr(r4/2))/(r4))/pi));
 while (360 mod step <> 0) do inc(step);
 setcolor(10);
 while i<=360 do begin
   x:=round(r3*cos(i*pi/180)) + getmaxx div 2;
   y:=round(r3*sin(i*pi/180)) + getmaxy div 2;
   circle(x,y,round(r4));
   inc(i,step);
 end;
 readln;
 closegraph;
end.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.