Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
58 / 40 / 41
Регистрация: 26.09.2013
Сообщений: 341
Записей в блоге: 1
1

Нарисовать шляпку подсолнуха с логарифмическими спиралями

07.12.2013, 15:02. Показов 1206. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Программа должна рисовать шляпку подсолнуха с логарифмическими спиралями.
Этот код работает, но нужно чтобы получалось что-то типа того что на картинке. Помогите, пожалуйста, кто сможет.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
uses graph;
var x0,y0,x,y,i:integer;
    a,b,t,f:real;
begin
initgraph(x,y,'');
x0:=getmaxX div 2;
y0:=getmaxY div 2;
setcolor(2);
circle(x0,y0,153);
a:=1;
b:=0.5;
f:=0;
for i:=1 to 12 do
 begin
  t:=0;
  repeat
   t:=t+0.001;
   x:=round(a*exp(b*(t))*cos(t+f));
   y:=round(a*exp(b*(t))*sin(t+f));
   putpixel(x0+x,y0-y,14);
  until t>3.2*pi;
  f:=f+pi/6;
 end;
readln
end.
Миниатюры
Нарисовать шляпку подсолнуха с логарифмическими спиралями  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.12.2013, 15:02
Ответы с готовыми решениями:

Изобразить на экране Солнце (в виде подсолнуха)
Изобразить на экране рисунок

Нарисовать флаг, нарисовать график y=ctg x Нарисовать анимацию
Дело таково у меня сейчас практика, где я очень не успиваю сделать все свои задания... Большая...

Как gl_line_loop заполнить цветом или им же нарисовать нарисовать сферу
или же нарисовать примерно точно также как на изображении, и потом при диалоге изменения цвета...

Как нарисовать прямоугольник, изменить его координаты и нарисовать заново уже без первого прямоугольника?
Как нарисовать прямоугольник, изменить его координаты и нарисовать заного уже без первого...

7
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
07.12.2013, 15:58 2
Дал бы ссылку, где картинку взял. А то непонятно что такое a[i], x[i] и где они используются.
0
58 / 40 / 41
Регистрация: 26.09.2013
Сообщений: 341
Записей в блоге: 1
07.12.2013, 16:02  [ТС] 3
Я даже и не помню где ее нашел. Я делал на основе свойств и уравнений логарифмических спиралей. Но нужно сделать через логарифмы. Вообще идей нету.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
07.12.2013, 16:19 4
Цитата Сообщение от Nickolay0512 Посмотреть сообщение
сделать через логарифмы.
Там на картинке не видно логарифмов, там один из коэффициентов золотого сечения
0
58 / 40 / 41
Регистрация: 26.09.2013
Сообщений: 341
Записей в блоге: 1
07.12.2013, 16:24  [ТС] 5
картинка не на это задание. Просто должно получиться что-то похожее. Вот текст самой задачи: Рисунок на шляпке подсолнуха представляет собой семейство логарифмических спиралей, закрученных в разные стороны. Получить такой рисунок. Между прочим, количество "правых" и "левых" спиралей есть два соседних числа Фибоначчи. Может здесь надо как-нибудь числа Фибоначчи использовать? Только вот как...
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
07.12.2013, 17:44 6
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Такую картинку с логарифмической спиралью не сделать, только если так.
Число спиралей 13 и 21.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
uses graph;
var x0,y0,x,y,i:integer;
    a,b,t,f:real;
begin
initgraph(x,y,'');
x0:=getmaxX div 2;
y0:=getmaxY div 2;
setbkcolor(15);
setfillstyle(1,8);
a:=1;
b:=0.5;
f:=0;
for i:=1 to 13 do
 begin
  t:=0;
  repeat
   if t<2.5*pi then
    begin
     t:=t+0.01;
     x:=round(a*exp(b*(t))*cos(t+f));
     y:=round(a*exp(b*(t))*sin(t+f));
     putpixel(x0+x,y0-y,8)
    end
   else
   begin
    t:=t+0.1;
    x:=round(a*exp(b*(t))*cos(t+f));
    y:=round(a*exp(b*(t))*sin(t+f));
    fillellipse(x0+x,y0-y,2,2);
   end
  until t>3.2*pi;
  f:=f+2*pi/13;
 end;
for i:=1 to 21 do
 begin
  t:=0;
  repeat
   if t<2.5*pi then
    begin
     t:=t+0.01;
     x:=round(a*exp(b*(t))*sin(t+f));
     y:=round(a*exp(b*(t))*cos(t+f));
     putpixel(x0+x,y0-y,8)
    end
   else
    begin
     t:=t+0.1;
     x:=round(a*exp(b*(t))*sin(t+f));
     y:=round(a*exp(b*(t))*cos(t+f));
     fillellipse(x0+x,y0-y,2,2);
    end
  until t>3.2*pi;
  f:=f+2*pi/21;
 end;
setcolor(2);
circle(x0,y0,155);
readln
end.
1
58 / 40 / 41
Регистрация: 26.09.2013
Сообщений: 341
Записей в блоге: 1
07.12.2013, 18:23  [ТС] 7
Puporev, не подскажите чтобы спирали шли до конца(не обрывались точками)? Чтобы на подсолнух похоже было.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
07.12.2013, 18:33 8
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Так что ли? Взял спирали по 21 и 34.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
uses graph;
var x0,y0,x,y,i:integer;
    a,b,t,f:real;
begin
initgraph(x,y,'');
x0:=getmaxX div 2;
y0:=getmaxY div 2;
setbkcolor(15);
a:=1;
b:=0.5;
f:=0;
for i:=1 to 21 do
 begin
  t:=0;
  repeat
   t:=t+0.01;
   x:=round(a*exp(b*(t))*cos(t+f));
   y:=round(a*exp(b*(t))*sin(t+f));
   putpixel(x0+x,y0-y,8);
  until t>3.2*pi;
  f:=f+2*pi/21;
 end;
for i:=1 to 34 do
 begin
  t:=0;
  repeat
   t:=t+0.01;
   x:=round(a*exp(b*(t))*sin(t+f));
   y:=round(a*exp(b*(t))*cos(t+f));
   putpixel(x0+x,y0-y,8);
  until t>3.2*pi;
  f:=f+2*pi/34;
 end;
setcolor(2);
circle(x0,y0,155);
readln
end.
Вообще делай дальше сам. Я показал как спирали рисовать, а оформление это тебе нужно.
1
07.12.2013, 18:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.12.2013, 18:33
Помогаю со студенческими работами здесь

Нарисовать трапецию, после чего нарисовать ее зеркальную копию (относительно диагонали 1го квадранта) и уменьшить
Собственно сделал так, только пока что без уменьшения, отзеркаленную копию рисует только 1 линию,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru