Find the equation of plane which passes through two points and parallel to a given axis

Given two points A(x1, y1, z1) and B(x2, y2, z2) and a set of points (a, b, c) which represent the axis (ai + bj + ck), the task is to find the equation of plane which passes through the given points A and B and parallel to the given axis.

Examples:

Input: x1 = 1, y1 = 2, z1 = 3, x2 = 3, y2 = 4, z2 = 5, a= 6, b = 7, c = 8
Output: 2x + 4y + 2z + 0 = 0

Input: x1 = 2, y1 = 3, z1 = 5, x2 = 6, y2 = 7, z2 = 8, a= 11, b = 23, c = 10.
Output: -29x + 7y + 48z + 0= 0

Approach:
From the given two points on plane A and B, The directions ratios an vector equation of line AB is given by:



direction ratio = (x2 – x1, y2 – y1, z2 – z1)
 \overrightarrow{AB} = (x2-x1) i + (y2-y1) j + (z2 - z1) k

Since the line  \overrightarrow{AB} is parallel to the given axis (ai + bj + ck). Therefore, the cross-product of  \overrightarrow{AB} and (ai + bj + ck) is 0 which is given by:

 \begin{vmatrix} i & j & k\\  d & e & f \\ a & b & c  \end{vmatrix} = 0
where,
d, e, and f are the coefficient of vector equation of line AB i.e.,
d = (x2 – x1),
e = (y2 – y1), and
f = (z2 – z1)
and a, b, and c are the coefficient of given axis.

The equation formed by the above determinant is given by:

 (b*f - c*e) i - (a * f - c * d) j + (a * e - b * d) k = 0 (Equation 1)

Equation 1 is perpendicular to the line AB which means it is perpendicular to the required plane.
Let the Equation of the plane is given by Ax + By + Cz = D. (Equation 2)
where A, B, and C are the direction ratio of the plane perpendicular to plane.

Since Equation 1 are Equation 2 are perpendicular to each other, therefore the value of direction ratio of Equation 1 & 2 are parallel. Then the coefficient of the plane is given by:

A = (b*f – c*e),
B = (a*f – c*d), and
C = (a*e – b*d)

Now dot product of plane and vector line AB gives the value of D as

D = -(A * d – B * e + C * f)

Below is the implementation of above approach:

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ implementation to find the
// equation of plane which passes
// through two points and parallel
// to a given axis
  
#include <bits/stdc++.h>
using namespace std;
  
void findEquation(int x1, int y1, int z1,
                  int x2, int y2, int z2,
                  int d, int e, int f)
{
  
    // Find direction vector
    // of points (x1, y1, z1)
    // and (x2, y2, z2)
    double a = x2 - x1;
    double b = y2 - y1;
    double c = z2 - z1;
  
    // Values that are calculated
    // and simplified from the
    // cross product
    int A = (b * f - c * e);
    int B = (a * f - c * d);
    int C = (a * e - b * d);
    int D = -(A * d - B * e + C * f);
  
    // Print the equation of plane
    cout << A << "x + " << B << "y + "
         << C << "z + " << D << "= 0";
}
  
// Driver Code
int main()
{
  
    // Point A
    int x1 = 2, y1 = 3, z1 = 5;
  
    // Point B
    int x2 = 6, y2 = 7, z2 = 8;
  
    // Given axis
    int a = 11, b = 23, c = 10;
  
    // Function Call
    findEquation(x1, y1, z1,
                 x2, y2, z2,
                 a, b, c);
  
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java implementation to find the 
// equation of plane which passes 
// through two points and parallel 
// to a given axis 
import java.util.*; 
  
class GFG{ 
  
static void findEquation(int x1, int y1, int z1, 
                         int x2, int y2, int z2, 
                         int d, int e, int f) 
{
      
    // Find direction vector 
    // of points (x1, y1, z1) 
    // and (x2, y2, z2) 
    double a = x2 - x1; 
    double b = y2 - y1; 
    double c = z2 - z1; 
  
    // Values that are calculated 
    // and simplified from the 
    // cross product 
    int A = (int)(b * f - c * e); 
    int B = (int)(a * f - c * d); 
    int C = (int)(a * e - b * d); 
    int D = -(int)(A * d - B * e + C * f); 
  
    // Print the equation of plane 
    System.out.println(A + "x + " + B + "y + "
                       C + "z + " + D + "= 0 "); 
  
// Driver code 
public static void main(String[] args) 
  
    // Point A 
    int x1 = 2, y1 = 3, z1 = 5
  
    // Point B 
    int x2 = 6, y2 = 7, z2 = 8
  
    // Given axis 
    int a = 11, b = 23, c = 10
  
    // Function Call 
    findEquation(x1, y1, z1, 
                 x2, y2, z2, 
                 a, b, c); 
  
// This code is contributed by Pratima Pandey 

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# implementation to find the 
// equation of plane which passes 
// through two points and parallel 
// to a given axis 
using System;
class GFG{ 
  
static void findEquation(int x1, int y1, int z1, 
                         int x2, int y2, int z2, 
                         int d, int e, int f) 
{
      
    // Find direction vector 
    // of points (x1, y1, z1) 
    // and (x2, y2, z2) 
    double a = x2 - x1; 
    double b = y2 - y1; 
    double c = z2 - z1; 
  
    // Values that are calculated 
    // and simplified from the 
    // cross product 
    int A = (int)(b * f - c * e); 
    int B = (int)(a * f - c * d); 
    int C = (int)(a * e - b * d); 
    int D = -(int)(A * d - B * e + C * f); 
  
    // Print the equation of plane 
    Console.Write(A + "x + " + B + "y + "
                  C + "z + " + D + "= 0 "); 
  
// Driver code 
public static void Main() 
  
    // Point A 
    int x1 = 2, y1 = 3, z1 = 5; 
  
    // Point B 
    int x2 = 6, y2 = 7, z2 = 8; 
  
    // Given axis 
    int a = 11, b = 23, c = 10; 
  
    // Function Call 
    findEquation(x1, y1, z1, 
                 x2, y2, z2, 
                 a, b, c); 
  
// This code is contributed by Code_Mech

chevron_right


Output:

-29x + 7y + 48z + 0= 0

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.



Improved By : dewantipandeydp, Code_Mech

Article Tags :
Practice Tags :


Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.