如何从x、y、直线和Angular 构造点?

68bkxrlz  于 2021-07-13  发布在  Java
关注(0)|答案(0)|浏览(214)

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

x, y = vertex.getCoords()
    endx = x + length * cos(radians(angle))
    endy = y + length * sin(radians(angle))
    p = Point(endx, endy)

我输入的Angular 以度为单位。只有当线段与横坐标平行时,该计算才成立。但至少可以说,我得到的Angular 大小非常奇怪。我希望函数在tkinter画布上的任何地方都能工作,不管Angular 是什么。我不知道该怎么办才能把它修好。我发现:我得到一个点作为输出,当连接到顶点时,形成一条与横坐标成所需Angular 的线。因此,当Angular 的第一个手臂(腿、肩)平行于横坐标时,它就起作用了,然后这个功能就完美地运行了(因为交叉Angular 的缘故)——z形。一旦我让它不平行,它就会变得奇怪。这是因为我们取的是顶点的y,而不是垂直的脚落在的地方(在附加图像上是c1)。我很擅长数学,所以请随意发布一些技术解决方案,我会理解它们的
编辑:我只是想简单地回顾一下我的问题:我应该如何构造一个与线段成一定Angular 的点。我已经做了一些函数来创建x和y轴的Angular ,但是我不知道如何才能使它与输入的线相关。两个函数的一些代码:

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

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题