2017-09-27 51 views
0

我有两条腿给出了三角形,在使用毕达哥拉斯算出第三条腿之后,我必须找到三角形的角度,以便能够使用海龟在Python中绘制三角形。计算具有三条腿的角三角形

我已经尝试了cosinus公式来找到角度,但它不工作。我没有得到想要的结果。

代码:

import math 
import turtle 

#Legs 
a = 70 
b = 60 

c_pwr = a**2 + b**2 
c = math.sqrt(c_pwr) 

print("Langste zijde is: ", c) 

#Angles 
A = math.acos((b**2 + c**2 - a**2)/(2 * b * c)) * 100 
B = math.acos((c**2 + a**2 - b**2)/(2 * c * a)) * 100 
C = 360 - A - B 

print(A, " ", B, " ", C) 

turtle.forward(a) 
turtle.right(B) 
turtle.forward(b) 
turtle.right(A) 
turtle.forward(c) 

input() 

什么我做错了,如何解决呢?谢谢!

+0

我假设它是一个直角三角形与边70和60? – SwiftsNamesake

+0

@SwiftsNamesake是的,这是正确的 –

+0

math.acos返回弧度值,它看起来像你用它们作为度。另外,三角形中只有180度。 –

回答

3

acos以弧度返回一侧,所以您必须将其转换为六十进制度数,因此您必须乘以180/π。我们也知道内角的总和是180,所以第三个角度是180-A-B

另一个问题是,必须传递到绘制,通过默认从右侧图向左前进到角度,则必须旋转180-A,预先C,旋转180-B和快进B

a = 70 
b = 60 

c_pwr = a**2 + b**2 
c = math.sqrt(c_pwr) 

print("Langste zijde is: ", c) 

#Angles 
A = math.acos((b**2 + c**2 - a**2)/(2 * b * c))*180/math.pi 
B = math.acos((c**2 + a**2 - b**2)/(2 * c * a))*180/math.pi 

C = 180 - A - B 

print(A, " ", B, " ", C) 

turtle.forward(a) 
turtle.right(180-B) 
turtle.forward(c) 
turtle.right(180-A) 
turtle.forward(b) 

输出:

enter image description here

2

我不知道为什么你不使用的定义

A = asin(a/c) 

(A是与a相反的角度)。我不明白你为什么乘以100。要将弧度转换为度数,您需要乘以180/π

最后,三角形中的角度总和为180而不是360。把它放在一起:

import math 

# Legs 
a = 70 
b = 60 
c = math.sqrt(a**2 + b**2) 

# Angles 
A = math.asin(a/c) * 180/math.pi 
B = math.asin(b/c) * 180/math.pi 
C = 180 - A - B