|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
08.12.2007, 19:14 | #1 |
Регистрация: 08.12.2007
Сообщений: 5
|
Delphi. Как нарисовать в Delphi два движущиеся шара с определенной скоростью?
Как нарисовать в Delphi два движущиеся на встречу друг друга шара с определенной скоростью?
Последний раз редактировалось redred; 08.12.2007 в 19:16. |
08.12.2007, 20:05 | #2 |
Пользователь
Регистрация: 11.04.2007
Сообщений: 75
|
Да впринципе много есть способов. Например сделай два Imagа, в которых нарисованы эти шары и двигай их с помощью таймера.
|
08.12.2007, 20:17 | #3 |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
В Дельфи даже есть тип TShape там и шар есть.
А в разделе про игры есть даже уроки, вот ссылка http://www.programmersforum.ru/showthread.php?t=1206
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог |
08.12.2007, 20:39 | #4 |
Участник клуба
Регистрация: 26.10.2007
Сообщений: 1,244
|
Шары и окружность не одно и тоже. Может имелось в виду сфера....
И возможно автор хочет 3Д. Надо уточнить... если окружность то смотри до меня что писали...
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым, Попытка глубже понимать уже попахивает литром... |
08.12.2007, 22:21 | #5 |
Регистрация: 08.12.2007
Сообщений: 5
|
у меня шар , а не сфера. Мне надо сделать так, что есть два шара, можна задавать скорость с какой они будут двигатся , эти скорости могут быть разными. И мне надо показать эту картинку. Теоретически я знаю, что надо использовать таймер, TShape и т.д., но практически мне нужна помощь в написании алгоритма.На самом деле мне еще нужно определить момент их столкновения и в этот момент направить их движения в противоположные стороны.
|
08.12.2007, 23:31 | #6 |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
Все зависит от того насколько реалистичной должна быть физика. Если простое линейное движение то это несложно.
Объект Шар Скорость Х Скорость Y Координата X Координата Y
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог |
08.12.2007, 23:57 | #7 |
Участник клуба
Регистрация: 26.10.2007
Сообщений: 1,244
|
на скорую руку...... коегде криво иногда срабатывает.. Но принцип понятен.
И всёже шар - это объёмная фигура.
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым, Попытка глубже понимать уже попахивает литром... |
09.12.2007, 00:38 | #8 |
Регистрация: 08.12.2007
Сообщений: 5
|
Спасибо за помощь. Я еще поработаю над этим ,если возникнут вопросы обращусь.Еще раз спасибо.
|
11.12.2007, 09:17 | #9 |
Регистрация: 08.12.2007
Сообщений: 5
|
мне опять нужна помощь. Вообщем написана была мною программа, но что-то не так. у меня есть два шарика они катятся на встречу друг к другу со скоростями v01 и v02. После столкновения шарики должны отлететь в разные стороны со скоростями S_speed_1 и S_speed_2 соответственно (скорость S_speed_1 и S_speed_2 зависит от масс шариков ma1 и ma2 и их начальной скорости v01 и v02 вот откуда такая формула ниже - закон сохранения импульса). Так вот когда мной была написана ниже программа, и когда она была запущена, то шарики совсем не отлетали в разные стороны, что-то было непонятное. Подскажите пожалуйста.
Shape1 находится слева, Shape2 - справа. unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Timer1: TTimer; Shape1: TShape; Button1: TButton; Shape2: TShape; m1: TEdit; m2: TEdit; v1: TEdit; v2: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; procedure Button1Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; v01,v02,S_speed_1,S_speed_2,ma1,ma2 :integer; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin Timer1.Enabled:=not Timer1.Enabled end; procedure TForm1.Timer1Timer(Sender: TObject); begin v01:=round(strtofloat(v1.Text)); v02:=round(strtofloat(v2.Text)); ma1:=round(strtofloat(m1.Text)); ma2:=round(strtofloat(m2.Text)); S_speed_1:=round((2*v02*ma2+(ma1-ma2)*v01)/(ma1+ma2)); S_speed_2:=round((2*v01*ma1+(ma2-ma1)*v02)/(ma1+ma2)); if Shape1.Left + 65 < Shape2.Left then Shape1.Left := Shape1.Left + v01 else Shape1.Left := Shape1.Left - S_speed_1 ; if Shape2.Left > Shape1.Left+65 then Shape2.Left := Shape2.Left - v02 else Shape2.Left := Shape2.Left + S_speed_2 end; end. |
11.12.2007, 10:01 | #10 |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
Код:
Доделаешь. Последний раз редактировалось Sibedir; 11.12.2007 в 10:04. |
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Программа-тест в Delphi) скиньте))а то програмку здавать преподу надо,и самой хочется понять Delphi | Верчик | Помощь студентам | 9 | 02.03.2009 17:46 |
Как перейти к определенной строчке в Memo | DmT | Общие вопросы Delphi | 5 | 08.07.2008 21:50 |
процедура, которая вычисляет объем шара | motaro | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 21.01.2008 19:22 |
Как открыть БД, написанную в Delphi если нf другой машине Delphi нет? | dagarik | БД в Delphi | 7 | 22.10.2007 17:54 |
Delphi World 6 Pro (5005 Статей по Delphi) | CoreFox | Свободное общение | 3 | 23.05.2007 10:43 |