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)

Since the line is parallel to the given axis . Therefore, the cross-product of and is 0 which is given by:

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:

(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 . **(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++

`// 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*

*filter_none*

## Java

`// 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*

*filter_none*

## C#

`// 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*

*filter_none*

**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.

## Recommended Posts:

- Program to find equation of a plane passing through 3 points
- Program to check if the points are parallel to X axis or Y axis
- Number of lines from given N points not parallel to X or Y axis
- Count of Squares that are parallel to the coordinate axis from the given set of N points
- Find the point on X-axis from given N points having least Sum of Distances from all other points
- Find whether only two parallel lines contain all coordinates points or not
- Find Four points such that they form a square whose sides are parallel to x and y axes
- Maximum number of region in which N non-parallel lines can divide a plane
- Minimum number of points to be removed to get remaining points on one side of axis
- Missing vertex among N axis-parallel rectangles
- Count of rectangles possible from N and M straight lines parallel to X and Y axis respectively
- Hammered distance between N points in a 2-D plane
- Program to check whether 4 points in a 3-D plane are Coplanar
- Number of triangles in a plane if no more than two points are collinear
- Maximum Squares possible parallel to both axes from N distinct points
- Maximum distance between two points in coordinate plane using Rotating Caliper's Method
- Number of ordered points pair satisfying line equation
- Program to find X, Y and Z intercepts of a plane
- Equation of circle when three points on the circle are given
- Find mirror image of a point in 2-D plane

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.