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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2010, 22:14   #1
Zalmancheg
 
Регистрация: 09.12.2010
Сообщений: 3
По умолчанию Построить график в декартовой системе функции, заданной в полярной

Собственно нужно построить график в декартовой системе функции, заданной в полярной.
Функция в полярной системе: r=tg(fi)*z/fi , fi - угол фи,z-некий коэффициент
Необходимо написать программу по следующему алгоритму:
1. Инициализация графического режима.
2. Организация цикла, в котором при изменении угла fi вычис-ляется значение радиус-вектора r по предложенной функции.
3. Внутри цикла производится перевод полярной координаты в декартову (координату экрана).
4. Также в цикле рисуется точка, полученная по данной формуле, затем она соединяется с предыдущей точкой.
5. Вычерчивание асимптот и осей координат.
6. Выход из графического режима.
--------------------------------------------------------
В теме графика я вообще не разобрался, поэтому прошу помочь с такой вот задачкой.
Вот моя жалкая попытка написать код, наверняка с огромной кучей ошибок, так что сильно не пинайте.
--------------------------------------------------------
Код:
Uses Graph;
Var
x, y, a, b, r, fi: Real;
x0, y0, xg, yg,
xmax, ymax,
grd, grm: Integer; 
{ ----------------------------------------------------- } 
Function Func(x: Real): Real; 
const z=2;
Begin
Func:=sin(x)/cos(x)/x*z;
End; 
{----------------------------------------------------------}
BEGIN 
x0:=60; 
y0:=300;
a:=0; b:=200;
grd:=Detect;
InitGraph(grd, grm, '');
If GraphResult=grOk Then
Begin
SetColor(15);
xmax:=GetMaxx;
ymax:=GetMaxy;
Line(10, y0, xmax-100, y0);
Line(x0, 10, x0, ymax-100);
fi:=0;
While (fi<=2*pi) and (fi<>0) and (cos(fi)<>0) Do
Begin
 r:=func(x);
 xg:=x0+trunc(r*cos(fi));
 yg:=y0-trunc(r*sin(fi));
 putpixel(xg,yg,10);
 x:=x+0.1;
End;
ReadLn;
CloseGraph;
End;
END.
Zalmancheg вне форума Ответить с цитированием
Старый 09.12.2010, 22:18   #2
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

Когда-то рисовал, может пригодится
Код:
  for i:=0 to 360 do
  begin
   r:=3*a*cos(RadToDeg(i))*sin(RadToDeg(i)); //- твоя фигура
//     r:=a*cos(3*RadToDeg(i));  3 лепестковая роза
//   r:=a-sin(RadToDeg(i)); - улитка Паскаля
{переход к Декартовым координатам}
   x:=round(nnn*r*cos(RadToDeg(i)));
   y:=round(nnn*r*sin(RadToDeg(i)));
   PaintBox1.Canvas.Pixels[(PaintBox1.Width div 2)+x,(PaintBox1.Height div 2)-y]:=CD1.Color;
  end;
Код:
nnn:=PaintBox1.Height div 6;
- масштаб


У меня центр (0,0) был в левом верхнем углу

P.S. Это на Delphi, недостающие функции можно написать
Нормальное состояние техники - нерабочее, все остальное частный случай.

Последний раз редактировалось alex_fcsm; 09.12.2010 в 22:22.
alex_fcsm вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
построить график функции Катюшка_92 Microsoft Office Excel 2 19.09.2010 10:17
за $ построить график функции c# NastyaL Фриланс 3 12.08.2010 08:57
Построить график функции Horknee Паскаль, Turbo Pascal, PascalABC.NET 15 23.09.2008 09:50