Форум: "Потрепаться";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];
Вниз
!!!!помогите решить задачу!!!! Найти похожие ветки
← →
bot v0.00000001 (2005-02-10 22:25) [0]HI ppl!хочу написать прогк но никак не получаеться,нужна помощь мастеров ,
есть 2 точки А и Б
координаты
А
х=6118823,83
у=2261051
Б
х=6119022,25
у=2260445,95
и формула D=arccos(dX/s);где S=корень квадратный из (Ax-Бх)^2+(Ae-Бe)^2.
dx=Ax-Бх .если dy<0 тогда D=360-D.
Есть ответ D=288 градусов 09 минут 23 секунды.
теперь всё это надо реализовать в Делфи..я уже и так и сяк это крутил не получаеться у меня такой ответ=((,хотя проверял на других программах ,ответы сходяться....исходники уже выкладывал 1000 раз...хотелось бы посмотреть как сделают это более умные люди=)..тут ведь макс 15 строчек кода....помогите плз...буду благодарен...
← →
begin...end © (2005-02-10 22:28) [1]> bot v0.00000001 (10.02.05 22:25)
> исходники уже выкладывал 1000 раз
Теперь выложите их здесь. В 1001 раз.
← →
bot v0.00000001 (2005-02-10 22:48) [2]ок вот :
x1,y1,x2,y2,s:single;
d:single;
s:=sqr((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
d:=radtodeg(arccos((x1-x2)/s));
if d<0 then d:=360-d;
memo1.lines.add(floattostr(d));
всё врямя или вылетает ошибка invalid float point operation(или типа того=)) или получаються значения никак не похожие на 288.
плз если кому не трудно посмотреть у себя на компе и потом скинуть исходник...советов было уже много ,но не один не исправил положение...
← →
Kerk © (2005-02-10 22:49) [3]bot v0.00000001 (10.02.05 22:48) [2]
всё врямя или вылетает ошибка invalid float point operation
в каком месте?
← →
bot v0.00000001 (2005-02-10 22:54) [4]когда ошибка вылетает указатель на место ошибки не ставиться и в самой ошибки про место ничего не сказано...но это мне кажеться в строке
d:=radtodeg(arccos((x1-x2)/s));
← →
begin...end © (2005-02-10 22:56) [5]> bot v0.00000001 (10.02.05 22:48) [2]
> s:=sqr((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))
s := Sqrt(Sqr(x1-x2) + Sqr(y1-y2))
← →
Kerk © (2005-02-10 22:56) [6]
> arccos((x1-x2)/s));
это он не может вычислить видимо. посмотри в учебнике математики ограничения arccos
← →
bot v0.00000001 (2005-02-10 23:00) [7]>begin...end © (10.02.05 22:56) [5]
там у меня sqrt просто описался...
← →
bot v0.00000001 (2005-02-10 23:00) [8]>begin...end © (10.02.05 22:56) [5]
там у меня sqrt просто описался...
← →
GuAV © (2005-02-10 23:19) [9]Анализируя условия задачи прихожу к выводу что нужен угол вектора AB относительно оси ОХ.
var X, Y, Ax, Ay, Bx, By, R: Single;
begin
Ax := 6118823.83;
Ay := 2261051;
Bx := 6119022.25;
By := 2260445.95;
X := Bx - Ax;
Y := By - Ay;
R := radtodeg(ArcTan2(Y, X));
if R < 0 then R := 360 + R;
Caption := FloatToStr(R);
end;
Или, если речь идёт о работе с комплексными числами, то VarCmplx рулит.
← →
GuAV © (2005-02-10 23:32) [10]Да, arccos никогда не вернёт угол заданный в условии.
arccos + F1. Или см. учебник по математике - главное значение Arccos :)
Хотите через arccos - сами учитывайте знак dy:
s:=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
d:=radtodeg(arccos((x1-x2)/s));
if y2<y1 then d:=d + 180;
if d<0 then d:=d + 360;
← →
Franzy (2005-02-10 23:48) [11]Попробуй переводить радианы в градусы вручную.
gradus:=radian*180/pi;
← →
GuAV © (2005-02-10 23:58) [12]Franzy (10.02.05 23:48) [11]
Нет, дело не в этом, Math переводит почти точно также.
Просто нужно взять arctan2 - он специально для таких вещей и предназначен, и вызывает соотв. маш. инструкцию.
см. arccos + CtrlClick, arctan2 + CtrlClick.
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.045 c