Главная страница
    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.47 MB
Время: 0.04 c
15-1155800785
Сергей М.
2006-08-17 11:46
2006.09.10
Непонятка при работе в связке Access2003 + MS VisualFoxPro ODBC


2-1155823802
KyRo
2006-08-17 18:10
2006.09.10
Перевод типа данных


15-1155533512
Ega23
2006-08-14 09:31
2006.09.10
С Днём рождения! 14 августа


2-1156019232
md
2006-08-20 00:27
2006.09.10
обработка событий


15-1155352711
ФаФо
2006-08-12 07:18
2006.09.10
Дыра в Виндос - это Эксплорер?





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