Форум: "Основная";
Текущий архив: 2006.03.26;
Скачать: [xml.tar.bz2];
ВнизДвижение под углом Найти похожие ветки
← →
Compton's G © (2006-02-18 15:27) [0]Подскажите пожалуйста ... как перемещать, например, TShape
шагом 1 пиксель по определенному углу?
Насколько я понимаю нужно использовть уравнение прямой
y=kx+b, но бьюсь уже день ничего не выходить .. заранее скасибо
← →
Gnobobel (2006-02-18 21:36) [1]cos|sin?
← →
Чародей © (2006-02-18 21:40) [2]Использовать треугольники. Шаг - это гипотенуза, угол есть, далее совсем чуть-чуть геометрии
← →
П (2006-02-18 22:06) [3]Когда "x" изменяется на 1-цу, "y" изменяется на k*1+b.
← →
API (2006-02-18 23:38) [4]Подскажите пожалуйста ... как перемещать, например, TShape
шагом 1 пиксель по определенному углу?
Это возможно только для 8-ми частных случаев.
Для всех остальных случаев необходимо использовать вспомогательные координаты X, Y: double. Все действия по перемещению - производить со вспомогательніми координатами, а лишь затем переводить их в целые числа и использовать полученные значения для установки текущего положения на экране.
← →
Джо © (2006-02-18 23:56) [5]Не совсем понятно, что в данном случае "определенный угол". Но, если предположить, что под углом имеется в виду дирекционный угол, то формула тривиальна:
NewX := Cos(DirectAngle)*Distance + OldX;
NewY := Sin(DirectAngle)*Distance + OldY;
гдеDirectAngle
— дирекционный угол в радианах,Distance
— расстояние.
Для преобразования градусов в радианы можно воспользоваться готовой функцией DegToRadian из Math.pas, а можно воспользоваться учебником школьной геометрии :)
← →
Джо © (2006-02-19 00:02) [6]> [5] Джо © (18.02.06 23:56)
Моими язвительными замечаниями о "дирекционном угле" можно (и нужно) пренебречь — заработался, видать :(
В остальном формула рабочая. Угол отсчитывается по часовой стрелке от оси 0X.
← →
Германн © (2006-02-19 02:14) [7]2 Джо © (19.02.06 00:02) [6]
Это, конечно перебор, но всё-таки, если строго по сабжу, то нужно учесть и API (18.02.06 23:38) [4].
← →
Джо © (2006-02-19 02:24) [8]> [7] Германн © (19.02.06 02:14)
Ну, я думаю с функцией Round уважаемый Compton"s разберется и сам :)
← →
Германн © (2006-02-19 02:37) [9]
> Джо © (19.02.06 02:24) [8]
>
> > [7] Германн © (19.02.06 02:14)
>
> Ну, я думаю с функцией Round уважаемый Compton"s разберется
> и сам :)
Я тоже так думаю.
Но Серёга - разве функция Round поможет передвинуться на пиксель!
А судя по сабжу, автор этого не понимает.
Хотя всё дальнейшее может восприниматься как стеб. Автор сабжа молчит.
← →
Gorger © (2006-02-19 02:44) [10]"разве функция Round поможет передвинуться на пиксель!":
Именно Round и важен для гладкого, а не "угловатого" поточечного вычисления гипотенузы.
← →
Джо © (2006-02-19 02:46) [11]> [9] Германн © (19.02.06 02:37)
> сабжа молчит.
Спит, вероятно. И правильно делает :)
Ну, 1 пиксель, это я понял просто как неудачный пример. Наверное, просто хочется передвигать фигуру в заданном направлении. Догадки, догадки... Просто вчера этот человек спрашивал вот такое:
http://delphimaster.net/view/15-1140210575/
← →
Германн © (2006-02-19 02:59) [12]
> Джо © (19.02.06 02:46) [11]
>
> > [9] Германн © (19.02.06 02:37)
> > сабжа молчит.
>
> Спит, вероятно. И правильно делает :)
>
> Ну, 1 пиксель, это я понял просто как неудачный пример.
> Наверное, просто хочется передвигать фигуру в заданном направлении.
> Догадки, догадки... Просто вчера этот человек спрашивал
> вот такое:
> http://delphimaster.net/view/15-1140210575/
>
А мы, дураки, почему не спим! :)))
Вчера мой провайдер "свалился" и я не смог выйти в мир И-нета. :(((
← →
Defunct © (2006-02-19 03:13) [13]> А мы, дураки, почему не спим! :)))
бессонница?
а почему бы по y = kx + b не сделать?procedure TForm1.Button1Click(Sender: TObject);
var
x: integer;
y: double;
k, b: double;
begin
k := 0.1;
b := 10;
for x := 0 to Width - Button1.Width do
begin
y := 0.3*x + b;
Button1.Left := x;
Button1.Top := Round(y);
end;
end;
← →
Defunct © (2006-02-19 03:14) [14]ой. торможу.
y := k * x + b;
:)
← →
Джо © (2006-02-19 03:41) [15]> [13] Defunct © (19.02.06 03:13)
> а почему бы по y = kx + b не сделать?
А просили "по углу и расстоянию", а не по угловому коэффициенту :P
← →
Defunct © (2006-02-19 04:21) [16]Sabj - Движение под углом с шагом 1 пиксель...
что попросили то и дали.. ;>
← →
Compton's G © (2006-02-19 17:05) [17]Я не спал просто, инет не работал.
Да по поводу "перемещения на 1 пиксель", это я подобрал неудачный пример, имелось введу просто перемещение.
Всем спасибо, помогли :)
← →
Compton's G © (2006-02-19 17:07) [18]Defunct © (19.02.06 04:21) [16]
Джо © (19.02.06 03:41) [15]
Посморел на время ваших сообщений...ого... когда же вы отдыхаете? :)
← →
Defunct © (2006-02-19 17:16) [19]> Посморел на время ваших сообщений...ого... когда же вы отдыхаете? :)
редко..
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2006.03.26;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.036 c