【问题标题】:Calculate point, from point, at given angle计算点,从点,在给定的角度
【发布时间】:2020-12-11 19:03:44
【问题描述】:

我正在尝试使用 svg 和 JavaScript 创建“墙”。我需要根据配置的值加厚墙壁,并以给定的角度适当地斜接角落。下图描述了这一点。

我的应用程序的 svg 编辑器部分允许我绘制第 1 行和第 2 行(蓝色),并以不同的角度连接它们的端点。下图显示了一个 90 度的角度,但角度是用户根据绘制的线定义的,所以它可以是任何东西。

我已经能够通过数学计算确定一个中心点,它允许我平分用户定义的角度并创建一条斜接线,如下所示,它是一条具有端点 d 和 c 的线。根据我的计算,我知道四个绿点和绿角,以及第 1 行和第 3 行之间的已知且可配置的距离(此处未定义,但假设它为 5 个 svg 单位),顺便说一句,这将始终是平行的。

在此示例中,新墙由第 1 行(墙的内部)、第 3 行(墙的外部)和连接第 1 行和第 3 行的斜接线组成。我假设答案位于第 1 行和第 3 行之间的距离以及平分线的角度(端点 d 和 c),但我无法确定数学。

我如何找到 x?

有没有更简单的方法来解决这个问题,或者我对三角的了解比我想象的还要少(顺便说一句,我知道的很少)。提前致谢。

【问题讨论】:

    标签: javascript svg geometry trigonometry


    【解决方案1】:

    毕达哥拉斯:A**2 + B**2 = C**2 - 意思是(5 svg 平方)+(5 svg 平方)=(C -> X)平方。这为您提供了与 C->X 的距离,并且您已经有了绿色角度。

    您必须决定要精确到多少(小数位数)。

    说从第 1 行到第 3 行的距离 == 5;

    const A = 5;
    
    const length = Math.sqrt((A * A) + (A * A));
    
    console.log(length);

    从 C -> X 延伸斜接线:

    • 从 C 线以 1 号线绿色角度的 1/2 处绘制计算长度。

    绿色角度的一半,因为 D 和线 1 之间的假想线与线 1 和线 3(以及延伸的 X 的交点)成直角。

    【讨论】:

    • 嘿兰迪,感谢您的快速回复。考虑到毕达哥拉斯因素,我想我正在关注,因为无论第 1 行和第 2 行之间的角度如何,我从 C 点一直到第 3 行的角度始终是直角。对吗?如果是这种情况,唯一突出的变量是角度 - 但我没有看到计算中提到的那个。线 C > X 的角度如何计算到达点 x?
    • @ErikR099 - 请查看我的更新答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-27
    • 1970-01-01
    • 2023-03-10
    • 2014-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多