📜  程序检查3-D平面中的4个点是否共面

📅  最后修改于: 2021-04-23 16:47:09             🧑  作者: Mango

给定4个点(x1,y1,z1),(x2,y2,z2),(x3,y3,z3),(x4,y4,z4)。任务是编写一个程序来检查这四个点是否共面。
注意:如果3D平面中的4个点位于同一平面中,则它们称为共面。

例子:

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: Coplanar

Input:
x1 = 0, y1 = -1, z1 = -1
x2 = 4, y2 = 5, z2 = 1
x3 = 3, y3 = 9, z3 = 4
x4 = -4, y4 = 4, z4 = 3
Output: Not Coplanar

方法:

  1. 要检查4个点是否共面,首先,找到通过给定点中任意三个点的平面方程。
    寻找通过3点的平面方程的方法。
  2. 然后,检查第4点是否满足在步骤1中获得的方程式。即,将第4点的值放在获得的方程式中。如果满足方程式,则这4个点是共面的,否则不是。

下面是上述想法的实现:

C++
// C++ program to check if 4 points
// in a 3-D plane are Coplanar
 
#include
using namespace std ;
 
// Function to find equation of plane.
void equation_plane(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) ;
       
    // equation of plane is: a*x + b*y + c*z = 0 #
       
    // checking if the 4th point satisfies
    // the above equation
    if(a * x + b * y + c * z + d == 0)
        cout << "Coplanar" << endl;
    else
        cout << "Not Coplanar" << endl;
                  
    }
     
// Driver Code
int main()
{
      
int x1 = 3 ;
int y1 = 2 ;
int z1 = -5 ;
int x2 = -1 ;
int y2 = 4 ;
int z2 = -3 ;
int x3 = -3 ;
int y3 = 8 ;
int z3 = -5 ;
int x4 = -3 ;
int y4 = 2 ;
int z4 = 1 ;
 
// function calling
equation_plane(x1, y1, z1, x2, y2, z2, x3, 
                            y3, z3, x4, y4, z4) ;                           
return 0;
 
// This code is contributed by ANKITRAI1
}


Java
//Java program to check if 4 points
//in a 3-D plane are Coplanar
 
public class GFG {
 
    //Function to find equation of plane.
    static void equation_plane(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) ;
         
     // equation of plane is: a*x + b*y + c*z = 0 #
         
     // checking if the 4th point satisfies
     // the above equation
     if(a * x + b * y + c * z + d == 0)
         System.out.println("Coplanar");
     else
         System.out.println("Not Coplanar");
                    
     }
       
    //Driver Code
    public static void main(String[] args) {
         
        int x1 = 3 ;
        int y1 = 2 ;
        int z1 = -5 ;
        int x2 = -1 ;
        int y2 = 4 ;
        int z2 = -3 ;
        int x3 = -3 ;
        int y3 = 8 ;
        int z3 = -5 ;
        int x4 = -3 ;
        int y4 = 2 ;
        int z4 = 1 ;
 
        //function calling
        equation_plane(x1, y1, z1, x2, y2, z2, x3, 
                                 y3, z3, x4, y4, z4) ;                           
    }
}


Python3
# Python program to check if 4 points
# in a 3-D plane are Coplanar
 
# Function to find equation of plane.
def equation_plane(x1, y1, z1, x2, y2, z2, x3,
                                y3, z3, x, y, z):
     
    a1 = x2 - x1
    b1 = y2 - y1
    c1 = z2 - z1
    a2 = x3 - x1
    b2 = y3 - y1
    c2 = z3 - z1
    a = b1 * c2 - b2 * c1
    b = a2 * c1 - a1 * c2
    c = a1 * b2 - b1 * a2
    d = (- a * x1 - b * y1 - c * z1)
     
    # equation of plane is: a*x + b*y + c*z = 0 #
     
    # checking if the 4th point satisfies
    # the above equation
    if(a * x + b * y + c * z + d == 0):
        print("Coplanar")
    else:
        print("Not Coplanar")
     
     
# Driver Code
x1 = 3
y1 = 2
z1 = -5
x2 = -1
y2 = 4
z2 = -3
x3 = -3
y3 = 8
z3 = -5
x4 = -3
y4 = 2
z4 = 1
equation_plane(x1, y1, z1, x2, y2, z2, x3,
                            y3, z3, x4, y4, z4)


C#
// C# program to check if 4 points
// in a 3-D plane are Coplanar
using System;
 
class GFG
{
 
// Function to find equation of plane.
static void equation_plane(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) ;
         
    // equation of plane is: a*x + b*y + c*z = 0 #
         
    // checking if the 4th point satisfies
    // the above equation
    if(a * x + b * y + c * z + d == 0)
        Console.WriteLine("Coplanar");
    else
        Console.WriteLine("Not Coplanar");
                     
}
     
// Driver Code
static public void Main ()
{
    int x1 = 3 ;
    int y1 = 2 ;
    int z1 = -5 ;
    int x2 = -1 ;
    int y2 = 4 ;
    int z2 = -3 ;
    int x3 = -3 ;
    int y3 = 8 ;
    int z3 = -5 ;
    int x4 = -3 ;
    int y4 = 2 ;
    int z4 = 1 ;
 
    //function calling
    equation_plane(x1, y1, z1, x2, y2, z2,
                   x3, y3, z3, x4, y4, z4);                        
}
}
 
// This code is contributed by jit_t


PHP


Javascript


输出:
Coplanar