Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.09.10;
Скачать: [xml.tar.bz2];

Вниз

Карты   Найти похожие ветки 

 
Edu.1982   (2006-08-15 22:13) [0]

Как в Delphi можно задать координаты точек и чтобы между начальной и конечной точкой измерялась расстояние


 
TUser ©   (2006-08-15 22:34) [1]

Квадратный корень из суммы квадратов разностей соотвествующих координат. Это если геометрия евклидова.


 
KilkennyCat ©   (2006-08-15 23:05) [2]

> [1] TUser ©   (15.08.06 22:34)

можно и проще сказать :) теорема Пифагора
Ты лучше код напиши, нефиг флудить.


 
Ega23 ©   (2006-08-16 12:23) [3]


> Как в Delphi можно задать координаты точек


(2, 4); (4.12, 3.12)


> между начальной и конечной точкой измерялась расстояние


r=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))
Это для ДПСК


 
Desdechado ©   (2006-08-16 12:52) [4]

Расстояние между точками по прямой или по ломаной?
Если по ломаной, то для каждых двух точек ломаной считаем по Пифагору, а потом складываем.

Но это в плоских системах координат.
Если ж координаты на геоиде, сфере или еще какие (систем много), то там свои правила. На то она и карта :)

А если с поправкой на рельеф местности, то ваще жуть...


 
Сергей М. ©   (2006-08-16 13:18) [5]


> чтобы между начальной и конечной точкой измерялась расстояние


Само по себе что ли "измерялось" ?


 
Separator ©   (2006-08-16 13:39) [6]

function Rastoyanie(Points: array of TPoint): Extended;
var i: Integer;
begin
   Result:= 0.0;
   for i:= Low(Points) + 1 to High(Points) do
       Result:= Result + sqrt((Points[i - 1].X - Points[i].X) * (Points[i - 1].X - Points[i].X) + (Points[i - 1].Y - Points[i].Y) * (Points[i - 1].Y - Points[i].Y))
end;

Пример для использования:

procedure TForm1.Button1Click(Sender: TObject);
begin
   ShowMessage(FloatToStr(Rastoyanie([Point(1, 1), Point(55, 55)])));
end;


 
Ketmar ©   (2006-08-16 13:51) [7]

> [6] Separator ©   (16.08.06 13:39)
а какой глубокий смысл в array of TPoint? а если их будет 25, то что за результат в итогде выйдет? расстояние от Мухосранска до Марс-Сити в единицах измерения Альфы Центавра?


 
Джо ©   (2006-08-16 13:53) [8]

> [7] Ketmar ©   (16.08.06 13:51)
> > [6] Separator ©   (16.08.06 13:39)
> а какой глубокий смысл в array of TPoint?

Например, такая функция пригодна для вычисления длин полилиний (Polylines), т.е., ломанных.


 
ffo ©   (2006-08-21 11:51) [9]


> Как в Delphi можно задать координаты точек и чтобы между
> начальной и конечной точкой измерялась расстояние


И Дальность тебе тут и Азимут

// Определение A и D по геод коорд
procedure    BLAS (b1,l1,b2,l2:RealType;var a,s:RealType);

procedure BLAS(b1,l1,b2,l2:RealType;var a,s:RealType);
 const  c1=0.006693421623;c2=0.006738255415;c3=6356863.01877;
 var x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,
     x16,x17,x18,x19,x20,x21,x22,x23,x24,x25,x26,x27,x28,x29,x30,x31,x32,x33:RealType ;i:byte;
 begin
 x1:=Sqrt(1-c1);
 x2:=Cos(b1);
 x3:=Cos(b2);
 x4:=b1;
 if x2<>0 then x4:=ArcTan(Sin(b1)*x1/x2);
 x5:=b2;
 if x3<>0 then x5:=ArcTan(Sin(b2)*x1/x3);
 x6:=l2-l1;
 if x6>pi  then x6:=-2*pi+x6;
 if x6<-pi then x6:= 2*pi+x6;
 x7:=Sqr(Sin((x5-x4)/2));
 x8:=Sqr(Cos((x5+x4)/2));
 x9:=x6;
 x10:=Sin(x4);
 x11:=Cos(x4);
 x12:=Sin(x5);
 for i:=1 to 7 do begin
   x13:=x9/2;
   x14:=2*ASin(Sqrt(x7*Sqr(Cos(x13))+x8*Sqr(Sin(x13))));
   x15:=Sin(x14);
   x16:=Cos(x14);
   if x11=0 then a:=Pi;
   if x15=0 then a:=0;
   x17:=x11*x15;
   if x17<>0 then begin
     a:=ACos((x12-x10*x16)/x17);
     if x6<0 then a:=2*Pi-a;
     end;
   if x15<>0 then begin
     x1:=ASin(Sin(x9)*Cos(x5)/x15);
     if a<0.25*Pi then a:=x1;
     if a>1.75*Pi then a:=2*Pi+x1;
     if(a>0.75*Pi)and(a<1.25*Pi)then a:=Pi-x1;
     end;
   x18:=ASin(Sin(a)*x11);
   x19:=Pi/2;
   x20:=Cos(a);
   x21:=x20*x11;
   if x21<>0 then begin
     x19:=ArcTan(x10/x21);
     if x19<0 then x19:=Pi+x19;
     end;
   x22:=Sqr(Cos(x18));
   x23:=x22*c1/16;
   x24:=c1*(0.5+c1/8-x23);
   x25:=c1*x23;
   x26:=2*x19+x14;
   x27:=x15*Cos(x26);
   x9:=x6+Sin(x18)*(x24*x14+x25*x27);
 end;
 x28:=x26*2;



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.09.10;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.038 c
2-1156014482
Виталий Юрьевич
2006-08-19 23:08
2006.09.10
Обработка ошибок Indy. собственно как поймать?


15-1155547420
Darkwing
2006-08-14 13:23
2006.09.10
Оценка труда программиста.


1-1154089607
Peak
2006-07-28 16:26
2006.09.10
Собственный Инспектор объектов.


2-1155730262
Evlahov
2006-08-16 16:11
2006.09.10
SQL-запрос


2-1156190271
Id
2006-08-21 23:57
2006.09.10
Запуск Delphi





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