繁体   English   中英

基本三角函数无法在python中正常工作

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM