跪求高手指点笛卡尔坐标如何转化球面坐标,或相互转化

跪求高手指点笛卡尔坐标如何转化球面坐标,或相互转化,第1张

石头啊,这问题很专业啊~我来帮你攒人气的,虽然我不懂,哈哈~ GPS数据处理中为了满足不同的需要,处理的数据要进行坐标转换,得到在不同坐标系统下的结果,下面是笛卡尔坐标系,大地坐标系,站型轮心地平坐标系(线型和极坐标形式)之间的转换嫌梁源代码: 头文件:#ifndef _COORDCOVERT_H

#define _COORDCOVERT_H#include "stdlib.h"

//WGS-84椭球体参数

const double a=6378137.0//长半轴

const double flattening=1/298.257223563//扁率

const double delta=0.0000001

typedef struct tagCRDCARTESIAN{

double x

double y

double z

}CRDCARTESIANtypedef CRDCARTESIAN *PCRDCARTESIAN

//笛卡尔坐标系typedef struct tagCRDGEODETIC{

double longitude

double latitude

double height

}CRDGEODETICtypedef CRDGEODETIC *PCRDGEODETIC

//大地坐标系typedef struct tagCRDTOPOCENTRIC{

double northing

double easting

double upping

}CRDTOPOCENTRICtypedef CRDTOPOCENTRIC *PCRDTOPOCENTRIC

//站心地平坐标系(线坐标形式)typedef struct tagCRDTOPOCENTRICPOLAR{

double range

double azimuth

double elevation

}CRDTOPOCENTRICPOLARtypedef CRDTOPOCENTRICPOLAR *PCRDTOPOCENTRICPOLAR

//站心地平坐标系(极坐标形式)//由笛卡尔坐标转换为大地坐标

void CartesianToGeodetic (PCRDGEODETIC pcg, PCRDCARTESIAN pcc,

double dSemiMajorAxis, double dFlattening)

//pcg:指向所转换出的大地坐标的指针;

//pcc:指向待转换的笛卡尔坐标的指针;

//dSemiMajorAxis:参考椭球的长半轴;

//dFlattening:参考椭球的扁率。//由大地坐标转换为笛卡尔坐标

void GeodeticToCartesian (PCRDCARTESIAN pcc, PCRDGEODETIC pcg,

double dSemiMajorAxis, double dFlattening)

//pcc:指向所转换出的笛卡尔坐标的指针;

//pcg:指向待转换的大地坐标的指针;

//dSemiMajorAxis:参考椭球的长半轴;

//dFlattening:参考椭球的扁率。//由笛卡尔坐标转换为站心地平坐标

void CartesianToTopocentric (PCRDTOPOCENTRIC pct,

PCRDCARTESIAN pcc,

PCRDCARTESIAN pccCenter,

double dSemiMajorAxis,

double dFlattening)

//pct:指向所转换出的站心地平坐标的指针;

//pcc:指向待转换的笛卡尔坐标的指针;

//pccCenter:指向站心的笛卡尔坐标的指针;

//dSemiMajorAxis:参考椭球的长半轴;

//dFlattening:参考椭球的扁芹租运率。//由站心地平直角坐标转换为站心地平极坐标

void TopocentricToTopocentricPolar (PCRDTOPOCENTRICPOLAR pctp,

PCRDTOPOCENTRIC pct)

//pctp:指向所转换出的站心地平极坐标的指针;

//pct:指向待转换的站心地平坐标的指针;//由站心地平极坐标转换为站心地平直角坐标

void TopocentricPolarToTopocentric (PCRDTOPOCENTRIC pct,PCRDTOPOCENTRICPOLAR pctp)

//pct:指向所转换的站心地平坐标的指针;

//pctp:指向待转换的站心地平极坐标的指针;#endif 源文件:#include "CoordCovert.h"

#include "math.h"void CartesianToGeodetic (PCRDGEODETIC pcg, PCRDCARTESIAN pcc,

double dSemiMajorAxis, double dFlattening)

{

double e2//第一偏心率的平方

e2=2*dFlattening-dFlattening*dFlatteningpcg->longitude=atan(pcc->y/pcc->x)

double W,N,N1=0,B,B1

B1=atan(pcc->z/sqrt(pcc->x*pcc->x+pcc->y*pcc->y))

while(1)

{

W=sqrt(1-e2*sin(B1)*sin(B1))

N1=dSemiMajorAxis/W

B=atan((pcc->z+N1*e2*sin(B1))/sqrt(pcc->x*pcc->x+pcc->y*pcc->y)) if(fabs(B-B1)<delta)

break

else

B1=B

}pcg->latitude=B

N=dSemiMajorAxis/sqrt(1-e2*sin(pcg->latitude)*sin(pcg->latitude))

pcg->height=sqrt(pcc->x*pcc->x+pcc->y*pcc->y)/cos(B)-N

}//由大地坐标转换为笛卡尔坐标

