資源簡介
這個不是現成的工具,而是具體的C語言代碼功能實現。利用C語言實現了大地坐標系和空間直角坐標系的相互轉換,以及求解七參數的值的方法。

代碼片段和文件信息
#include?
#include?
#include?
#include?
#include?“commons.h“
#define?PI?3.1415926
#define?true?1
#define?false?0
typedef?int?bool;
/*
從角度換算為弧度
參數格式:[-]ddmmss.ssss
*/
double?dmsToDegree(double?dms)
{
bool?flag=false;
if(dms<0)
{
flag=true;
dms=-dms;
}
int?d=(int)(dms?/?10000);
int?m=(int)((dms?-?d*10000)?/?100);
double?s=dms?-?10000?*?d?-?100?*?m;
printf(“%d?%d?%lf\n“dms);
double?degree?=?(d?+?m/60.0?+?s/3600)*?PI?/?180;
return?flag???-degree?:?degree;
}
/*
計算兩點間的平面距離
*/
float?planeDist(struct?Point?*ptAstruct?Point?*ptB)
{
float?dist=sqrt((ptA->x-ptB->x)*(ptA->x-ptB->x)+(ptA->y-ptB->y)*(ptA->y-ptB->y));
return?dist;
}
/*
計算兩條直線的交點
*/
struct?Point?*intersection(struct?Line?*aLinestruct?Line?*bLine)
{
if(aLine->A==0?&&?bLine->A==0?&&?aLine->B!=bLine->B)
return?NULL;
if(aLine->B==0?&&?bLine->B==0?&&?aLine->A!=bLine->A)
return?NULL;
if(aLine->A*bLine->B?==?aLine->B*bLine->A)
return?NULL;
struct?Point?*pt=(struct?Point*)malloc(sizeof(struct?Point));
if(aLine->A==0?&&?bLine->B==0)
{
pt->x=-bLine->C?/?bLine->A;
pt->y=-aLine->C?/?aLine->B;
return?pt;
}
if(aLine->B==0?&&?bLine->A==0)
{
pt->x=-aLine->C?/?aLine->A;
pt->y=-bLine->C?/?bLine->B;
return?pt;
}
float?x=(aLine->C?*?bLine->B?-?bLine->C?*?aLine->B)?/?(aLine->B?*?bLine->A?-?bLine->B?*?aLine->A);
float?y=(bLine->C?*?aLine->A?-?aLine->C?*?bLine->A)?/?(aLine->B?*?bLine->A?-?bLine->B?*?aLine->A);
pt->x=x;
pt->y=y;
return?pt;
}
/*
兩點確定一條直線
*/
struct?Line?*makeLine(struct?Point?*ptAstruct?Point?*ptB)
{
struct?Line?*line=(struct?Line*)malloc(sizeof(struct?Line));
if(ptA->x?==?ptB->x?&&?ptA->y?==?ptB->y)
return?NULL;
else?if(ptA->x?==?ptB->x)
{
line->A=1;
line->B=0;
line->C=-ptA->x;
}
else?if(ptA->y?==?ptB->y)
{
line->A=0;
line->B=1;
line->C=-ptA->y;
}
else
{
line->A=(ptA->y?-?ptB->y)?/?(ptB->x?-?ptA->x);
line->B=1;
line->C=(ptB->x?*?ptA->y?-?ptA->x?*?ptB->y)/(ptA->x?-?ptB->x);
}
return?line;
}
/*
計算兩條直線的夾角,返回弧度
*/
float?dimangular(struct?Line?*aLinestruct?Line*?bLine)
{
if(aLine->B==0)
{
if(bLine->B==0)?return?0;
if(bLine->A==0)?return?PI/2;
return?PI/2?-?atan(-bLine->A?/?bLine->B);
}
else
{
if(bLine->B==0)?return?PI/2-atan(-aLine->A?/?aLine->B);
float?k1=-aLine->A/aLine->B;
float?k2=-bLine->A/bLine->B;
return?atan(fabs(k1-k2)/(1+k1*k2));
}
}
/*
計算點到直線的距離
*/
float?lineDist(struct?Line?*linestruct?Point?*pt)
{
return?fabs(line->A*pt->x?+?line->B*pt->y?+?line->C)/sqrt(line->A*line->A?+?line->B*line->B);
}
//Matrix?operation
//分配矩陣空間
struct?Matrix?*mallocMatrix(int?rowsint?columns)
{
struct?Matrix?*mat=(struct?Matrix*)malloc(sizeof(struct?Matrix));
int?i;
mat->rows?=?rows;
mat->columns?=?columns;
mat->data=(double**)malloc(mat->rows?*?sizeof(double*));
for(i=0;i mat->data[i]=(double*)malloc(sizeof(double)?*?mat->columns);
return?mat;
}
//initialize
struct?Matrix?*initMatrix(int?rowsint?columnsdouble?a[rows][columns])
{
int?ij;
struc
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2020-11-12?11:21??GisCTest\
?????文件???????11549??2020-11-12?10:55??GisCTest\.cproject
?????文件????????2147??2020-11-12?10:55??GisCTest\.project
?????目錄???????????0??2020-11-10?16:32??GisCTest\.settings\
?????文件????????1166??2020-11-10?16:12??GisCTest\.settings\org.eclipse.cdt.managedbuilder.core.prefs
?????文件??????????62??2020-11-10?16:32??GisCTest\.settings\org.eclipse.core.resources.prefs
?????目錄???????????0??2020-11-12?11:21??GisCTest\Debug\
?????文件??????156002??2020-11-12?11:21??GisCTest\Debug\GisCTest.exe
?????目錄???????????0??2020-11-12?11:21??GisCTest\Debug\src\
?????文件???????42789??2020-11-12?11:21??GisCTest\Debug\src\commons.o
?????文件???????26474??2020-11-12?11:21??GisCTest\Debug\src\CTest.o
?????文件???????51745??2020-11-12?11:21??GisCTest\Debug\src\geodesy.o
?????目錄???????????0??2020-11-12?10:55??GisCTest\src\
?????文件????????9389??2020-11-11?09:44??GisCTest\src\commons.c
?????文件????????1294??2020-11-10?16:36??GisCTest\src\commons.h
?????文件????????2011??2020-11-12?11:21??GisCTest\src\CTest.c
?????文件???????11981??2020-11-11?17:36??GisCTest\src\geodesy.c
?????文件????????1537??2020-11-11?17:22??GisCTest\src\geodesy.h
評論
共有 條評論