Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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.049 c
4-1102326344
Алим
2004-12-06 12:45
2005.03.06
Автоблокировка компьютера


1-1108986124
Object
2005-02-21 14:42
2005.03.06
Ошибка при удалении Panel с формы.


1-1108623343
Innuendo
2005-02-17 09:55
2005.03.06
MDIChild Form


14-1108047454
Новенький
2005-02-10 17:57
2005.03.06
Помогите с установкой ХР


1-1108304762
Сергей Ю.
2005-02-13 17:26
2005.03.06
Как можно разделить функции одной программы между несколькими?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский