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

Вниз

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

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

Наверх




Память: 0.49 MB
Время: 0.058 c
1-1154061876
Helen
2006-07-28 08:44
2006.09.10
Ввод пароля


1-1153735081
Чапаев
2006-07-24 13:58
2006.09.10
DbGrib, background


1-1154280131
Lordalexander
2006-07-30 21:22
2006.09.10
Прозрачный Label


6-1145621614
dest81
2006-04-21 16:13
2006.09.10
IdSMTP и ProgressBar


3-1152171333
Maverick
2006-07-06 11:35
2006.09.10
TADOQuery+output параметры