IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Графика в паскале, Построить графики функции
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Мужской

Репутация: -  -1  +


Необходимо построить графики заданной функции в паскале.

Условие задачи:

Построить графики функции, заданной в параметрически, при разных значениях параметра "а" (должна быть реализована возможность вывода нескольких графиков при разных значениях "а")
x=a(sh(t) -t), y=a(ch(t)-1) (a>0).

Помогите пожалуста. Заранее благодарю.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Построение любого графика


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Мужской

Репутация: -  -1  +


Мне та прога не поможет... у меня задание в параметрическом виде построить.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(matic @ 29.04.2007 15:16) *

Мне та прога не поможет... у меня задание в параметрическом виде построить.
прсти но что значит <<в параметрическом виде>>


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Цитата
у меня задание в параметрическом виде построить.
Значит, вот это поможет:

Графики функций, заданных параметрически
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Мужской

Репутация: -  -1  +


volvo, благодарю. Помог твой мануал.

Вот что получилось:


{$N+}
{$E+}
program ex;
uses crt, graph;

type
tcurve = procedure(t: double;
var x, y: double);
const

a = 3;
b = 9;
L: double = 4;

scale = 12; { mashtab izobrageniya }
step = 0.005;

{
procedura dlya otrisovki tochki krivoy,
parametricheskoe predstavlenie kotoroy zadano funkchiey F
pri znachenii parametra = T
}

procedure set_point(t: double; f: tcurve);
var
x, y: double;
begin
f(t, x, y);
putpixel( (getmaxx div 2) + trunc(scale * x),
(getmaxy div 2) - trunc(scale * y), white );
end;

{
otrisovka krivoy so znacheniem parametra,
legavshim v intervale [start, finish] i shagom izmeneniya parametra step
}

procedure draw_curve(start, finish, step: double;
f: tcurve);
var t: double;
begin
{ risovanie osi koordinat }
setcolor(green);
line(0, getmaxy div 2, getmaxx, getmaxy div 2);
line(getmaxx div 2, 0, getmaxx div 2, getmaxy);

t := start; { nachalo intervala }

{ poka ne vishli za granichu intervala }

while t <= finish do begin
set_point(t, f);
t := t + step; { narashivaem parametr}
end;
end;

procedure giper(t: double; var x, y: double); far;
begin
{ sh(t)=(exp(t)-exp(-t))/2, ch(t)=(exp(t)+exp(-t))/2 }
x := a * ((exp(t)-exp(-t))/2-t);
y := a * ((exp(t)+exp(-t))/2-1);
end;

var
mode, driver:integer;
begin
driver:=detect;
initgraph(mode, driver, 'D:\program\bp\bgi');

{draw_curve(nachalo intervala, konech intervala, shag, my_curve);}

draw_curve(-10, 10, step, giper);
readln;

closegraph;
end.



У меня теперь проблема, как мне организовать возможность вывода нескольких графиков при разных значениях "а" ?
Помогите пожалуйста.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Тебя смущает то, что A задана константой, и ее нельзя менять? Тогда опиши A вот так:
Const a: double = 3;

и после того, как отрисовал первую кривую с одним значением A, меняй его (фактически, теперь это - переменная со стартовым значением) и отрисовывай с другим значением...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Мужской

Репутация: -  -1  +


Цитата(volvo @ 2.05.2007 22:37) *

Тебя смущает то, что A задана константой, и ее нельзя менять? Тогда опиши A вот так:
Const a: double = 3;

и после того, как отрисовал первую кривую с одним значением A, меняй его (фактически, теперь это - переменная со стартовым значением) и отрисовывай с другим значением...

А по подробней?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






const
a: double = 3;

...

begin
driver:=detect;
initgraph(mode, driver, 'D:\program\bp\bgi');

draw_curve(-10, 10, step, giper); { <--- Рисуешь с параметром А = 3 }
a := 27; { меняешь параметр }
draw_curve(-10, 10, step, giper); { <--- Рисуешь уже с A = 27 }
readln;

closegraph;
end.

Можешь еще и цвет графика в процедуру draw_curve передавать как параметр, чтобы графики отрисовывались разными цветами при разных A ...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Мужской

Репутация: -  -1  +


Цитата
Можешь еще и цвет графика в процедуру draw_curve передавать как параметр, чтобы графики отрисовывались разными цветами при разных A ...

что-то у меня не получилось... помоги пожалуйста...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гость






Так, например:
procedure set_point(t: double; f: tcurve; color: integer);
var x, y: double;
begin
f(t, x, y);
putpixel( (getmaxx div 2) + trunc(scale * x), (getmaxy div 2) - trunc(scale * y), color );
end;

procedure draw_curve(color: integer; start, finish, step: double; f: tcurve);
var t: double;
begin
setcolor(green);
line(0, getmaxy div 2, getmaxx, getmaxy div 2);
line(getmaxx div 2, 0, getmaxx div 2, getmaxy);

t := start; { nachalo intervala }

{ poka ne vishli za granichu intervala }
while t <= finish do begin
set_point(t, f, color);
t := t + step; { narashivaem parametr}
end;
end;
...

draw_curve(white, -10, 10, step, giper);
a := 27;
draw_curve(yellow, -10, 10, step, giper);
...

 К началу страницы 
+ Ответить 
сообщение
Сообщение #12





Группа: Пользователи
Сообщений: 1
Пол: Мужской
Реальное имя: Тёма

Репутация: -  0  +


Здравствуйте! А у Вас не найдётся готовой задачи(.pas) для улитки Паскаля, Декартова листа, спирали Архимеда и др. Заранее благодарен Вам! До свидания!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Помощник капитана
****

Группа: Пользователи
Сообщений: 601
Пол: Мужской
Реальное имя: Артем

Репутация: -  2  +


Цитата
для улитки Паскаля, Декартова листа, спирали Архимеда и др.

Оригинально!Может перечислил-бы до конца? no1.gif Или наброски показал?


--------------------
Dum spiro spero!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Гость






Зайди по ссылке из сообщения №5, там лежит файл curves.pas ...
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 23.12.2024 19:33
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name