void GeodeticToCartesian (PCRDCARTESIAN pcc, PCRDGEODETIC pcg,

double dSemiMajorAxis, double dFlattening)

{

double e2//第一偏心率的平方

double N//卯酉圈半径

e2=2*dFlattening-dFlattening*dFlattening

N=dSemiMajorAxis/sqrt(1-e2*sin(pcg->latitude)*sin(pcg->latitude))pcc->x=(N+pcg->height)*cos(pcg->latitude)*cos(pcg->longitude)

pcc->y=(N+pcg->height)*cos(pcg->latitude)*sin(pcg->longitude)

pcc->z=(N*(1-e2)+pcg->height)*sin(pcg->latitude)}//由笛卡尔坐标转换为站心地平坐标

void CartesianToTopocentric (PCRDTOPOCENTRIC pct,

PCRDCARTESIAN pcc,

PCRDCARTESIAN pccCenter,

double dSemiMajorAxis,

double dFlattening)

{

double dx,dy,dz

dx=pcc->x-pccCenter->x

dy=pcc->y-pccCenter->y

dz=pcc->z-pccCenter->zPCRDGEODETIC pd

pd=(PCRDGEODETIC)malloc(sizeof(CRDGEODETIC)) CartesianToGeodetic (pd,pccCenter,dSemiMajorAxis,dFlattening)pct->northing=-sin(pd->latitude)*cos(pd->longitude)*dx

-sin(pd->latitude)*sin(pd->longitude)*dy

+cos(pd->latitude)*dz

pct->easting=-sin(pd->longitude)*dx

+cos(pd->longitude)*dy

pct->upping=cos(pd->latitude)*cos(pd->longitude)*dx

+cos(pd->latitude)*sin(pd->longitude)*dy

+sin(pd->latitude)*dz

free(pd)}//由站心地平直角坐标转换为站心地平极坐标

void TopocentricToTopocentricPolar (PCRDTOPOCENTRICPOLAR pctp,

PCRDTOPOCENTRIC pct)

{ pctp->range=sqrt(pct->northing*pct->northing+pct->easting*pct->easting+pct->upping*pct->upping)

pctp->azimuth=atan(pct->easting/pct->northing)

pctp->elevation=asin(pct->upping/pctp->range)

}//由站心地平极坐标转换为站心地平直角坐标

void TopocentricPolarToTopocentric (PCRDTOPOCENTRIC pct,

PCRDTOPOCENTRICPOLAR pctp)

{

pct->northing=pctp->range*cos(pctp->elevation)*cos(pctp->azimuth)

pct->easting=pctp->range*cos(pctp->elevation)*sin(pctp->azimuth)

pct->upping=pctp->range*sin(pctp->elevation)}

1、模板的取材主要依据PCR的圹增对象,可以是病原体标本如病毒、也可以是病理生理标本如细胞等。

2、标本处理的基本要求是除去杂质,并部分纯化标本中的核酸。多数样品霓要经过SDS和蛋白 酶K处理。难以破碎的细菌,可用溶菌酶加EDTA处理。

3、引物最好在模板cDNA的保守区内设计,引物长度一般在15~30碱基之间,引物长度常用的是18~27 bp,但不应大于38,因为过长会导致其延伸温度大于74℃,不适于Taq DNA 聚合酶进行反应

4、引物GC含量在40%~60%之间,Tm值最好接近72℃,族梁GC含量过高或过低都不利于引发反应。上下游引物的Tm值是寡核苷酸的解链温度,即在一定盐浓度条件下,50%寡核苷酸双链解链的温度

5、引物3’端要避开密码子的第3位,引物3′端不要终止枝氏于密码子的第3位,引物3′端不能选择A,最好选择T,引物3′端错配时,不同碱基引发效率存在着很大的差异。

扩展资料:

PCR能快速特异扩增任何已知目的基因或DNA片段,并能轻易在皮克(pg)水平起始DNA混合物中的目的基因扩增猛穗散达到纳克、微克、毫克级的特异性DNA片段。因此,PCR技术一经问世就被迅速而广泛地用于分子生物学的各个领域。

通过DNA基因追踪系统,能迅速掌握患者体内的病毒含量,其精确度高达纳米级别,精确检测乙肝病毒在患者体内存在的数量、是否复制、是否传染、传染性有多强、是否必要服药、肝功能有否异常改变。

能及时判断病人最适合使用哪类抗病毒药物、判断药物疗效如何、给临床治疗提供了可靠的检验依据。

重复循环变性--退火--延伸三过程,就可获得更多的“半保留复制链”,而且这种新链又可成为下次循环的模板。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8157285.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存