Главная страница
    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.045 c
14-1106477630
LENIN INC
2005-01-23 13:53
2005.03.06
LENIN INC WIN32API Library 1.0


8-1100866893
denis24
2004-11-19 15:21
2005.03.06
компонент по захвату видео


11-1092678190
help
2004-08-16 21:43
2005.03.06
Трэй и иконка


1-1109056820
Hadroran
2005-02-22 10:20
2005.03.06
Чтение генератора из InterBase


4-1106433800
Unleashed
2005-01-23 01:43
2005.03.06
Setupdi функции





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский