# 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

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

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

 `

Output:

```Yes
```

My Personal Notes arrow_drop_up

Article Tags :
Practice Tags :

Be the First to upvote.

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.