Форум программистов, компьютерный форум, киберфорум
Delphi: Графика, звук, видео
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.93/14: Рейтинг темы: голосов - 14, средняя оценка - 4.93
2 / 2 / 1
Регистрация: 09.11.2011
Сообщений: 33
1

Движение шара по спирали

22.11.2011, 15:58. Просмотров 2847. Ответов 1
Метки нет (Все метки)

Необходимо сделать так, чтобы маленький шарик двигался по спирали от начала к центру. Количество кругов в спирале можно редактировать.
Пожалуйста помогите с движением, слабо представляю как это реализовать, неужели тупо двигать шар по координатам от начала до конца спирали?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.11.2011, 15:58
Ответы с готовыми решениями:

Движение бильярдного шара
Как мне изменить данную программу чтоб скорость и направление движения задавались пользователем...

Движение шара по форме
Здравствуйте! Нужна помощь, надо чтобы шарик двигался по плоскости с тем углом, который вводится...

Движение квадрата по спирали
есть движение квадрата по спирали, необходимо через массив задать движение 3-х разных фигур ...

Изобразить на экране движение шара по бильярду без луз
изобразить на экране движение шара по бильярду без луз.размеры бильярда,...

1
Модератор
61704 / 46189 / 31867
Регистрация: 18.05.2008
Сообщений: 111,409
22.11.2011, 18:02 2
Лучший ответ Сообщение было отмечено Грибас как решение

Решение

Delphi
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, Spin;
 
type
  TForm1 = class(TForm)
    Image1: TImage;
    Button1: TButton;
    Timer1: TTimer;
    SpinEdit1: TSpinEdit;
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  rd,i,xc,yc,l,n,k:integer;
  r,hl,hr,t:real;
implementation
 
{$R *.dfm}
//шарик
procedure sharik(im:TImage;x,y,c:integer);
begin
with im.Canvas do
 begin
  brush.Color:=c;
  pen.Color:=c;
  ellipse(x-rd,y-rd,x+rd,y+rd);
 end;
end;
//заготовка формы
procedure TForm1.FormCreate(Sender: TObject);
begin
width:=500;
height:=580;
Image1.Left:=10;
Image1.Top:=20;
Image1.Width:=clientwidth-20;
Image1.Height:=Image1.Width;
Image1.Canvas.Brush.Color:=clWhite;
Button1.Top:=height-70;
SpinEdit1.Top:=height-60;
Label1.Top:=height-80;
Timer1.Enabled:=false;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled:=true; //включим таймер
Timer1.Interval:=10;
n:=SpinEdit1.Value;
rd:=10;//радиус шарика
//центр
xc:=Image1.Left+Image1.Width div 2;
yc:=Image1.Top+Image1.Height div 2;
r:=Image1.Width div 2-2*rd;//начальный радиус спирали
l:=20;//шаг спирали
hl:=pi/360;//приращение шага
k:=round(n*pi*2/hl);//количество точек прорисовки при этих параметрах
hr:=r/k;//приращение радиуса
t:=l*pi/180;//начальный угол, положение на последнем витке спирали
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
var x,y:integer;
begin
doublebuffered:=true;//уменьшим мерцание
x:=round(xc+r*sin(t));{определяем координаты по часовой стрелке}
y:=round(yc-r*cos(t));
//рисуем цветом фона=стираем
Sharik(Image1,x,y,clWhite);
r:=r-hr;t:=t+hl;//уменьшаем радиус, увеличиваем угол поворот
x:=round(xc+r*sin(t));{определяем координаты по часовой стрелке}
y:=round(yc-r*cos(t));
//рисуем цветом
Sharik(Image1,x,y,clRed);
i:=i+1; //счетчик таймера
if r<10 then Timer1.Enabled:=false;//дошли до центра
end;
 
end.
2
Вложения
Тип файла: rar Спираль на Image.rar (178.3 Кб, 108 просмотров)
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.11.2011, 18:02

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Разработать программу, которая демонстрирует на экране движение шара по функции
Разработать программу, которая демонстрирует на экране движение шара по функции f(x) = cos (2x^2 /...

Движение шара: нужно чтобы шар отталкивался от края формы
procedure TForm1.Timer1Timer(Sender: TObject); var x,y:integer; begin //Координаты шара x:=40;...

Движение по спирали
Есть квадратная матрица с нечётной длиной и шириной. Нужно закинуть в строку элементы двумерного...

Движение по спирали
Уже какую неделю ломаю голову над полетом ЛА по спирали, так ни к чему и не пришел, подскажите,...

Движение по спирали
Всем привет! Как известно скорость вращения Земли вокруг Солнца примерно 40 км/с. Также Земля...

Движение шара (DevC++)
Помогите пожалуйста написать прогу с шаром с окном 400x400 Движение в случайном направлении. Смена...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.