当前位置:文档之家› 坐标转换源代码--GPS定位程序(C--)

坐标转换源代码--GPS定位程序(C--)

坐标转换源代码--GPS定位程序(C--)
坐标转换源代码--GPS定位程序(C--)

坐标转换源代码--GPS定位程序(C++)

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;

}CRDCARTESIAN;

typedef CRDCARTESIAN *PCRDCARTESIAN;

//笛卡尔坐标系

typedef struct tagCRDGEODETIC{

double longitude;

double latitude;

double height;

}CRDGEODETIC;

typedef CRDGEODETIC *PCRDGEODETIC;

//大地坐标系

typedef struct tagCRDTOPOCENTRIC{

double northing;

double easting;

double upping;

}CRDTOPOCENTRIC;

typedef CRDTOPOCENTRIC *PCRDTOPOCENTRIC; //站心地平坐标系(线坐标形式)

typedef struct tagCRDTOPOCENTRICPOLAR{ double range;

double azimuth;

double elevation;

}CRDTOPOCENTRICPOLAR;

typedef 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*dFlattening;

pcg->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)

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;//卯酉圈半径

C程序代码大全

//根据半径计算圆的周长和面积#include const float PI=3.1416; //声明常量(只读变量)PI为3.1416 float fCir_L(float); //声明自定义函数fCir_L()的原型 float fCir_S(float); //声明自定义函数fCir_S()的原型 //以下是main()函数 main() { float r,l,s; //声明3个变量 cout<<"r="; //显示字符串 cin>>r; //键盘输入 l=fCir_L(r); //计算圆的周长,赋值给变量l s=fCir_S(r); //计算圆的面积,赋值给变量s cout<<"l="<>a>>b; a=6378137; //以WGS84为例 b=6356752.3142; e=sqrt(a*a-b*b)/a; c=a*a/b; int x; cout<<"请输入0或1,0:大地坐标系到空间直角坐标系;1:空间直角坐标系到大地坐标系"<>x; switch(x) { case 0: { cout<<"请分别输入该点大地纬度、经度、大地高(国际单位,纬度经度请按度分秒,分别输入)"<>d1>>f1>>m1>>d2>>f2>>m2>>H; B=PI*(d1+f1/60+m1/3600)/180; L=PI*(d2+f2/60+m2/3600)/180; W=sqrt(1-e*e*sin(B)*sin(B)); N=a/W; X=(N+H)*cos(B)*cos(L); Y=(N+H)*cos(B)*sin(L); Z=(N*(1-e*e)+H)*sin(B); cout<<"空间直角坐标系中X,Y,Z,坐标值(国际单位)分别为"<>X>>Y>>Z; double t,m,n, P,k,B0; m=Z/sqrt(X*X+Y*Y); //t0 B0=atan(m); //初值 n=Z/sqrt(X*X+Y*Y);

坐标转换工具说明书-1208

