Class 2 – Find the Torsional Angle in Python – HackerRank Solution

Class 2 Find the Torsional Angle in Python Hacker Rank Solution
Class 2 – Find the Torsional Angle in Python – HackerRank Solution

You are given four points A, B, c and D in a 3-dimensional Cartesian coordinate system. You are required to print the angle between the plane made by the points A, B, C and B, C, D in degrees(not radians). Let the angle be PHI.
Cos(PHI) = (X*Y) / |X| |Y| where X = ABxBC and Y = BC x CD.Here, X.Y means the dot product of X and Y, and ABxBC means the cross product of vectors and . Also, AB = B – A.


Input Format :

One line of input containing the space separated floating number values of the X,Y and Z coordinates of a point.

Output Format :

Output the angle correct up to two decimal places.


Sample Input :

0 4 5
1 7 6
0 5 9
1 7 2

Sample Output :

8.19


Class 2 – Find the Torsional Angle in Python – HackerRank Solution

import math
class Points(object):
# Class 2 - Find the Torsional Angle in Python - HackerRank Solution START
    def __init__(self, x, y, z):
        self.x = x
        self.y = y
        self.z = z
    def __sub__(self, no):
        x = self.x - no.x
        y = self.y - no.y
        z = self.z - no.z
        return Points(x, y, z)
    def dot(self, no):
        x = self.x * no.x
        y = self.y * no.y
        z = self.z * no.z
        return x + y + z
    def cross(self, no):
        x = self.y * no.z - self.z * no.y
        y = self.z * no.x - self.x * no.z
        z = self.x * no.y - self.y * no.x
        return Points(x, y, z)
# Class 2 - Find the Torsional Angle in Python - HackerRank Solution END
    def absolute(self):
        return pow((self.x ** 2 + self.y ** 2 + self.z ** 2), 0.5)
if __name__ == '__main__':
    points = list()
    for i in range(4):
        a = list(map(float, input().split()))
        points.append(a)
    a, b, c, d = Points(*points[0]), Points(*points[1]), Points(*points[2]), Points(*points[3])
    x = (b - a).cross(c - b)
    y = (c - b).cross(d - c)
    angle = math.acos(x.dot(y) / (x.absolute() * y.absolute()))
    print("%.2f" % math.degrees(angle))

Disclaimer: The above Problem (Class 2 – Find the Torsional Angle in Python) is generated by Hackerrank but the Solution is Provided by Chase2Learn. This tutorial is only for Educational and Learning purposes. Authority if any of the queries regarding this post or website fill the following contact form thank you.

Leave a Comment