Форум: "Начинающим";
Текущий архив: 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.05 c