§10.2坐标转换工具 HGO 数据处理软件包提供了坐标转换程序,可以进行地方坐标与WGS-84坐标的相互转换,同时具备参数求解功能。 下面对这个工具进行介绍: 10.2.1概述 首先,介绍一下常见的三种坐标表示方法:经纬度和椭球高(BLH),空间直角坐标(XYZ),平面坐标和水准高程(xyh/NEU)。注意:椭球高是一个几何量,而水准高是一个物理量。 我们通常说的WGS-84坐标是经纬度和椭球这一种,北京54坐标是平面坐标和水准高程这一种,实质是有平面基准和高程基准组成的。 此外,再注意一下坐标转换的严密性问题,在同一个椭球里的纯几何转换都是严密的(BLH<->XYZ),而在不同的基准之间的转换是不严密的。举个例子,在WGS-84坐标和北京54坐标之间是不存在一套转换参数可以全国通用的,因为前者是一个地心坐标系,后者是一个参心坐标系。高程转换是由几何高向物理高转换。因此在每个地方必须用椭球进行局部拟合,通常用7参数模型来拟合。 那么,两个椭球间的坐标转换应该是怎样的呢?一般而言比较严密的是用七参数法(或称布尔莎模型),即X平移,Y平移,Z平移,X旋转,Y旋转,Z旋转,尺度变化K。要求得七参数就需要在一个地区需要3个以上的已知点(7个参数至少7个方程可解,所以需要三个点列出9个方程),如果区域范围不大、最远点间的距离不大于30Km(经验值)的情况可以用三参数,即X平移,Y平移,Z平移,而将X旋转,Y旋转,Z旋转,尺度变化K视为0,所以三参数只是七参数的一种特例。 七参数模型的实质是用一个局部椭球去拟合地方坐标系的形态;所以转换后获得的地方椭球高就是水准高。当然我们也可以把平面和高程两个方向分别进行拟合。例如平面用四参数模型拟合,高程方向则用二次曲面等模型来拟合。这样分开处理的模式相对七参数模型自由度更高。但是由于四参数模型参数较少,表达能力较弱,通常只用于小区域坐标转换。 综上所述,从实用的角度出发,坐标转换程序提供了两种转换策略供给客户选择使用: 1.七参数模型,一步得到地方平面和水准数据。 2.四参数加高程拟合模型,分两步得到地方平面和水准数据。 由于各厂家的模型和流程定义可能是不一样的,这里就我们公司的转换流程描述如下:七参数的转换过程是这样的:

C程序代码大全

C程序代码大全 This manuscript was revised on November 28, 2020

<=70) cout<<"Your grade is a C."<=60) cout<<"Your grade is a D."< main() { int n; cout<<"n="; cin>>n; if (n>=0 && n<=100 &&n%2==0) cout<<"n="< main() { int a,b,Max; .10 for(int i=1;i<=10;i++) cout<=1;j--) cout<

比较典型的PID算法控制程序源代码

比较典型的PID处理程序 [日期:2005-2-1] 来源:21ICbbs 作者:lookuper [字体:大中小] /*============================================================================ ======================== 这是一个比较典型的PID处理程序,在使用单片机作为控制cpu时,请稍作简化,具体的PID参数必须由具体对象通过实验确定。由于单片机的处理速度和ram资源的限制,一般不采用浮点数运算,而将所有参数全部用整数,运算 到最后再除以一个2的N次方数据(相当于移位),作类似定点数运算,可大大提高运算速度,根据控制精度的不同要求,当精度要求很高时,注意保留移位引起的“余数”,做好余数补偿。这个程序只是一般常用pid算法的基本架构,没有包含输入输出处理部分。============================================================================== =======================*/ #include #include /*============================================================================ ======================== PID Function The PID (比例、积分、微分) function is used in mainly control applications. PIDCalc performs one iteration of the PID algorithm. While the PID function works, main is just a dummy program showing a typical usage. ============================================================================== =======================*/ typedef struct PID { double SetPoint; // 设定目标Desired value double Proportion; // 比例常数Proportional Const double Integral; // 积分常数Integral Const double Derivative; // 微分常数Derivative Const double LastError; // Error[-1] double PrevError; // Error[-2] double SumError; // Sums of Errors } PID; /*============================================================================ ======================== PID计算部分 ============================================================================== =======================*/ double PIDCalc( PID *pp, double NextPoint ) { double dError, Error; Error = pp->SetPoint - NextPoint; // 偏差

实验三 代码转换

电工电子实验中心 实验报告 课程名称:计算机硬件技术基础实验名称:代码转换 姓名:学号: 评定成绩:审阅教师:实验时间:2017.05.02 南京航空航天大学

— 一、实验目的要求 1) 掌握 ASCII 码转换的基本方法。 2) 学会 INT21 功能调用, 掌握人机对话的设计方法。 3) 进一歩熟悉 Tddebug 调试环境和 Turbo Debugger 的使用。 二、实验任务 从键盘输入小写字母(最多 20 个),以“.”号作为结束标志, 将其变换成相应的大写字母输岀在屏幕上。 三、实验代码 CRLF MACRO MOV DL, 0DH MOV AH, 02H INT 21H MOV DL, 0AH ;宏定义回车,换行 MOV AH, 02H INT 21H ENDM DATA SEGMENT MES1 DB 'PLEASE INPUT THE SMALL LETTER,ENDED WITH ".":$' MES2 DB 'THE CAPTAL LETTER IS:$' SMALL DB 50 ;?预留键盘输入缓冲区长度为50个 DB 0 ;?预留实际键盘输入字符数的个数 DB 50 DUP(0) CAPITAL DB 50 DUP('$') ;?预留大写字母缓冲区长度为50个 DATA ENDS STACK1 SEGMENT STACK DB 100 DUP (0) STACK1 ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK1 START PROC FAR PUSH DS MOV AX, 0 PUSH AX

