基本三角函数在 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
希望对您有所帮助。
为了了解一些背景知识,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
希望对您有所帮助。