| 
| 
 | Вопрос # 4 840/ вопрос решён / | 
 |  Приветствую, уважаемые эксперты!Мне очень нужен код программы которая строила бы графики функций: sin, cos, tg, ctg, arcsin, arccos, arctg и arcctg; можно на канве, или через TChar. Сам уже всё перепробовал.
 
|  |   Вопрос задал: ierihon1 (статус: 1-ый класс)Вопрос отправлен: 19 декабря 2010, 04:14
 Состояние вопроса: решён, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 116; последнее сообщение — 26 декабря 2010, 20:15; участников в обсуждении: 4. Страницы: [1] [2] [3] [4] [5] [6] [Следующая »]  
|   | min@y™ (статус: Доктор наук), 19 декабря 2010, 06:32 [#1]: Цитата (ierihon1): Сам уже всё перепробовал. НЕ ВЕРЮ!!! © Станиславский.
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | ierihon1 (статус: 1-ый класс), 19 декабря 2010, 07:15 [#2]:что же тогда советует делать станилавский? |  
|   | min@y™ (статус: Доктор наук), 19 декабря 2010, 07:21 [#3]: Цитата (ierihon1): что же тогда советует делать станилавский?  Перепробовать действительно всё!
 Что не получается-то?
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | min@y™ (статус: Доктор наук), 19 декабря 2010, 07:23 [#4]:Кстати, включить мозг тоже не помешает. Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Мережников Андрей (статус: Абитуриент), 19 декабря 2010, 07:24 [#5]:где пример пробования хот чего-нибудь из всего перепробованного? |  
|   | min@y™ (статус: Доктор наук), 19 декабря 2010, 07:31 [#6]: Цитата (Мережников Андрей): где пример пробования хот чего-нибудь из всего перепробованного?  Как где? В интернетах!
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | ierihon1 (статус: 1-ый класс), 19 декабря 2010, 07:32 [#7]:когда ввожу котангенс выдаёт деление на ноль, arccos выдаёт: invalid floating point opreration, на arcctg вообще не то строит... arcsin если пытаться растянуть график выдаёт то же что и arccos, а остальные вроде норамально все работают. |  
|   | ierihon1 (статус: 1-ый класс), 19 декабря 2010, 07:32 [#8]:ша пример будет |  
|   | 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 (статус: 1-ый класс), 19 декабря 2010, 07:36 [#10]:это только котангенс. остальные может пока не надо? по одному думаю будет лучше разбирать. |  
|   | Мережников Андрей (статус: Абитуриент), 19 декабря 2010, 07:43 [#11]:может стоит написать комментарии? Тогда и самому понятней будет |  
|   | min@y™ (статус: Доктор наук), 19 декабря 2010, 07:44 [#12]:естественно, что деление на 0 надо отслеживать и исключать. Для котангенса это угол ±пи·n. Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | min@y™ (статус: Доктор наук), 19 декабря 2010, 07:45 [#13]:Чертить график по Canvas.Pixels[] - это ацтой. Юзай MoveTo() и LineTo(). Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | ierihon1 (статус: 1-ый класс), 19 декабря 2010, 07:53 [#14]:я бы и рад через MovTo() & LineTo() вот только куча лишних линий получается, и от них не могу избавиться, и как можно исключить деление на 0 я чё то не врубаюсь... |  
|   | ierihon1 (статус: 1-ый класс), 19 декабря 2010, 07:55 [#15]:зачем коментировать то что и так понятно? |  
|   | 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 (статус: 1-ый класс), 19 декабря 2010, 08:31 [#18]:min@y™: а как это будет выглядеть в коде? |  
|   | ierihon1 (статус: 1-ый класс), 19 декабря 2010, 09:34 [#19]:всё с котангенсом разобрался большое спасибо min@y™) теперь надо взятся за ArcCtg нижк код: |  
|   | 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] [Следующая »]  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |