Python 如何从x、y、直线和角度构造点?

Python 如何从x、y、直线和角度构造点?,python,geometry,angle,Python,Geometry,Angle,我正在用python制作一个几何接口(目前使用tkinter),但我偶然发现了一个主要问题:我需要一个函数,它能够返回一个点,即与某个线段成某个角度的点,距离该角度的顶点有某个长度。我们知道线段上各点的坐标,以及我们希望该点所处的角度。我在下面附上了一张图片,以便更直观地了解我的问题。 问题是:我可以用三角学来计算,其中 x,y=vertex.getCoords() endx=x+长度*cos(弧度(角度)) endy=y+长度*sin(弧度(角度)) p=点(端点,端点) 我输入的角度以度为

我正在用python制作一个几何接口(目前使用tkinter),但我偶然发现了一个主要问题:我需要一个函数,它能够返回一个点,即与某个线段成某个角度的点,距离该角度的顶点有某个长度。我们知道线段上各点的坐标,以及我们希望该点所处的角度。我在下面附上了一张图片,以便更直观地了解我的问题。 问题是:我可以用三角学来计算,其中

x,y=vertex.getCoords()
endx=x+长度*cos(弧度(角度))
endy=y+长度*sin(弧度(角度))
p=点(端点,端点)
我输入的角度以度为单位。只有当线段与横坐标平行时,该计算才成立。但至少可以说,我得到的角度大小非常奇怪。我希望函数在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

似乎您希望添加线段角度以获得正确的结果。您可以使用段端坐标
(x1,y1)
(x2,y2)

结果以弧度为单位,因此应用它作为

endx = x1 + length * cos(radians(angle) + lineAngle) etc

非常感谢你,互联网上善良的人!这正是我要找的!我确实知道发生了什么,所以我能够(某种程度上)形成我的问题,但我不知道我实际上在寻找什么。我曾考虑过线的角度,但我没有这样做,我放弃了这个想法。再次感谢。通过我的研究,我发现有很多像我这样的人不希望他们的函数只对轴起作用,所以如果你想,你也可以给他们贴一些答案,或者,当然,我可以这样做。
endx = x1 + length * cos(radians(angle) + lineAngle) etc