坐标系转换问题

坐标系转换问题--WGS84坐标 BJ54 BJ80 2012-10-18 14:37 对于坐标系的转换,给很多GPS的使用者造成一些迷惑,尤其是对于刚刚接触的人,搞不明白到底是怎么一回事。我对坐标系的转换问题,也是一知半解,对于没学过测量专业的人来说,各种参数的搞来搞去实在让人迷糊。在我有限的理解范围内,我想在这里简单介绍一下,主要是抛砖引玉,希望能引出更多的高手来指点迷津。 我们常见的坐标转换问题,多数为WGS84转换成北京54或西安80坐标系。其中WGS84坐标系属于大地坐标,就是我们常说的经纬度坐标,而北京54或者西安80属于平面直角坐标。对于什么是大地坐标,什么是平面直角坐标,以及他们如何建立,我们可以另外讨论。这里不多啰嗦。 那么,为什么要做这样的坐标转换呢? 因为GPS卫星星历是以WGS84坐标系为根据而建立的,我国目前应用的地形图却属于1954年北京坐标系或1980年国家大地坐标系;因为不同坐标系之间存在着平移和旋转关系(WGS84坐标系与我国应用的坐标系之间的误差约为80),所以在我国应用GPS进行绝对定位必须进行坐标转换,转换后的绝对定位精度可由80提高到5-10米。简单的来说,就一句话,减小误差,提高精度。 下面要说到的,才是我们要讨论的根本问题:如何在WGS84坐标系和北京54坐标系之间进行转换。 说到坐标系转换,还要罗嗦两句,就是上面提到过的椭球模型。我们都知道,地球是一个近似的椭球体。因此为了研究方便,科学家们根据各自的理论建立了不同的椭球模型来模拟地球的形状。而且我们刚才讨论了半天的各种坐标系也是建立在这些椭球基准之上的。比如北京54坐标系采用的就是克拉索夫斯基椭球模型。而对应于WGS84坐标系有一个WGS84椭球,其常数采用IUGG第17届大会大地测量常数的推荐值。WGS84椭球两个最常用的几何常数:长半轴:6378137±2(m);扁率:1:298.257223563 之所以说到半长轴和扁率倒数是因为要在不同的坐标系之间转换,就需要转换不同的椭球基准。这就需要两个很重要的转换参数dA、dF。 dA的含义是两个椭球基准之间半长轴的差;dF的含义是两个椭球基准之间扁率倒数的差。在进行坐标转换时,这两个转换参数是固定的,这里,我们给出在进行84—〉54,84—〉80坐标转换时候的这两个参数如下: WGS84>北京54:DA:-108;DF:0.0000005 WGS84>西安80:DA: -3 ;DF: 0 椭球的基准转换过来了,那么由于建立椭球的原点还是不一致的,还需要在dXdYdZ这三个空间平移参量,来将两个不同的椭球原点重合,这样一来才能使两个坐标系的椭球完全转换过来。而由于各地的地理位置不同,所以在各个地方的这三个坐标轴平移参量也是不同的,因此需要用当地的已知点来计算这三个参数。具体的计算方法是: 第一步:搜集应用区域内GPS“B”级网三个以上网点WGS84坐标系B、L、H值及我国坐标系(BJ54或西安80)B、L、h、x值。(注:B、L、H分别为大地坐标系中的大地纬度、大地经度及大地高,h、x分别为大地坐标系中的高程及高程异常。各参数可以通过各省级测绘局或测绘院具有“A”级、“B”级网的单位获得。) 第二步:计算不同坐标系三维直角坐标值。计算公式如下: X=(N+H)cosBcosL Y=(N+H)cosBsinL Z=[N(1-e2)+H]sinB

