Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 840

/ вопрос решён /

Приветствую, уважаемые эксперты!
Мне очень нужен код программы которая строила бы графики функций: sin, cos, tg, ctg, arcsin, arccos, arctg и arcctg; можно на канве, или через TChar. Сам уже всё перепробовал.

ierihon1 Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: ierihon1 (статус: 1-ый класс)
Вопрос отправлен: 19 декабря 2010, 04:14
Состояние вопроса: решён, ответов: 0.


Мини-форум вопроса

Всего сообщений: 116; последнее сообщение — 26 декабря 2010, 20:15; участников в обсуждении: 4.

Страницы: [1] [2] [3] [4] [5] [6] [Следующая »]

min@y™

min@y™ (статус: Доктор наук), 19 декабря 2010, 06:32 [#1]:

Цитата (ierihon1):

Сам уже всё перепробовал.

НЕ ВЕРЮ!!! © Станиславский.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
ierihon1

ierihon1 (статус: 1-ый класс), 19 декабря 2010, 07:15 [#2]:

что же тогда советует делать станилавский?
min@y™

min@y™ (статус: Доктор наук), 19 декабря 2010, 07:21 [#3]:

Цитата (ierihon1):

что же тогда советует делать станилавский?

Перепробовать действительно всё!
Что не получается-то?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
min@y™

min@y™ (статус: Доктор наук), 19 декабря 2010, 07:23 [#4]:

Кстати, включить мозг тоже не помешает.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 19 декабря 2010, 07:24 [#5]:

где пример пробования хот чего-нибудь из всего перепробованного?
min@y™

min@y™ (статус: Доктор наук), 19 декабря 2010, 07:31 [#6]:

Цитата (Мережников Андрей):

где пример пробования хот чего-нибудь из всего перепробованного?

Как где? В интернетах!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
ierihon1

ierihon1 (статус: 1-ый класс), 19 декабря 2010, 07:32 [#7]:

когда ввожу котангенс выдаёт деление на ноль, arccos выдаёт: invalid floating point opreration, на arcctg вообще не то строит... arcsin если пытаться растянуть график выдаёт то же что и arccos, а остальные вроде норамально все работают.
ierihon1

ierihon1 (статус: 1-ый класс), 19 декабря 2010, 07:32 [#8]:

ша пример будет
ierihon1

ierihon1 (статус: 1-ый класс), 19 декабря 2010, 07:35 [#9]:

function Tform4.CtgXF(CtgX:real; var CtgXmax,CtgXmin,CtgYmax,CtgYmin:real):real;
begin
  w:=StrToFloat(LabeledEdit10.Text);
  v:=StrToFloat(LabeledEdit18.Text);
  r:=StrToFloat(LabeledEdit22.Text);
  t:=StrToFloat(LabeledEdit28.Text);
 
  CtgXF:=w*Cot(CtgX*v-r)+t;
  CtgXmax:=pi;
  CtgXmin:=-pi;
  CtgYmax:=pi;
  CtgYmin:=-pi;
end;
 
procedure TForm4.Button29Click(Sender: TObject);
var CtgX,CtgY:real;
px,py:LongInt;
begin
  if (LabeledEdit10.Text='0') or (LabeledEdit10.Text='') then
    begin
      LabeledEdit10.Text:='1';
    end;
 
  if (LabeledEdit18.Text='0') or (LabeledEdit18.Text='') then
    begin
      LabeledEdit18.Text:='1';
    end;
 
  if LabeledEdit22.Text='' then
    begin
      LabeledEdit22.Text:='0';
    end;
 
  if LabeledEdit28.Text='' then
    begin
      LabeledEdit28.Text:='0';
    end;
 
  image4.Canvas.FillRect(rect(0,0,width,height));
  FormActivate(Sender);
  for PX:=1 to Image4.Width do
    begin
      CtgX:=CtgXmin+PX*(CtgXmax-CtgXmin)/(Image4.Width);
      CtgY:=CtgXF(CtgX,CtgXmax,CtgXmin,CtgYmax,CtgYmin);
      PY:=trunc((Image4.Height)+(CtgY-CtgYmin)*(Image4.height)/(CtgYmax-CtgYmin));
      image4.Canvas.Pixels[PX,PY]:=clBlack;
    end;
end;
ierihon1

ierihon1 (статус: 1-ый класс), 19 декабря 2010, 07:36 [#10]:

это только котангенс. остальные может пока не надо? по одному думаю будет лучше разбирать.
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 19 декабря 2010, 07:43 [#11]:

может стоит написать комментарии? Тогда и самому понятней будет
min@y™

min@y™ (статус: Доктор наук), 19 декабря 2010, 07:44 [#12]:

естественно, что деление на 0 надо отслеживать и исключать. Для котангенса это угол ±пи·n.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
min@y™

min@y™ (статус: Доктор наук), 19 декабря 2010, 07:45 [#13]:

Чертить график по Canvas.Pixels[] - это ацтой. Юзай MoveTo() и LineTo().
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
ierihon1

ierihon1 (статус: 1-ый класс), 19 декабря 2010, 07:53 [#14]:

я бы и рад через MovTo() & LineTo() вот только куча лишних линий получается, и от них не могу избавиться, и как можно исключить деление на 0 я чё то не врубаюсь...
ierihon1

ierihon1 (статус: 1-ый класс), 19 декабря 2010, 07:55 [#15]:

зачем коментировать то что и так понятно?
min@y™

min@y™ (статус: Доктор наук), 19 декабря 2010, 07:57 [#16]:

Цитата (ierihon1):

я бы и рад через MovTo() & LineTo() вот только куча лишних линий получается

Это зависит только от кривизны рук.

Цитата (ierihon1):

как можно исключить деление на 0 я чё то не врубаюсь

if (угол <> ±пи·n)
then считать котангенс и рисовать график;
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 19 декабря 2010, 08:15 [#17]:

Цитата (ierihon1):

зачем коментировать то что и так понятно?

Зачем задавать вопрос раз и так все понятно?
ierihon1

ierihon1 (статус: 1-ый класс), 19 декабря 2010, 08:31 [#18]:

min@y™: а как это будет выглядеть в коде?
ierihon1

ierihon1 (статус: 1-ый класс), 19 декабря 2010, 09:34 [#19]:

всё с котангенсом разобрался большое спасибо min@y™) теперь надо взятся за ArcCtg нижк код:
ierihon1

ierihon1 (статус: 1-ый класс), 19 декабря 2010, 09:35 [#20]:

function Tform4.ACtXF(ACtX:real; var ACtXmax,ACtXmin,ACtYmax,ACtYmin:real):real;
begin
  w:=StrToFloat(LabeledEdit16.Text);
  v:=StrToFloat(LabeledEdit20.Text);
  r:=StrToFloat(LabeledEdit26.Text);
  t:=StrToFloat(LabeledEdit32.Text);
 
  ACtXF:=w*(ArcCot(ACtX*v-r)+t);
  ACtXmax:=pi;
  ACtXmin:=pi;
  ACtYmax:=-pi*2;
  ACtYmin:=pi*2;
end;
 
procedure TForm4.Button33Click(Sender: TObject);
var ACtX,ACtY:real;
px,py:LongInt;
begin
  if (LabeledEdit16.Text='0') or (LabeledEdit16.Text='') then
    begin
      LabeledEdit16.Text:='1';
    end;
 
  if (LabeledEdit20.Text='0') or (LabeledEdit20.Text='') then
    begin
      LabeledEdit20.Text:='1';
    end;
 
  if LabeledEdit26.Text='' then
    begin
      LabeledEdit26.Text:='0';
    end;
 
  if LabeledEdit32.Text='' then
    begin
      LabeledEdit32.Text:='0';
    end;
 
  image3.Canvas.FillRect(rect(0,0,width,height));
  FormActivate(Sender);
  for PX:=1 to Image3.Width do
    begin
      ACtX:=ACtXmin+PX*(ACtXmax-ACtXmin)/(Image3.Width);
      ACtY:=ACTXF(ACtX,ACtXmax,ACtXmin,ACtYmax,ACtYmin);
      PY:=trunc((Image3.Height)-(ACtY-ACtYmin)*(Image3.height)/(ACtYmax-ACtYmin));
      image3.Canvas.Pixels[PX,PY]:=clBlack;
    end;
end;

Страницы: [1] [2] [3] [4] [5] [6] [Следующая »]

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 16 ноября 2024, 22:23
Выполнено за 0.03 сек.