You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编写Python函数根据两个numpy数组点求等边三角形第三个顶点

等边三角形顶点计算实现方案

原理说明

  • 平面内给定两个顶点,等边三角形的第三个顶点存在两个合法解,分别在两点连线的两侧,以下实现默认返回连线逆时针侧的结果,需要另一侧可修改对应旋转/偏移参数。
  • 实现支持numpy向量化操作,可直接适配任意长度的输入数组,无需循环逐点计算。

实现代码

版本1:输入为复数形式的一维点数组(匹配你描述的shape(N,)输入输出要求)

如果你的x、y数组元素为复数,每个复数代表平面上的一个点,可直接使用该版本:

import numpy as np

def equilateral(x: np.ndarray, y: np.ndarray) -> np.ndarray:
    assert x.shape == y.shape and x.ndim == 1, "x和y必须为shape(N,)的一维数组"
    # 逆时针旋转60度的复数因子,需要另一侧结果替换为 0.5 - 1j * np.sqrt(3)/2
    rot_factor = 0.5 + 1j * np.sqrt(3) / 2
    return (y - x) * rot_factor + x

调用示例:

x = np.array([0+0j, 1+0j])
y = np.array([1+0j, 2+1j])
z = equilateral(x, y)
# 输出z为[0.5+0.8660254j, 0.6339746+1.3660254j],shape为(2,)

版本2:输入为二维点坐标数组

如果你的输入是两组二维点,每组N个点,点集数组shape为(N,2),可使用该版本:

import numpy as np

def equilateral(p1: np.ndarray, p2: np.ndarray) -> np.ndarray:
    assert p1.shape == p2.shape and p1.shape[-1] == 2, "输入点集shape必须为(N,2)"
    dx = p2[..., 0] - p1[..., 0]
    dy = p2[..., 1] - p1[..., 1]
    # 需要另一侧结果可把加减符号互换
    zx = (p1[..., 0] + p2[..., 0]) / 2 - dy * np.sqrt(3) / 2
    zy = (p1[..., 1] + p2[..., 1]) / 2 + dx * np.sqrt(3) / 2
    return np.stack([zx, zy], axis=-1)

内容的提问来源于stack exchange,提问作者Richard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 08:45:04