三维点云的最近的两个点的坐标和距离c语言
时间: 2023-06-02 10:02:39 浏览: 57
以下是一个简单的C语言实现,用于查找三维点云中最近的两个点的坐标和距离。
```
#include <stdio.h>
#include <math.h>
#define MAX_POINTS 1000
typedef struct {
double x, y, z;
} point3d;
double distance(point3d p1, point3d p2) {
double dx = p1.x - p2.x;
double dy = p1.y - p2.y;
double dz = p1.z - p2.z;
return sqrt(dx*dx + dy*dy + dz*dz);
}
int main() {
int n, i, j;
point3d points[MAX_POINTS];
double min_dist = INFINITY;
point3d p1, p2;
printf("Enter the number of points: ");
scanf("%d", &n);
printf("Enter the coordinates of the points:\n");
for (i = 0; i < n; i++) {
printf("Point %d: ", i+1);
scanf("%lf %lf %lf", &points[i].x, &points[i].y, &points[i].z);
}
for (i = 0; i < n-1; i++) {
for (j = i+1; j < n; j++) {
double dist = distance(points[i], points[j]);
if (dist < min_dist) {
min_dist = dist;
p1 = points[i];
p2 = points[j];
}
}
}
printf("The closest points are (%.2lf, %.2lf, %.2lf) and (%.2lf, %.2lf, %.2lf)\n",
p1.x, p1.y, p1.z, p2.x, p2.y, p2.z);
printf("The distance between them is %.2lf\n", min_dist);
return 0;
}
```