Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ещё раз о столкновении [Delphi, Windows]


Страницы:   1 2

Xandr ©   (2006-02-25 20:31:00) 

суть:

есть непроходимые тайлы их нужно заменить линиями.
есть существа, их нужно заменить кругами.

вот в чём проблема: как лучше организовать замену, и САМОЕ главное - как проверить пересеклись ли окружность и кривая?

ЗЫ к математике не отправлять, уравнения прямых и окружностей я знаю, и умею решать системы уравнений. (правда на бумаге)


Xandr   (2006-02-26 18:39:00) [21]


> 1) намудрил ты там что-то с тригонометрией %) Я даже разбираться
> не стал...


ну это всё ещё из школы...

а вообще я такие вот в точности формулы видел во многих примерах...
а идея кстати прикольная (про длинну вектора и последующем делении на неё составляющих ускорения)...


XProger   (2006-02-26 18:33:00) [22]

Xandr,
px, py : Single;
...
px := px + pdx;
py := py + pdy;

А вот при отрисовке - передавай trunc(px) и trunc(py)


XProger   (2006-02-26 18:31:00) [23]

Xandr,
1) намудрил ты там что-то с тригонометрией %) Я даже разбираться не стал...
2) Как видишь...


Xandr   (2006-02-26 18:30:00) [24]


> Вообще, у тебя там жуткие погрешности возникают из-за
> px:=trunc(px+pdx);
> py:=trunc(py+pdy);


я знаю!

как без этого?


Xandr   (2006-02-26 18:29:00) [25]

спасибо!

вот теперь вопрос:
1. почему то, что было не работало?
2. тебе не западло отвечать всяким неучам на их тупые вопросы?

ЗЫ последний вопрос - ко Всем!


XProger   (2006-02-26 18:20:00) [26]

Вообще, у тебя там жуткие погрешности возникают из-за
px:=trunc(px+pdx);
py:=trunc(py+pdy);


XProger   (2006-02-26 18:14:00) [27]

:)
procedure TForm1.DXDraw1MouseMove(Sender: TObject; Shift: TShiftState; X,
 Y: Integer);
var
 a: real;
begin
 mx:=x;
 my:=y;
 if not edit then
 begin
   a := sqrt(sqr(px - mx) + sqr(py - my));
   if a <> 0 then
   begin
     pdx := -(px - mx)/a * 3;
     pdy := -(py - my)/a * 3;
   end else
   begin
     pdx := 0;
     pdy := 0;
   end;
 end;
end;


Xandr   (2006-02-26 17:24:00) [28]

XProger Я ЗНАЮ ТЫ ТУТ!
ПОМОГИИИИИИИИ!


Xandr   (2006-02-26 17:07:00) [29]

webfile.ru/830792 (~4 Кило)

немного офтоп...
блин начал делать, а тут такая фигня:
круг должен двигаться в то место, где нажата мышка, а на самом деле... :)

там 2 формулы у меня, ни с одной не получается...

вобщем посмотрите, плиз если не трудно.


Xandr   (2006-02-26 05:04:00) [30]

сенкс!


XProger   (2006-02-25 21:35:00) [31]

Найди расстояние от центра окружности до прямой, если меньше радиуса окружности - пересечение.
http://algolist.manual.ru/maths/geom/distance/pointline.php


Xandr   (2006-02-25 21:30:00) [32]

ну в этом то и трабл...
скорее всего как такая изогнутая линия с неравномерными по всей её длинне фрустациями :D

на самом деле я опечатался.
нужно проверить пересечение ПРЯМОЙ и окружности...

но думаю вопрос по представлению не отпадает?
Я НЕ ЗНАЮ!
вы что посоветуете?

можете говорить всё что угодно, проэкт только начался, и находится на стадии рисования тайлов и обдумывания глобальных принципов взаимодействия.


XProger   (2006-02-25 20:45:00) [33]

Как представлена кривая?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо