Check if it is possible to draw a straight line with the given direction cosines
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++
// 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
// 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
# 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#
// 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 // 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. |
Javascript
<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> |
Output:
Yes
Time Complexity: O(1)
Auxiliary Space: O(1)