|
Вопрос # 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] [Следующая »]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|