数控编程G、M、T、S代码大全(精选.)

数控机床标准G、M代码 一.准备功能字G 准备功能字是使数控机床建立起某种加工方式的指令,如插补、刀具补偿、固定循环等。G功能字由地址符G和其后的两位数字组成,从G00—G99共100种功能。JB3208-83标准中规定如下表: 代码功能 作用范 围 功能 代码 功能作用范围功能 G00 点定位 G50 * 刀具偏置0/- G01 直线插补 G51 * 刀具偏置+/0 G02 顺时针圆弧插补 G52 * 刀具偏置-/0 G03 逆时针圆弧插补 G53 直线偏移注销 G04 * 暂停 G54 直线偏移 X G05 * 不指定 G55 直线偏移Y G06 抛物线插补 G56 直线偏移Z G07 * 不指 定 G57 直线偏移XY G08 * 加速 G58 直线偏移XZ G09 * 减速 G59 直线偏移YZ G10-G16 * 不指定 G60 准确定位(精) G17 XY平面选 择 G61 准确定位(中) G18 ZX平面选择 G62 准确定位(粗) G19 YZ平面选择 G63 * 该丝 G20-G32 * 不指定 G64-G67 * 不指定 G33 螺纹切削,等螺距 G68 * 刀具偏置,内角 G34 螺纹切削,增螺距 G69 * 刀具偏置,外角 G35 螺纹切削,减螺距 G70-G79 * 不指定 G36-G39 * 不指定 G80 固定循环注销 G40 刀具补偿/刀具偏置 注销 G81-G89 固定循环 G41 刀具补偿--左 G90 绝对尺寸 G42 刀具补偿-- 右 G91 增量尺寸 G43 * 刀具偏置--正 G92 * 预置寄存 G44 * 刀具偏置--右 G93 进给率,时间倒数 G45 * 刀具偏置+/+ G94 每分钟进给 G46 * 刀具偏置+/- G95 主轴每转进给 G47 * 刀具偏置-/- G96 恒线速 度 G48 * 刀具偏置-/+ G97 每分钟转数(主轴) G49 * 刀具偏置0/+ G98-G99 * 不指定 注:*表示如作特殊用途,必须在程序格式中说明二.辅助功能字M

编码规则控制程序

1.目的 使全体员工了解公司产品编码规则及编码中相应代码含义,便于产品编码的统一管理。 2.范围 公司内部用于产品方面的所有包装成品、光身成品、自制件/组件、外购件及非生产物料。 3.职责 工程部负责编制所有编码; 各部门部负责编码规则的对应物料、组件和成品的组织与实施。 4.物料分类及定义 分类:包装成品,光身成品,自制件/组件,外购件及非生产物料; 定义: 包装成品:由自制件/组件、外购件组成具有一定功能可直接用于销售的产品; 光身成品:由自制件/组件、外购件组成具有一定功能且无需要再加工的产品(无包装); 自制件/组件:由公司内部通过不同的加工工艺完成的部件; 外购件:由公司外购回来需再加工的物料或部件; 非生产物料:由公司外购回来并用于各部门的非生产物料; 5.编码规则 编码组成= 一级分类(大类)+二级分类(中类)+三级分类(小类)…….. 编码长度:包装成品(12位数字),光身成品、外购件、自制件/组件及非生产物料(8位数字) 6. 规则示意图及说明如下: XXX 五金制品有限公司 文 件 版 本 A/0 文 件 编 号 编码规则 页 次 1/11 QP-7.3.0-02 生效日期 2017-06-28

