簡體   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