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

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

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

> График ф-ции и координатные оси
сообщение
Сообщение #1


Профи
****

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

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


Мне нужно построить график ф-ции у= 2е^x - 4cos2x.
График вроде строит, но я не пойму, почему у меня только горизонтальная ось?
В тот момент, когда программа вычисляет координату У горизонтальной оси (у0), после следует рисовать координатные оси....
???


uses Graph;
var x1, x2, y1, y2, x, y, dx, mx, my : real;
l , b, h, w, x0, y0 : integer;
st : string;
grDriver, grMode, ErrCode : integer;
Function f(x : real) : real;
begin
f := 2*Exp(x) - 4*cos(2*x);
end;
begin
grDriver:=VGA; GrMode:=VGAHi;
InitGraph(grDriver,grMode,' ');
ErrCode:=GraphResult;
if ErrCode<>grOk then Halt(1);
l:=40;b:=400;
h:=300;w:=300;
x1:=0;x2:=25;dx:=0.01;
y1:=0;y2:=0;
x:=x1;
repeat
y:=f(x);
if y<y1 then y1:=y;
if y>y2 then y2:=y;
x:=x+dx;
until(x>=x2);
my:=h/abs(y2-y1);
mx:=w/abs(x2-x1);
x0:=1;
y0:=b-abs(Round(y1*my));
Line(1,b,1,b-h);
Line(x0,y0,x0+w,y0);
Str(y2:5:1,st);
OutTextXY(l+5,b-h,st);
Str(y1:5:1,st);
OutTextXY(l+5,b,st);
x:=x1;
repeat
y:=f(x);
Putpixel(x0+Round(x*mx),y0-Round(y*my),13);
x:=x+dx;
until(x>=x2);
Readln;
CloseGraph;
end.



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


Гость






Цитата
не получается предусмотреть, чтоб график ф-ции рисовался и на отрицательной полуплоскости......
Тогда центр координат - надо перенести в середину экрана... Вот так, например:
SetViewPort(getmaxx div 2, getmaxy div 2, getmaxx, getmaxy, ClipOff)
Тогда при задании отрицательных значений как по OX, так и по OY у тебя будет отображаться правильная точка (относительно центра экрана, только надо учесть, что координата Y изменяется сверху вниз, а не снизу вверх)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Профи
****

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

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


Цитата(volvo @ 23.03.2007 19:57) *

Тогда центр координат - надо перенести в середину экрана... Вот так, например:
SetViewPort(getmaxx div 2, getmaxy div 2, getmaxx, getmaxy, ClipOff)
Тогда при задании отрицательных значений как по OX, так и по OY у тебя будет отображаться правильная точка (относительно центра экрана, только надо учесть, что координата Y изменяется сверху вниз, а не снизу вверх)

А почему, если я увеличиваю интервал изменения аргумента ( например, от -10 до 10), то график в отрицательной полуплоскости вырождается в прямую? ( а если брать -5 до 2.5 - всё нормально).....
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
18192123   График ф-ции и координатные оси   23.03.2007 21:30
Алена   Почему же только горизонтальная? У меня обе отобра…   23.03.2007 21:39
compiler   Почему же только горизонтальная? У меня обе отобр…   23.03.2007 21:44
18192123   а у меня нет присмотрись внимательнее: вериткальна…   23.03.2007 21:55
compiler   присмотрись внимательнее: вериткальная ось у тебя …   23.03.2007 22:04
18192123   может у меня эта ось выскакивает за пределы окна? …   23.03.2007 22:09
Артемий2   А ты можешь картинку привести? :)   23.03.2007 22:13
18192123   А ты можешь картинку привести? :) прошу прощения…   23.03.2007 22:31
Артемий2   У тебя конкретная обрезка изображения идет! По…   23.03.2007 22:41
18192123   А зачем фоткать было? А через prtscr не получилось…   23.03.2007 23:07
compiler   А через prtscr не получилось..) а с контрлом, а …   23.03.2007 23:11
volvo   А не получится... Надо использовать специальный мо…   23.03.2007 23:27
18192123   18192123, почему именно по САМОМУ левому краю? О…   23.03.2007 23:36
volvo   Тогда центр координат - надо перенести в середину …   23.03.2007 23:57
18192123   Тогда центр координат - надо перенести в середину…   24.03.2007 0:24
18192123   А почему, если я увеличиваю интервал изменения ар…   24.03.2007 1:09
volvo   Потому, что функция такая... Тут дело не в отрицат…   24.03.2007 5:39
18192123   Потому, что функция такая... Тут дело не в отрица…   24.03.2007 17:17


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

 





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