问题请求定义一个名为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){
}
答案 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