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

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

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

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


Новичок
*

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

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


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

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

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

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


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

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

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


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


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


Новичок
*

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

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


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


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

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

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


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

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


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


Гость






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

Графики функций, заданных параметрически
 К началу страницы 
+ Ответить 
matic
сообщение 2.05.2007 21:21
Сообщение #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 
 К началу страницы 
+ Ответить 
volvo
сообщение 2.05.2007 21:37
Сообщение #7


Гость






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

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


Новичок
*

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

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


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

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

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

А по подробней?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 2.05.2007 22:30
Сообщение #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 ...
 К началу страницы 
+ Ответить 
matic
сообщение 3.05.2007 16:57
Сообщение #10


Новичок
*

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

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


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

что-то у меня не получилось... помоги пожалуйста...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 3.05.2007 17:09
Сообщение #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);
...

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





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

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


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


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

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

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


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

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


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


Гость






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

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

 



- Текстовая версия 20.07.2025 7:26
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"