包装成品编码总表 一级分类二级分类三级分类四级分类五级分类六级分类 类别编码类别编码类别编码类别编码类别编码类别编码 包装成品8 底盘系列 1 NB款01 无任何功能00 流水号 00 客户编码 0000-9999 NG款02 仅升降01 01 NT款03 仅背逍遥02 02 ND款04 仅座逍遥03 03 …… 导轨系列 2 27款01 常规00 流水号 00 客户编码0000-9999 35款02 反弹01 01 45款03 缓冲02 02 53款04 自锁03 03 隐藏款05 …… 钢铀系列 3 400款01 常规00 流水号 00 客户编码0000-9999 500款02 折叠01 01 …… 电脑周边 系列 4 液晶支架01 常规00 流水号 00 客户编码 (通用可省略) 0000-9999主机架02 单臂01 01 键盘架03 双臂02 02 杂志架04 滑动03 03 转动04 04 …… 翻床系列 5 QF款01 SF款01 流水号 01 客户编码 (通用可省略) 0000-9999 CF款02 SZ款02 02 03 SJ款03 03 04 SF/SJ款04 04 SZ/SJ款05 05 SF/SZ款06 06 …… … 6 …… …7 …… …8 …… …9 …… 外购件 成品系列 底盘系列01 头抌类01 流水号 01 客户编码 (通用可省略) 0000-9999 通用省略导轨系列02 网架类02 02 钢铀系列03 扶手类03 03 XXX五金制品有限公司文件版本 A/0 文件编号编码规则页次2/11 QP-7.3.0-02 生效日期2017-06-28

代码转换汇编

二进制编码的十进制数,简称BCD码(Binarycoded Decimal). 这种方法是用4位二进制码的组合代表十进制数的0,1,2,3,4,5,6 ,7,8,9 十个数符。4位二进制数码有16种组合,原则上可任选其中的10种作为代码,分别代表十进制中的0,1,2,3,4,5,6,7,8,9 这十个数符。最常用的BCD码称为8421BCD码,8.4.2.1 分别是4位二进数的位取值。点击此处将给出十进制数和8421BCD编码的对应关系表。 1、BCD码与十进制数的转换 BCD码与十进制数的转换.关系直观,相互转换也很简单,将十进制数75.4转换为BCD码如: 75.4=(0111 (0101.0100)BCD 若将BCD码1000 0101.0101转换为十进制数如: (1000 0101.0101)BCD=85.5 注意:同一个8位二进制代码表示的数,当认为它表示的是二进制数和认为它表示的是二进制编码的十进制数时,数值是不相同的。 例如:00011000,当把它视为二进制数时,其值为24;但作为2位BCD码时,其值为18。 又例如00011100,如将其视为二进制数,其值为28,但不能当成BCD码,因为在8421BCD 码中,它是个非法编码 . 2、BCD码的格式 计算机中的BCD码,经常使用的有两种格式,即分离BCD码,组合BCD码。 所谓分离BCD码,即用一个字节的低四位编码表示十进制数的一位,例如数82的存放格式为: _ _ _1 0 0 0 _ _ _ _0 0 1 0 其中_表示无关值。 组合BCD码,是将两位十进制数,存放在一个字节中,例82的存放格式是1000 0010 3、BCD码的加减运算 由于编码是将每个十进制数用一组4位二进制数来表示,因此,若将这种BCD码直接交计算机去运算,由于 计算机总是把数当作二进制数来运算,所以结果可能会出错。例:用BCD码求38+49。 解决的办法是对二进制加法运算的结果采用"加6修正,这种修正称为BCD调整。即将二进制加法运算的结果修正为BCD码加法运算的结果,两个两位BCD数相加时,对二进制加法运算结果采用修正规则进行修正。修正规则: (1)如果任何两个对应位BCD数相加的结果向高一位无进位,若得到的结果小于或等于9, 则该不需修正;若得到的结果大于9且小于16时,该位进行加6修正。 (2)如果任何两个对应位BCD数相加的结果向高一位有进位时(即结果大于或等于16),该位进行加6修正. (3)低位修正结果使高位大于9时,高位进行加6修正。 下面通过例题验证上述规则的正确性。 用BCD码求35+21 BCD码求25+37 用BCD码求38+49 用BCD码求42+95 用BCD码求91+83 用BCD码求94+7 用BCD码求76+45 两个组合BCD码进行减法运算时,当低位向高位有借位时,由于"借一作十六"与"借一作十"的差别,将比正确的结果多6,所以有借位时,可采用"减6修正法"来修正.两个BCD码进行加减时,先按二进制加减指令进行运算,再对结果用BCD调整指令进行调整,就可得到正确的十进制运算结果。实际上,计算机中既有组合BCD数的调整指令,也有分离BCD数的调整指

坐标转换源代码--GPS定位程序(C--)

坐标转换源代码--GPS定位程序(C++) 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; }CRDCARTESIAN; typedef CRDCARTESIAN *PCRDCARTESIAN;

