Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.06;
Скачать: CL | DM;

Вниз

!!!!помогите решить задачу!!!!   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.103 c
1-1108672612
Yegorchic
2005-02-17 23:36
2005.03.06
Что такое с ReadLn?


14-1108720428
Ilya___
2005-02-18 12:53
2005.03.06
Подскажите пожалуйста кто знает, где можно найти реферат по культ


6-1103436842
Grafsky
2004-12-19 09:14
2005.03.06
Разбор XML


1-1109019848
suharew
2005-02-22 00:04
2005.03.06
Как переименовать папку


14-1108491536
Fr+++
2005-02-15 21:18
2005.03.06
Небольшой вопрос по PHP