Определить прямоугольник по координатам трех точек A, B и C - PullRequest
0 голосов
/ 24 мая 2018

Задающий вопрос определяет новую структуру с именем point3d, которая содержит три члена {x, y, z} (все являются значениями с плавающей запятой) в координатах 3d-плоскости.Определите новую структуру с именем box, которая содержит три точки в трехмерном пространстве {A, B, C}.Напишите программу на C, которая создает блок (т.е. mybox), принадлежащий блоку структуры выше.Определите координаты трех точек A, B и C. Программа должна вычислить объем данного блока.

struct:

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

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

I с использованием точечного произведениячтобы доказать это коробка.Но как рассчитать высоту и ширину ?(длина рассчитывается по величине вектора)

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){

}

введите описание изображения здесь

1 Ответ

0 голосов
/ 24 мая 2018

Вы можете выровнять ребро BC вдоль одной из осей (например, ось Z), а затем найти все остальные вершины, необходимые для вычисления ширины и высоты, например: D = (B.x, A.y, A.z)

...