![](/img/trans.png)
[英]How do I find the slope (m) for a line given a point (x,y) on the line and the line's angle from the y axis in python?
[英]How do I construct a point from x,y, line and angle?
我正在 python 中制作几何接口(当前使用 tkinter),但我偶然发现了一个主要问题:我需要一个能够返回一个点的 function除了角的顶点。 我们知道线段点的坐标,以及我们希望点的角度。 我在下面附上了一张图片,以更直观地了解我的问题。 问题:我可以使用三角函数计算它,其中
x, y = vertex.getCoords()
endx = x + length * cos(radians(angle))
endy = y + length * sin(radians(angle))
p = Point(endx, endy)
我输入的角度以度为单位。 只有当线段平行于横坐标时,该计算才成立。 但是至少可以说,我得到的角度的大小非常奇怪。 我希望 function 能够在 tkinter canvas 上的前两点上工作,无论角度如何。 我非常迷茫我应该做些什么来解决它。 我发现了什么:我得到了 output 一个点,当它连接到顶点时,会形成一条与横坐标成所需角度的线。 因此,当角度的第一个臂(腿,肩)平行于横坐标时它起作用,然后 function 完美运行(因为交叉角) - 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
似乎您想添加线段角度以获得正确的结果。 您可以使用线段末端坐标(x1,y1)
和(x2,y2)
来计算它
lineAngle = math.atan2(y2 - y1, x2 - x1)
结果以弧度为单位,因此将其应用为
endx = x1 + length * cos(radians(angle) + lineAngle) etc
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.