给定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
方法:
- 要检查4个点是否共面,首先,找到通过给定点中任意三个点的平面方程。
寻找通过3点的平面方程的方法。 - 然后,检查第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