Class 2 - Find the Torsional Angle in Python - HackerRank Solution
Problem :
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
Solution :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | # Class 2 - Find the Torsional Angle in Python - HackerRank Solution # Python 3 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 hole problem statement is given by hackerrank.com but the solution is generated by the codeworld19 authority if any of the query regarding this post or website fill the following contact form thank you.
Thanks for answer
Hi, Thank you for this informative blog, I have just started to learn python course and this blog is really informative for me. Thank you for this blog!