Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

3D 평면의 점이 동일 평면에 있는지 확인하는 C++ 프로그램

<시간/>

점 (x1, y1, z1), (x2, y2, z2), (x3, y3, z3) 및 (x4, y4, z4)가 주어지면 프로그램은 주어진 점이 동일 평면에 있는지 여부를 확인해야 합니다. 점은 동일 평면 아래에 있고 점과 다른 2개의 평면 아래에 있으면 동일 평면에 있지 않은 점을 동일 평면이라고 합니다.

아래에는 4개의 점을 포함하는 이미지가 있으며 모두 동일한 평면 아래에 있으며 이는 점이 동일 평면에 있음을 의미하는 xy 평면입니다.

3D 평면의 점이 동일 평면에 있는지 확인하는 C++ 프로그램

아래에는 4개의 점을 포함하는 이미지가 있으며 모두 다른 평면 아래에 있으며 이는 점이 동일 평면에 있지 않음을 보여줍니다.

3D 평면의 점이 동일 평면에 있는지 확인하는 C++ 프로그램

예시

Input-: x1 = 2, y1 = 3, z1 = 1, x2 = 1, y2 = 9, z2 = 3, x3 = 3, y3 = 1, z3 = 5, x4 = 23, y4 = 21, z4 = 9
Output-: they are not coplanar
Input-: x1 = 3, y1 = 2, z1 = -5, x2 = -1, y2 = 4, z2 = -3, x3 = -3, y3 = 8, z3 = -5, x4 = -3, y4 = 2, z4 = 1
Output-: they are coplanar

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다. -

  • 변수 (x1, y1, z1), (x2, y2, z2), (x3, y3, z3) 및 (x4, y4, z4)에 점 입력
  • 평면의 방정식을 찾아 조건을 만족하는지 확인
  • 포인트가 동일 평면에 있는지 여부 표시

알고리즘

START
Step 1-> declare function to check whether points in 3-D are coplanar or not
   void check_coplanar(int x1,int y1,int z1,int x2,int y2,int z2, int x3, int y3, int z3, int x, int y, int z)
   declare variable as int a1 = x2 - x1
   declare variable as int b1 = y2 - y1
   declare variable as int c1 = z2 - z1
   declare variable as int a2 = x3 - x1
   declare variable as int b2 = y3 - y1
   declare variable as int c2 = z3 - z1
   declare variable as int a = b1 * c2 - b2 * c1
   declare variable as int b = a2 * c1 - a1 * c2
   declare variable as int c = a1 * b2 - b1 * a2
   declare variable as int d = (- a * x1 - b * y1 - c * z1)
   check
   IF(a * x + b * y + c * z + d = 0)  
      print coplanar
   End
   Else
      print not coplanar
   End
Step 2-> In main()
   declare and set variable int x1 = 2 , y1 = 3, z1 = 1, x2 = 1, y2 = 9, z2 = 3, x3 = 3, y3 = 1, z3 = 5, x4 = 23, y4 = 21, z4 = 9
   call check_coplanar(x1, y1, z1, x2, y2, z2, x3,y3, z3, x4, y4, z4)
STOP

예시

#include<bits/stdc++.h>
using namespace std ;
//calculate points in a plane are coplanar or not
void check_coplanar(int x1,int y1,int z1,int x2,int y2,int z2, int x3, int y3, int z3, int x, int y, int z) {
    int a1 = x2 - x1 ;
    int b1 = y2 - y1 ;
    int c1 = z2 - z1 ;
    int a2 = x3 - x1 ;
    int b2 = y3 - y1 ;
    int c2 = z3 - z1 ;
    int a = b1 * c2 - b2 * c1 ;
    int b = a2 * c1 - a1 * c2 ;
    int c = a1 * b2 - b1 * a2 ;
    int d = (- a * x1 - b * y1 - c * z1) ;
    if(a * x + b * y + c * z + d == 0)  
       cout << "they are coplanar" << endl;  
    else
       cout << "they are not coplanar" << endl;                    
}
int main() {
    int x1 = 2;
    int y1 = 3 ;
    int z1 = 1 ;
    int x2 = 1 ;
    int y2 = 9 ;
    int z2 = 3 ;
    int x3 = 3 ;
    int y3 = 1 ;
    int z3 = 5 ;
    int x4 = 23 ;
    int y4 = 21 ;
    int z4 = 9 ;
    check_coplanar(x1, y1, z1, x2, y2, z2, x3,y3, z3, x4, y4, z4) ;                            
    return 0;  
}

출력

위의 코드를 실행하면 다음 출력이 생성됩니다 -

they are not coplanar