【发布时间】:2021-07-20 19:35:43
【问题描述】:
我正在 python 中制作几何接口(目前使用 tkinter),但我偶然发现了一个主要问题:我需要一个能够返回一个点的函数,即与某个线段处于某个角度,是距角顶点一定长度。我们知道线段点的坐标,以及我们希望点的角度。我在下面附上了一张图片,以更直观地了解我的问题。 问题:我可以使用三角函数计算它,其中
x, y = vertex.getCoords()
endx = x + length * cos(radians(angle))
endy = y + length * sin(radians(angle))
p = Point(endx, endy)
我输入的角度以度为单位。只有当线段平行于横坐标时,该计算才成立。但是至少可以说,我得到的角度的大小非常奇怪。我希望该功能在 tkinter 画布上的前两个点的任何位置都能工作,无论角度是什么。我非常迷茫我应该做些什么来解决它。我发现了什么:我得到一个点作为输出,当它连接到顶点时,会形成一条与横坐标成所需角度的线。因此,当角度的第一个臂(腿,肩)平行于横坐标时,它起作用,然后函数完美运行(因为交叉角) - Z 形。一旦我让它不平行,它就会变得很奇怪。这是因为我们取的是顶点的 y,而不是垂直脚的位置(附图中的 C1)。我数学还算不错,欢迎多发一些技术性的解决方案,我会理解的
编辑:我只是想快速回顾一下我的问题:我应该如何构造一个与线段成一定角度的点。我已经制作了相对于 X 轴和 Y 轴创建角度的函数,但我不知道如何相对于输入的线创建角度。这两个函数的一些代码:
def inRespectToXAxis(vertex, angle, length):
x, y = vertex.getCoords()
newx = x + length * cos(radians(angle))
newy = y + length * sin(radians(angle))
p = Point(abs(newx), abs(newy))
return p
def inRespectToYAxis(vertex, length, angle):
x, y = vertex.getCoords()
theta_rad = pi / 2 - radians(angle)
newx = x + length * cos(radians(angle))
newy = y + length * sin(radians(angle))
p = Point(newx, newy)
return p
【问题讨论】: