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 = 10Input: D = 12, A = 45 degrees
Output: 0.71x +0.71y = 12
Approach: The given problem can be solved based on the following observations:
- 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.
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++ program for the approach #include <bits/stdc++.h> 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 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 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# 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. |
<script> // JavaScript program for the above approach
// Function to find equation of a line whose
// distance from origin and angle made by the
// perpendicular from origin with x-axis is given
function findLine(distance, degree) {
// Convert angle from degree to radian
let x = degree * 3.14159 / 180;
// Handle the special case
if (degree > 90) {
document.write( "Not Possible" );
return ;
}
// Calculate the sin and cos of angle
let result_1 = Math.sin(x);
let result_2 = Math.cos(x);
// Print the equation of the line
document.write(result_2.toPrecision(2) + "x + "
+ result_1.toPrecision(2) + "y = " + distance);
}
// Driver Code
// Given Input
let D = 10;
let A = 30;
// Function Call
findLine(D, A);
// This code is contributed by Hritik
</script> |
Output:
0.87x +0.50y = 10
Time Complexity: O(1)
Auxiliary Space: O(1)