Given three direction cosines l, m and n of a 3-D plane, the task is to check if it is possible to draw a straight line with them or not. Print Yes if possible else print No.
Examples:
Input: l = 0.258, m = 0.80, n = 0.23
Output: NoInput: l = 0.70710678, m = 0.5, n = 0.5
Output: Yes
Approach: If a straight line forms angle a with positive X-axis, angle b with positive Y-axis and angle c with positive Z-axis then its direction cosines are cos(a), cos(b) and cos(c).
For a straight line, cos2(a) + cos2(b) + cos2(c) = 1.
Below is the implementation of the above approach:
// C++ implementation of the approach #include <bits/stdc++.h> using namespace std;
// Function that returns true // if a straight line is possible bool isPossible( float x, float y, float z)
{ float a = x * x + y * y + z * z;
if ( ceil (a) == 1 && floor (a) == 1)
return true ;
return false ;
} // Driver code int main()
{ float l = 0.70710678, m = 0.5, n = 0.5;
if (isPossible(l, m, n))
cout << "Yes" ;
else
cout << "No" ;
return 0;
} |
// Java implementation of the approach import java.util.*;
class GFG
{ // Function that returns true // if a straight line is possible static boolean isPossible( float x, float y, float z)
{ float a = x * x + y * y + z * z;
if (Math.ceil(a) == 1 && Math.floor(a) == 1 )
return true ;
return false ;
} // Driver code public static void main(String args[])
{ float l = 0 .70710678f, m = 0 .5f, n = 0 .5f;
if (isPossible(l, m, n))
System.out.println( "Yes" );
else
System.out.println( "No" );
} } // This code is contributed by // Shashank_Sharma |
# Python3 implementation of the approach from math import ceil, floor
# Function that returns true # if a straight line is possible def isPossible(x, y, z) :
a = x * x + y * y + z * z
a = round (a, 8 )
if (ceil(a) = = 1 & floor(a) = = 1 ) :
return True
return False
# Driver code if __name__ = = "__main__" :
l = 0.70710678
m = 0.5
n = 0.5
if (isPossible(l, m, n)):
print ( "Yes" )
else :
print ( "No" )
# This code is contributed by Ryuga |
// C# implementation of the approach using System;
class GFG
{ // Function that returns true // if a straight line is possible static bool isPossible( float x, float y, float z)
{ float a = x * x + y * y + z * z;
if (Math.Ceiling(a) == 1 && Math.Floor(a) == 1)
return true ;
return false ;
} // Driver code public static void Main()
{ float l = 0.70710678f, m = 0.5f, n = 0.5f;
if (isPossible(l, m, n))
Console.WriteLine( "Yes" );
else
Console.WriteLine( "No" );
} } // This code is contributed by Ita_c. |
<?php // PHP implementation of the approach // Function that returns true // if a straight line is possible function isPossible( $x , $y , $z )
{ $a = round ( $x * $x + $y * $y + $z * $z );
if ( ceil ( $a ) == 1 && floor ( $a ) == 1)
return true;
return false;
} // Driver code $l = 0.70710678; $m = 0.5; $n = 0.5;
if (isPossible( $l , $m , $n ))
echo ( "Yes" );
else echo ( "No" );
// This code is contributed by mukul singh. |
<script> // Javascript implementation of the approach // Function that returns true // if a straight line is possible function isPossible(x,y,z)
{ let a = Math.round(x * x + y * y + z * z);
if (Math.ceil(a) == 1 && Math.floor(a) == 1)
return true ;
return false ;
} // Driver code let l = 0.70710678, m = 0.5, n = 0.5; if (isPossible(l, m, n))
document.write( "Yes" );
else document.write( "No" );
// This code is contributed by rag2127 </script> |
Yes
Time Complexity: O(1)
Auxiliary Space: O(1)