//笛卡尔坐标系 typedef struct tagCRDGEODETIC{ double longitude; double latitude; double height; }CRDGEODETIC; typedef CRDGEODETIC *PCRDGEODETIC; //大地坐标系 typedef struct tagCRDTOPOCENTRIC{ double northing; double easting; double upping; }CRDTOPOCENTRIC; typedef CRDTOPOCENTRIC *PCRDTOPOCENTRIC; //站心地平坐标系(线坐标形式) typedef struct tagCRDTOPOCENTRICPOLAR{ double range;

C语言代码大全

------------------------------------------------------------------------摘自宋鲁生程序设计大赛 乘法口诀表 #include #include void main(void) { int i,j,x,y; clrscr(); printf("\n\n * * * 乘法口诀表* * * \n\n"); x=9; y=5; for(i=1;i<=9;i++) { gotoxy(x,y); printf("%2d ",i); x+=3; } x=7; y=6; for(i=1;i<=9;i++) { gotoxy(x,y); printf("%2d ",i); y++; } x=9; y= 6; for(i=1;i<=9;i++) { for(j=1;j<=9;j++) { gotoxy(x,y); printf("%2d ",i*j); y++; } y-=9; x+=3; } printf("\n\n"); }

用一维数组统计学生成绩 #include void main() { char SelectKey,CreditMoney,DebitMoney; while(1) { do{ clrscr(); puts("========================="); puts("| Please select key: |"); puts("| 1. Quary |"); puts("| 2. Credit |"); puts("| 3. Debit |"); puts("| 4. Return |"); puts("========================="); SelectKey = getch(); }while( SelectKey!='1' && SelectKey!='2' && SelectKey!='3' && SelectKey!='4' ); switch(SelectKey) { case '1': clrscr(); puts("================================"); puts("| Your balance is $1000. |"); puts("| Press any key to return... |"); puts("================================"); getch(); break; case '2': do{ clrscr(); puts("=================================="); puts("| Please select Credit money: |"); puts("| 1. $50 |"); puts("| 2. $100 |"); puts("| 3. Return |"); puts("=================================="); CreditMoney = getch(); }while( CreditMoney!='1' && CreditMoney!='2' && CreditMoney!='3' ); switch(CreditMoney)

基于单片机的温度控制器附程序代码

生产实习报告书 报告名称基于单片机的温度控制系统设计姓名 学号0138、0140、0141 院、系、部计算机与通信工程学院 专业信息工程10-01 指导教师 2013年 9 月 1日

