繁体   English   中英

如何从JavaScript中任意角度的两点找到等边三角形的第三点?

[英]How to find 3rd point of equilateral triangle from two points at any angle in JavaScript?

我有一个等边三角形的两个点,如何计算第三个点?

我有这个插图:

以点为顶点的六边形图

我想在每条边上画三角形,所以我需要第 3 个点。

对于等边三角形的特定情况,一种更简单的方法。 幻数是sqrt(3)/2=cos(60) ,所以表达式等同于你的。

function third(p1, p2) {
    const x = (p1.x + p2.x)/2 - 0.8660254 * (p1.y - p2.y);
    const y = (p1.y + p2.y)/2 + 0.8660254 * (p1.x - p2.x);
    return { x, y };
}

(也许应该交换 0.866 之前的 +/- 以获得顶点所需的边)

您可以使用三角学中的已知方程将等边三角形旋转 60 度,从而计算出第 3 个点。 所以这也是关于如何将一点旋转另一点的答案。 它之所以为人所知,是因为它是您在高中解析几何 class 中学过的东西:

该代码使用 JavaScript,我在这里回答是因为我无法找到答案。

function deg2rad(deg) {
    return deg * Math.PI / 180;
}

function rotate(p1, p2, angle) {
    const a = deg2rad(angle);
    const x = (p1.x - p2.x) * Math.cos(a) - (p1.y - p2.y) * Math.sin(a) + p2.x;
    const y = (p1.x - p2.x) * Math.sin(a) + (p1.y - p2.y) * Math.cos(a) + p2.y;
    return { x, y };
}

const point_c = rotate(point_a, point_b, 60);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM