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

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

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

 
 Ответить  Открыть новую тему 
> Эпициклоида
Client
сообщение 31.10.2008 9:43
Сообщение #1


Профи
****

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

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


Привет!
Вот мой вариант
procedure epicikl;
Var
s:string;
a,b,x,i:integer;
t,x1,y1:real;
Begin
t:=0;
read(x);
read(a);
read(b);
cleardevice;
setcolor(red);
line(1,240,640,240);
line(320,1,320,480);
outtextxy(325,245,'0');
outtextxy(617,260,'X');
outtextxy(330,10,'Y');
line(630,245,640,240);
line(630,235,640,240);
line(315,5,320,0);
line(325,5,320,0);
setTextJustIfY(1,2);
setTextStyle(0,0,1);
for i:=1 to 320 div x do begin
line(320+i*x,230,320+i*x,250);
str(i,s);
outtextxy(322+i*x,251,s);
end;
for i:=1 to 320 div x do begin
line(320-i*x,230,320-i*x,250);
str(-i,s);
outtextxy(318-i*x,251,s);
end;
settextjustify(1,1);
for i:=1 to 240 div x do begin
line(310,240-i*x,330,240-i*x);
str(i,s);
outtextxy(305,240-i*x,s);
end;
for i:=1 to 240 div x do begin
line(310,240+i*x,330,240+i*x);
str(-i,s);
outtextxy(338,241+i*x,s);
end;
t:=0;
while t<=2*pi do begin
t:=t+pi/3500;
x1:=(a+b)*cos(t)-a*cos((a+b)*t/a);
y1:=(a+b)*sin(t)-a*sin((a+b)*t/a);
putpixel(320+round(x1*x/20),240+round(y1*x/20),7);
delay(50)
end;
readkey;
end;
Что надо изменить, подскажите плиз

Сообщение отредактировано: Client - 31.10.2008 9:46
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 31.10.2008 10:28
Сообщение #2


Гость






Цитата
Что надо изменить, подскажите плиз
Изменить для чего? Программа работает, строит эпициклоиду, скажи, что тебе еще нужно от нее, будем думать, как изменить...
 К началу страницы 
+ Ответить 
Client
сообщение 31.10.2008 10:32
Сообщение #3


Профи
****

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

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


На википедии там есть другого вида эпициклоиды, но если процедура правильно рисует то этого достаточно.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 31.10.2008 10:53
Сообщение #4


Гость






Для того, чтобы сказать тебе что-то конкретное, мне надо знать, с какими параметрами строится у тебя эпициклоида... При A = 3 и B = 9 (то есть, k = B/A = 3), изображение полностью совпадает с тем, что приведено в Википедии. Чтобы получить эпициклоиды другого вида надо просто задавать другие значения A и B...
 К началу страницы 
+ Ответить 
Client
сообщение 31.10.2008 11:07
Сообщение #5


Профи
****

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

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


Если К-целое число, то все нормально рисует, а вот если не целое -то получается что-то страшное... smile.gif Можно ли как-то изменить, чтобы было как в википедии?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 31.10.2008 11:22
Сообщение #6


Гость






Так:
     t := -20;
while t < 20 do begin
t := t + 0.005;
x1:=(a+b)*cos(t)-a*cos((a+b)*t/a);
y1:=(a+b)*sin(t)-a*sin((a+b)*t/a);
putpixel(320+round(x1*x/20),240+round(y1*x/20),7);
delay(50);
end;
?
 К началу страницы 
+ Ответить 
Client
сообщение 31.10.2008 11:30
Сообщение #7


Профи
****

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

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


Спасибо большое!!!
Можно вопрос: а почему от -20 до 20?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 31.10.2008 11:38
Сообщение #8


Гость






Ну, сделай от -бесконечности до +бесконечности smile.gif

t в каких пределах изменяется, посмотри...
 К началу страницы 
+ Ответить 
Client
сообщение 31.10.2008 11:45
Сообщение #9


Профи
****

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

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


Цитата
Ну, сделай от -бесконечности до +бесконечности smile.gif
Долго ждать придется no1.gif
+1
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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