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

Basic trigonometry isn't working correctly in python

为了了解一些背景知识,this is the game 我正在尝试以等距样式进行绘制。

我只是想得到正确的计算而不是用一种 hacky 的方式来计算,但是有一部分不工作,我不太确定另一部分(我会把它留到另一个问题稍后)。

所以,忘记中间的小方块,棋盘由 n 个 lenels 组成。我希望能够计算这些的坐标,以便我可以对它们进行进一步的计算,但是三角函数不起作用,据我所知(请记住我上次这样做是几年前),它应该是。

这是绘制第一个正方形的简单代码:

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

希望对您有所帮助。