Given the co-ordinates of a 2-dimensional point p(x_{0}, y_{0}). Find the points at a distance L away from it, such that the line formed by joining these points has a slope of M.

Examples:

Input : p = (2, 1) L = sqrt(2) M = 1 Output :3, 2 1, 0 Explanation: The two points are sqrt(2) distance away from the source and have the required slope m = 1. Input : p = (1, 0) L = 5 M = 0 Output : 6, 0 -4, 0

We need to find two points that are L distance from given point, on a line with slope M.

The idea has been introduced in below post.

Find Corners of Rectangle using mid points

Based on the input slope, the problem can be classified into 3 categories.

- If slope is zero, we just need to adjust the x coordinate of the source point
- If slope is infinite, the we need to adjust the y coordinate
- For other values of slope, we can use the following equations to find the points

Now using the above formula we can find the required points.

## C++

`// C++ program to find the points on a line of ` `// slope M at distance L ` `#include <bits/stdc++.h> ` `using` `namespace` `std; ` ` ` `// structure to represent a co-ordinate ` `// point ` `struct` `Point { ` ` ` ` ` `float` `x, y; ` ` ` `Point() ` ` ` `{ ` ` ` `x = y = 0; ` ` ` `} ` ` ` `Point(` `float` `a, ` `float` `b) ` ` ` `{ ` ` ` `x = a, y = b; ` ` ` `} ` `}; ` ` ` `// Function to print pair of points at ` `// distance 'l' and having a slope 'm' ` `// from the source ` `void` `printPoints(Point source, ` `float` `l, ` ` ` `int` `m) ` `{ ` ` ` `// m is the slope of line, and the ` ` ` `// required Point lies distance l ` ` ` `// away from the source Point ` ` ` `Point a, b; ` ` ` ` ` `// slope is 0 ` ` ` `if` `(m == 0) { ` ` ` `a.x = source.x + l; ` ` ` `a.y = source.y; ` ` ` ` ` `b.x = source.x - l; ` ` ` `b.y = source.y; ` ` ` `} ` ` ` ` ` `// if slope is infinte ` ` ` `else` `if` `(m == std::numeric_limits<` `float` `> ` ` ` `::max()) { ` ` ` `a.x = source.x; ` ` ` `a.y = source.y + l; ` ` ` ` ` `b.x = source.x; ` ` ` `b.y = source.y - l; ` ` ` `} ` ` ` `else` `{ ` ` ` `float` `dx = (l / ` `sqrt` `(1 + (m * m))); ` ` ` `float` `dy = m * dx; ` ` ` `a.x = source.x + dx; ` ` ` `a.y = source.y + dy; ` ` ` `b.x = source.x - dx; ` ` ` `b.y = source.y - dy; ` ` ` `} ` ` ` ` ` `// print the first Point ` ` ` `cout << a.x << ` `", "` `<< a.y << endl; ` ` ` ` ` `// print the second Point ` ` ` `cout << b.x << ` `", "` `<< b.y << endl; ` `} ` ` ` `// driver function ` `int` `main() ` `{ ` ` ` `Point p(2, 1), q(1, 0); ` ` ` `printPoints(p, ` `sqrt` `(2), 1); ` ` ` `cout << endl; ` ` ` `printPoints(q, 5, 0); ` ` ` `return` `0; ` `} ` |

*chevron_right*

*filter_none*

## Java

`// Java program to find the points on ` `// a line of slope M at distance L ` `class` `GFG{ ` ` ` `// Class to represent a co-ordinate ` `// point ` `static` `class` `Point ` `{ ` ` ` `float` `x, y; ` ` ` `Point() ` ` ` `{ ` ` ` `x = y = ` `0` `; ` ` ` `} ` ` ` `Point(` `float` `a, ` `float` `b) ` ` ` `{ ` ` ` `x = a; ` ` ` `y = b; ` ` ` `} ` `}; ` ` ` `// Function to print pair of points at ` `// distance 'l' and having a slope 'm' ` `// from the source ` `static` `void` `printPoints(Point source, ` ` ` `float` `l, ` `int` `m) ` `{ ` ` ` ` ` `// m is the slope of line, and the ` ` ` `// required Point lies distance l ` ` ` `// away from the source Point ` ` ` `Point a = ` `new` `Point(); ` ` ` `Point b = ` `new` `Point(); ` ` ` ` ` `// Slope is 0 ` ` ` `if` `(m == ` `0` `) ` ` ` `{ ` ` ` `a.x = source.x + l; ` ` ` `a.y = source.y; ` ` ` ` ` `b.x = source.x - l; ` ` ` `b.y = source.y; ` ` ` `} ` ` ` ` ` `// If slope is infinte ` ` ` `else` `if` `(Double.isInfinite(m)) ` ` ` `{ ` ` ` `a.x = source.x; ` ` ` `a.y = source.y + l; ` ` ` ` ` `b.x = source.x; ` ` ` `b.y = source.y - l; ` ` ` `} ` ` ` `else` ` ` `{ ` ` ` `float` `dx = (` `float` `)(l / Math.sqrt(` `1` `+ (m * m))); ` ` ` `float` `dy = m * dx; ` ` ` `a.x = source.x + dx; ` ` ` `a.y = source.y + dy; ` ` ` `b.x = source.x - dx; ` ` ` `b.y = source.y - dy; ` ` ` `} ` ` ` ` ` `// Print the first Point ` ` ` `System.out.println(a.x + ` `", "` `+ a.y); ` ` ` ` ` `// Print the second Point ` ` ` `System.out.println(b.x + ` `", "` `+ b.y); ` `} ` ` ` `// Driver code ` `public` `static` `void` `main(String[] args) ` `{ ` ` ` `Point p = ` `new` `Point(` `2` `, ` `1` `), ` ` ` `q = ` `new` `Point(` `1` `, ` `0` `); ` ` ` `printPoints(p, (` `float` `)Math.sqrt(` `2` `), ` `1` `); ` ` ` ` ` `System.out.println(); ` ` ` ` ` `printPoints(q, ` `5` `, ` `0` `); ` `} ` `} ` ` ` `// This code is contributed by Rajnis09 ` |

*chevron_right*

*filter_none*

Output:

3, 2 1, 0 6, 0 -4, 0

This article is contributed by **Ashutosh Kumar** 😀 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 write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

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:

- Slope of the line parallel to the line with the given slope
- Program to find slope of a line
- Slope of perpendicular to line
- Ways to choose three points with distance between the most distant points <= L
- Find the slope of the given number
- Find the point on X-axis from given N points having least Sum of Distances from all other points
- Find X and Y intercepts of a line passing through the given points
- Find the maximum possible distance from origin using given points
- Find integral points with minimum distance from given set of integers using BFS
- Program to find line passing through 2 Points
- Count of obtuse angles in a circle with 'k' equidistant points between 2 given points
- Haversine formula to find distance between two points on a sphere
- Find the integer points (x, y) with Manhattan distance atleast N
- Represent a given set of points by the best possible straight line
- Check whether two points (x1, y1) and (x2, y2) lie on same side of a given line or not
- Check whether it is possible to join two points given on circle such that distance between them is k
- Distance between end points of Hour and minute hand at given time
- Number of Integral Points between Two Points
- Prime points (Points that split a number into two primes)
- Minimum number of points to be removed to get remaining points on one side of axis