C语言坐标系求两点距离

 二维

#include<stdio.h>
#include<math.h>
int main(){
    float x1,x2,y1,y2,distance;
    scanf("%f,%f",&x1,&y1);
    scanf("%f,%f",&x2,&y2);
    distance = sqrt(pow((x1-x2),2)+pow((y1-y2),2));
    printf("%.2f",distance);
    return 0;
}

 测试:

 三维:

#include<stdio.h>
#include<math.h>
int main(){
    float x1,x2,y1,y2,z1,z2,distance;
    scanf("%f,%f,%f",&x1,&y1,&z1);
    scanf("%f,%f,%f",&x2,&y2,&z2);
    distance = sqrt(pow((x1-x2),2)+pow((y1-y2),2)+pow((z1-z2),2));
    printf("%.2f",distance);
    return 0;
}

测试:

 

在C语言中,计算点到平面的距离通常涉及到向量运算一些几何公式。假设我们有一个二维平面的方程 `Ax + By + C = 0`,其中 `(x, y)` 是平面外的一个点坐标,`(A, B, C)` 是平面的系数,可以按照下面步骤计算: 1. 首先,我们需要将给定点 `(px, py)` 转换成一个三维向量 `(px, py, 1)`,这是因为平面的方程形式需要一个三维空间中的点。 2. 接着,计算平面法线向量 `(A, B, -1)`,因为平面方程的一般形式是 `Ax + By - D = 0`,我们将 `-D` 替换为了 `-1` 来简化。 3. 计算这两个向量之间的点积,即 `(A*px + B*py - 1) * N.x`,这里 `N.x` 是法线向量的第一个分量。 4. 最后,除以法线向量的模长 `sqrt(A^2 + B^2 + (-1)^2)`,得到的就是点到平面的距离。注意在计算之前要检查法线是否为零(即 `(A, B, -1)` 的模长是否为0),如果为零则意味着平行而非相交,此时无法计算距离。 ```c #include <stdio.h> #include <math.h> double point_to_plane_distance(double A, double B, double C, double px, double py) { double distance; double normal[3] = {A, B, -1}; double vector[3] = {px, py, 1}; if (fabs(normal[2]) == 0) { // 平行处理 return INFINITY; // 或者抛出错误,具体根据需 } double dot_product = normal[0] * vector[0] + normal[1] * vector[1] + normal[2] * vector[2]; distance = dot_product / sqrt(normal[0]*normal[0] + normal[1]*normal[1] + normal[2]*normal[2]); return distance; } int main() { // 示例:计算(1, 2)到平面3x + 4y - 5 = 0的距离 double distance = point_to_plane_distance(3, 4, -5, 1, 2); printf("Point %f, %f is from the plane %fx + %fy - %f = 0 at a distance of %.2f\n", 1, 2, 3, 4, -5, distance); return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值