按三点A,B和C的坐标定义一个方框

时间:2018-05-24 13:34:35

标签: c coordinates volume box

问题请求定义一个名为point3d的新结构,其中包含三个成员 {x,y,z} (都是浮点数) 三维坐标中的值)。 定义一个名为box的新结构,其中包含三维空间{A,B,C}中的三个点。编写一个C程序,创建一个属于上面结构框的盒子(即mybox)。定义三个点A,B和C的坐标。程序应计算给定框的音量。

结构:

typedef struct{
    float x;
    float y;
    float z;
}point3d;

typedef struct{
    point3d A;
    point3d B;
    point3d C;
}box;

我使用点积来证明它是一个盒子。但是如何计算高度宽度? (长度按矢量大小计算)

void main(){
    box cord;
    point3d line1,line2;
    float pro1,pro2,pro3;
    int value;
    printf("Input coordinates A:");
    scanf("%f %f %f",&cord.A.x,&cord.A.y,&cord.A.z);
    printf("Input coordinates B:");
    scanf("%f %f %f",&cord.B.x,&cord.B.y,&cord.B.z);
    printf("Input coordinates C:");
    scanf("%f %f %f",&cord.C.x,&cord.C.y,&cord.C.z);
    line1.x=cord.B.x-cord.A.x;
    line1.y=cord.B.y-cord.A.y;
    line1.z=cord.B.z-cord.A.z;
    line2.x=cord.B.x-cord.C.x;
    line2.y=cord.B.y-cord.C.y;
    line2.z=cord.B.z-cord.C.z;
    pro1=line1.x*line2.x;
    pro2=line1.y*line2.y;
    pro3=line1.z*line2.z;
    value=prove_thebox(pro1,pro2,pro3);
    if(value!=-1) printf("This not a box");
    else if(value==-1){

    }
}

int prove_thebox(float x,float y,float z){
    float sum;
    sum=x+y+z;
    if (sum==0) return -1;
}
float box_volume(float x, float y,float z){

}

enter image description here

2 个答案:

答案 0 :(得分:0)

您可以沿其中一个轴(例如BC轴)对齐Z边缘,然后找到计算宽度和高度所需的所有其他顶点,如:D = (B.x, A.y, A.z)

答案 1 :(得分:0)

您可以定义一个具有3个坐标(不是点)的框,并具有一些类似的假设,您可以定义一个仅包含2个坐标的重绘矩形(在一个角从0,0开始的假设下)。

因此,以矩形为例,可以将ex定义为(2,3),这意味着它的拐角具有以下几点:(0,0),(2,0),(0,3), (2,3)。

对于具有3个坐标的盒子,可以说(2,3,4),可以得出以下角:

0,0,0
0,3,0
0,0,4
0,3,4
2,0,0
2,3,0
2,0,4
2,3,4

此框的容量为2*3*4 = 24