Wednesday, July 3, 2024
HomeData ModellingData Structure & AlgorithmCheck if it is possible to draw a straight line with the...

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 <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)

Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

Calisto Chipfumbu
Calisto Chipfumbuhttp://cchipfumbu@gmail.com
I have 5 years' worth of experience in the IT industry, primarily focused on Linux and Database administration. In those years, apart from learning significant technical knowledge, I also became comfortable working in a professional team and adapting to my environment, as I switched through 3 roles in that time.
RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments