Related Articles

# Equation of a straight line with perpendicular distance D from origin and an angle A between the perpendicular from origin and x-axis

• Last Updated : 02 Aug, 2021

Given two integers D and A representing the perpendicular distance from the origin to a straight line and the angle made by the perpendicular with the positive x-axis respectively, the task is to find the equation of the straight line.

Examples:

Input: D = 10, A = 30 degrees
Output: 0.87x +0.50y = 10

Input: D = 12, A = 45 degrees
Output: 0.71x +0.71y = 12

Approach: The given problem can be solved based on the following observations: Figure 1

• Let the perpendicular distance be (p) and the angle between the perpendicular and the positive x-axis be (α) degrees.
• Consider a point P with coordinates (x, y) on the required line.
• Draw a perpendicular from P to meet the x-axis at L.
• From L, draw a perpendicular on OQ at M.
• Now, draw a perpendicular from P to meet ML at N. Figure 2

Now consider right triangle OLM  — (1)

Now consider right triangle PNL    — (2)

Now Using equations (1) and (2) which is the equation of the required line

Below is the implementation of the above approach :

## C++

 `// C++ program for the approach``#include ``using` `namespace` `std;` `// Function to find equation of a line whose``// distance from origin and angle made by the``// perpendicular from origin with x-axis is given``void` `findLine(``int` `distance, ``float` `degree)``{``    ``// Convert angle from degree to radian``    ``float` `x = degree * 3.14159 / 180;` `    ``// Handle the special case``    ``if` `(degree > 90) {``        ``cout << ``"Not Possible"``;``        ``return``;``    ``}` `    ``// Calculate the sin and cos of angle``    ``float` `result_1 = ``sin``(x);``    ``float` `result_2 = ``cos``(x);` `    ``// Print the equation of the line``    ``cout << fixed << setprecision(2)``         ``<< result_2 << ``"x +"``         ``<< result_1 << ``"y = "` `<< distance;``}` `// Driver Code``int` `main()``{``    ``// Given Input``    ``int` `D = 10;``    ``float` `A = 30;` `    ``// Function Call``    ``findLine(D, A);` `    ``return` `0;``}`

## Java

 `// Java program for the approach` `class` `GFG{` `// Function to find equation of a line whose``// distance from origin and angle made by the``// perpendicular from origin with x-axis is given``static` `void` `findLine(``int` `distance, ``float` `degree)``{``    ``// Convert angle from degree to radian``    ``float` `x = (``float``) (degree * ``3.14159` `/ ``180``);` `    ``// Handle the special case``    ``if` `(degree > ``90``) {``        ``System.out.print(``"Not Possible"``);``        ``return``;``    ``}` `    ``// Calculate the sin and cos of angle``    ``float` `result_1 = (``float``) Math.sin(x);``    ``float` `result_2 = (``float``) Math.cos(x);` `    ``// Print the equation of the line``    ``System.out.print(String.format(``"%.2f"``,result_2)+ ``"x +"``         ``+ String.format(``"%.2f"``,result_1)+ ``"y = "` `+  distance);``}` `// Driver Code``public` `static` `void` `main(String[] args)``{``    ``// Given Input``    ``int` `D = ``10``;``    ``float` `A = ``30``;` `    ``// Function Call``    ``findLine(D, A);` `}``}` `// This code is contributed by shikhasingrajput`

## Python3

 `# Python3 program for the approach``import` `math` `# Function to find equation of a line whose``# distance from origin and angle made by the``# perpendicular from origin with x-axis is given``def` `findLine(distance, degree):` `    ``# Convert angle from degree to radian``    ``x ``=` `degree ``*` `3.14159` `/` `180`` ` `    ``# Handle the special case``    ``if` `(degree > ``90``):``        ``print``(``"Not Possible"``)``        ``return`` ` `    ``# Calculate the sin and cos of angle``    ``result_1 ``=` `math.sin(x)``    ``result_2 ``=` `math.cos(x)`` ` `    ``# Print the equation of the line``    ``print``(``'%.2f'` `%` `result_2,``          ``"x +"``, ``'%.2f'` `%` `result_1,``          ``"y = "``, distance, sep ``=` `"")` `# Driver code` `# Given Input``D ``=` `10``A ``=` `30` `# Function Call``findLine(D, A)` `# This code is contributed by mukesh07`

## C#

 `// C# program for the approach``using` `System;``class` `GFG``{``    ` `    ``// Function to find equation of a line whose``    ``// distance from origin and angle made by the``    ``// perpendicular from origin with x-axis is given``    ``static` `void` `findLine(``int` `distance, ``float` `degree)``    ``{``        ``// Convert angle from degree to radian``        ``float` `x = (``float``)(degree * 3.14159 / 180);``     ` `        ``// Handle the special case``        ``if` `(degree > 90) {``            ``Console.WriteLine(``"Not Possible"``);``            ``return``;``        ``}``     ` `        ``// Calculate the sin and cos of angle``        ``float` `result_1 = (``float``)(Math.Sin(x));``        ``float` `result_2 = (``float``)(Math.Cos(x));``     ` `        ``// Print the equation of the line``        ``Console.WriteLine(result_2.ToString(``"0.00"``) + ``"x +"``             ``+ result_1.ToString(``"0.00"``) + ``"y = "` `+ distance);``    ``}` `  ``static` `void` `Main ()``  ``{``    ``// Given Input``    ``int` `D = 10;``    ``float` `A = 30;`` ` `    ``// Function Call``    ``findLine(D, A);``  ``}``}` `// This code is contributed by suresh07.`

## Javascript

 ``
Output:
`0.87x +0.50y = 10`

Time Complexity: O(1)
Auxiliary Space: O(1)

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.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

My Personal Notes arrow_drop_up