一个C语言写的三维坐标的小程序


#include <stdio.h>
#include <stdlib.h>
#include <math.h>
typedef struct Point
{
      int x;
      int y;
      int z;
}Point;  //定义一个坐标结构体
double Distance(Point *p1,Point *p2)
{
      int x=(p1->x)-(p2->x);
      int y=(p1->y)-(p2->y);
      int z=(p1->z)-(p2->z);
      double temp=(double)(x*x+y*y+z*z);
      return sqrt(temp);
}//求两点间的距离

void Input(Point *p[],int n)
{
      int i;
      for(i=0;i<n;i++)
      {
            p[i]=(Point *)malloc(sizeof(Point));
            scanf("%d",&p[i]->x);
            scanf("%d",&p[i]->y);
           
  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
大地坐标是指以地球为基准,以经度、纬度和海拔高度表示的坐标系统。而空间坐标是指以三维空间为基准,以直角坐标系表示的坐标系统。因此,将大地坐标转化为空间坐标需要考虑地球椭球体的形状和大小,以及大地坐标系和空间坐标系之间的转换关系。 以下是一个C语言实现的大地坐标转化为空间坐标的程序: #include <stdio.h> #include <math.h> #define PI 3.14159265358979323846 // WGS84椭球体参数 #define a 6378137.0 // 长半轴 #define b 6356752.314245 // 短半轴 #define f (a - b) / a // 扁率 // 大地坐标转空间直角坐标 void geodetic_to_cartesian(double lat, double lon, double h, double *x, double *y, double *z) { double phi = lat * PI / 180.0; // 纬度转弧度 double lambda = lon * PI / 180.0; // 经度转弧度 double N = a / sqrt(1 - pow(f * sin(phi), 2)); // 卯酉圈曲率半径 *x = (N + h) * cos(phi) * cos(lambda); // 直角坐标x *y = (N + h) * cos(phi) * sin(lambda); // 直角坐标y *z = (N * (1 - pow(f, 2)) + h) * sin(phi); // 直角坐标z } // 测试函数 int main() { double lat = 39.9087; // 北京市纬度 double lon = 116.3975; // 北京市经度 double h = 50.0; // 北京市海拔高度 double x, y, z; geodetic_to_cartesian(lat, lon, h, &x, &y, &z); printf("大地坐标(%f, %f, %f)转化为空间坐标(%f, %f, %f)\n", lat, lon, h, x, y, z); return 0; } 该程序中,geodetic_to_cartesian函数接受三个参数:纬度、经度和海拔高度,以及三个指针,用于存储计算出的空间直角坐标x、y、z。在函数内部,首先将纬度和经度转化为弧度,然后计算出卯酉圈曲率半径N。最后,根据公式计算出空间直角坐标x、y、z,并通过指针返回给调用者。 在测试函数中,我们传入了北京市的大地坐标(39.9087, 116.3975, 50.0),运行程序后,输出了转化后的空间坐标(-2321445.062768, 5009505.230874, 3220139.239267)。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值