如何在javascript中获取等边三角形边上的一组点的坐标?

How to get coordinates of a set of points on the sides of equilateral triangle in javascript?

提问人:Tomas Javurek 提问时间:10/17/2023 最后编辑:Tomas Javurek 更新时间:10/17/2023 访问量:72

问:

points on the triangle

我有一个等边三角形。我知道中心(S)、所有顶点(A、B、C)的坐标和圆半径(r)的长度。如何获得位于三角形边 (a) 的可变点数 [X1, X2, X3, ...] 的坐标均匀分布(例如,彼此之间的距离相同)?有没有公式?

JavaScript 数学 几何

评论

2赞 CBroe 10/17/2023
不太清楚你在问什么。“任何点的坐标”——意思是,所有所有可能的?那将是一个不确定的数字......
0赞 Konrad 10/17/2023
这取决于如何定义这些点
0赞 Tomas Javurek 10/17/2023
为了更清楚,我需要该点的确切数量(例如 8)。该点必须均匀分布在三角形周围。
0赞 Keith 10/17/2023
还是不清楚,之后就更清楚了。目前甚至不确定这个圈子与任何事情有什么关系?,你的意思是 4 * 2。,但您的图像没有显示这一点。困惑。。!!!(现在脑子疼了)..:)(eg. 8)evenly distributed
1赞 Simon Goater 10/18/2023
如果你有两条不平行的直线(二维)的方程,那么你可以通过求解联立方程组来找到它们相交的位置,在这种情况下,你可以通过反转一个 2x2 矩阵来做到这一点。

答:

1赞 Konrad 10/17/2023 #1

您可以使用向量来做到这一点

// calculating A, B, C, you can ignore that part
const a = 1
const h = a * Math.sqrt(3) / 2
const R =  2 / 3 * h
const A = { x: 0, y: R }
const B = { x: -a / 2, y: h / 3 }
const C = { x: a / 2, y: h / 3 }

console.log('A=', A, 'B=', B, 'C=', C)

// number of points on each side
const parts = 3
const sides = [[A, B], [B, C], [C, A]]
const points = []
for (const [f, s] of sides) {
  // for each side calculate a vector (e.g. A -> B)
  const v = { x: s.x - f.x, y: s.y - f.y }
  for (let i = 1; i <= parts; i += 1) {
    // calculate position of each points
    // e.g. (A + ABvector * 1/3)
    const p = { x: f.x + v.x / parts * i, y: f.y + v.y / parts / i }
    points.push(p)
  }
}
console.log('points=', points)