# 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: No

Input: 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 ` `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

 `

## Javascript

 ``

Output:

`Yes`

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