[英]Basic trigonometry isn't working correctly in python
我只是想获得正确的计算结果,而不是用笨拙的方式进行计算,但是其中一部分无法正常工作,并且我对另一部分不太确定(我稍后将其保存用于另一个问题) 。
因此,忘记了它们之间的小方块,该电路板由n
透镜组成。 我希望能够计算这些坐标,以便可以对它们进行进一步的计算,但是触发操作不起作用,据我所知(记住,我上次这样做是在多年前)应该。
这是绘制第一个正方形的简单代码:
import turtle
import math
iso_angle = 20
grid_length = 100
turtle.right(iso_angle)
turtle.forward(grid_length)
turtle.right(180 - iso_angle * 2)
turtle.forward(grid_length)
turtle.right(iso_angle * 2)
turtle.forward(grid_length)
turtle.right(180 - iso_angle * 2)
turtle.forward(grid_length)
使用sohcahtoa,我认为我可以计算所得正方形的宽度和高度,因为它实际上由4个三角形组成,并且我可以将其中一个三角形的高度加倍。
#s = o / h
#sin(iso_angle) = o / grid_length
#o = sin(iso_angle) * grid_length
height = 2 * sin(iso_angle) * grid_length
width = 2 * cos(iso_angle) * grid_length
但是,当我按height
向下移动乌龟时,它不会落在正方形的边缘上。 它甚至不会以边缘距离的倍数移动,它似乎最终会出现一些随机距离。 用宽度交换也不起作用。
我在哪里错呢?
如评论中所述,您需要转换为弧度,可以使用
math.radians()
功能。 所以在实践中,您会得到类似
height = 2 * sin(math.radians(iso_angle)) * grid_length
width = 2 * cos(math.radians(iso_angle)) * grid_length
光标模块(乌龟)以度为单位的角度。
sin()和cos()数学函数采用弧度表示的角度。 您必须将它们转换。 幸运的是,Python在math模块中包括方便的功能:
height = 2 * sin(radians(iso_angle)) * grid_length
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.