目录 1.引言.................................. 错误!未定义书签。 2.设计要求.............................. 错误!未定义书签。 3.设计思路.............................. 错误!未定义书签。 4.方案论证.............................. 错误!未定义书签。方案一................................................. 错误!未定义书签。方案二................................................. 错误!未定义书签。 5.工作原理.............................. 错误!未定义书签。 6.硬件设计.............................. 错误!未定义书签。单片机模块............................................. 错误!未定义书签。 数字温度传感器模块 .................................... 错误!未定义书签。 DS18B20性能......................................... 错误!未定义书签。 DS18B20外形及引脚说明............................... 错误!未定义书签。 DS18B20接线原理图................................... 错误!未定义书签。按键模块............................................... 错误!未定义书签。声光报警模块........................................... 错误!未定义书签。数码管显示模块......................................... 错误!未定义书签。 7.程序设计.............................. 错误!未定义书签。主程序模块............................................. 错误!未定义书签。 读温度值模块.......................................... 错误!未定义书签。 读温度值模块流程图: ................................. 错误!未定义书签。

54坐标系、80坐标系、84坐标系之间的转换关系

工程施工过程中,常常会遇到不同坐标系统间,坐标转换的问题。目前国内常见的转换有以下几种:1,大地坐标(BLH)对平面直角坐标(XYZ);2,北京54全国80及WGS84坐标系的相互转换;3,任意两空间坐标系的转换。其中第2类可归入第三类中。所谓坐标转换的过程就是转换参数的求解过程。常用的方法有三参数法、四参数法和七参数法。以下对上述三种情况作详细描述如下: 1,大地坐标(BLH)对平面直角坐标(XYZ) 常规的转换应先确定转换参数,即椭球参数、分带标准(3度,6度)和中央子午线的经度。椭球参数就是指平面直角坐标系采用什么样的椭球基准,对应有不同的长短轴及扁率。一般的工程中3度带应用较为广泛。对于中央子午线的确定有两种方法,一是取平面直角坐标系中Y坐标的前两位*3,即可得到对应的中央子午线的经度。如x=3250212m,y=395121123m,则中央子午线的经度=39*3=117度。另一种方法是根据大地坐标经度,如果经度是在155.5~185.5度之间,那么对应的中央子午线的经度=(155.5+185.5)/2=117度,其他情况可以据此3度类推。 另外一些工程采用自身特殊的分带标准,则对应的参数确定不在上述之列。 确定参数之后,可以用软件进行转换,以下提供坐标转换的程序下载。 2,北京54全国80及WGS84坐标系的相互转换 这三个坐标系统是当前国内较为常用的,它们均采用不同的椭球基准。 其中北京54坐标系,属三心坐标系,大地原点在苏联的普而科沃,长轴6378245m,短轴6356863,扁率1/298.3;西安80坐标系,属三心坐标系,大地原点在陕西省径阳县永乐镇,长轴6378140m,短轴6356755,扁率1/298.25722101;WGS84坐标系,长轴6378137.000m,短轴6356752.314,扁率1/298.257223563。由于采用的椭球基准不一样,并且由于投影的局限性,使的全国各地并不存在一至的转换参数。对于这种转换由于量较大,有条件的话,一般都采用GPS联测已知点,应用GPS软件自动完成坐标的转换。当然若条件不许可,且有足够的重合点,也可以进行人工解算。详细方法见第三类。 3,任意两空间坐标系的转换 由于测量坐标系和施工坐标系采用不同的标准,要进行精确转换,必须知道至少3个重合点(即为在两坐标系中坐标均为已知的点。采用布尔莎模型进行求解。布尔莎公式: 对该公式进行变换等价得到: 解算这七个参数,至少要用到三个已知点(2个坐标系统的坐标都知道),采用间接平差模型进行解算: 其中:V 为残差矩阵; X 为未知七参数; A 为系数矩阵; 解之:L 为闭合差 解得七参数后,利用布尔莎公式就可以进行未知点的坐标转换了,每输入一组坐标值,就能求出它在新坐标系中的坐标。但是要想GPS观测成果用于工程或者测绘,还需要将地方直

C 经典程序代码大全

C 经典程序代码大全 #include const float PI= 3.1416; //声明常量(只读变量)PI为 3.1416 float fCir_L(float); //声明自定义函数fCir_L()的原型 float fCir_S(float); //声明自定义函数fCir_S()的原型 //以下是main()函数 main() { float r,l,s; //声明3个变量 cout>r; //键盘输入 l=fCir_L(r); //计算圆的周长,赋值给变量l s=fCir_S(r); //计算圆的面积,赋值给变量s cout=0.0) //如果参数大于0,则计算圆的周长 z=2*PI*x; return(z); //返回函数值 } //定义计算圆的面积的函数fCir_S() float fCir_S(float x) { float z=- 1.0; //声明局部变量 if (x>=0.0) //如果参数大于0,则计算圆的面积 z=PI*x*x; return(z); //返回函数值 } /* Program: P1- 2.CPP Written by: Hap Date written: 02:11:10 */ #include void main(void) { double s1,s2,s3; s1= 1.5; /* 对变量s1赋值*/ cout main() { double r=

1.0; cout>r; //键盘输入 l=2* 3.1416*r; //计算圆的周长,赋值给变量l cout //包含iostream.h头文件 void main() { //输出字符常量.变量和字符串 char c1= A ; cout //包含iostream.h头文件 main() { //输入输出字符 char c; cin>>c; cout>n; cout>x; cout>n; cout>c>>n>>x; cout //包含iostream.h头文件 main() { //声明整型变量 int a,b; //从键盘上为整型变量赋值cout>a; cout>b; //整型数的算术运算 cout //包含iostream.h 头文件 main() { //声明变量,并初始化 int a=010,b=10,c=0X10; //以进制形式显示数据 cout>a; cout>b; cout>c; cout //包含iostream.h头文件 #include // iomanip.h头文件包含setprecision()的定义 main() { //float型变量的声明.输入.计算和输出 float fx,fy; cout>fx; cout>fy; cout>dx; cout>dy; cout //包含iostream.h 头文件 main() { //字符类型变量的声明 char c1= A ; char c2; //字符数据的运算及输出 c2=c1+32; cout>c1>>c2; cout //包含iostream.h头文件 main() { char c1= \a ,TAB= \t ; //阵铃一声 cout //包含iostream.h头文件 main()

数控编程代码大全

数控编程代码大全FANUC车床G代码 FANUC铣床G代码 FANUC M指令代码 SIEMENS铣床 G代码 SIEMENS802S/CM 固定循环 SIEMENS802DM/810/840DM 固定循环 SIEMENS车床 G 代码 SIEMENS 801、802S/CT、 802SeT 固定循环SIEMENS 802D、810D/840D 固定循环 HNC车床G代码 HNC铣床G代码 HNC M指令 KND100铣床G代码 KND100车床G代码 KND100 M指令 GSK980车床G代码 GSK980T M指令 GSK928 TC/TE G代码 GSK928 TC/TE M指令 GSK990M G代码 GSK990M M指令

GSK928MA G代码 GSK928MA M指令 三菱 E60 铣床G代码 DASEN 3I铣床G代码 DASEN 3I车床G代码 华兴车床G代码 华兴M指令 华兴铣床G代码 华兴M指令 仁和32T G代码 仁和32T M指令 SKY 2003N M G代码 SKY 2003N M M指令 1.FANUC车床G代码 G代码解释 G00定位 (快速移动) G01直线切削 G02顺时针切圆弧 (CW,顺时钟) G03逆时针切圆弧 (CCW,逆时钟) G04暂停 (Dwell) G09停于精确的位置 G20英制输入

G21公制输入 G22内部行程限位有效 G23内部行程限位无效 G27检查参考点返回 G28参考点返回 G29从参考点返回 G30回到第二参考点 G32切螺纹 G40取消刀尖半径偏置 G41刀尖半径偏置 (左侧) G42刀尖半径偏置 (右侧) G50修改工件坐标;设置主轴最大的 RPMG52设置局部坐标系G53选择机床坐标系 G70精加工循环 G71内外径粗切循环 G72台阶粗切循环 G73成形重复循环 G74Z 向步进钻削 G75X 向切槽 G76切螺纹循环 G80取消固定循环 G83钻孔循环

相关主题
文本预览
相关文档 最新文档