为了账号安全,请及时绑定邮箱和手机立即绑定

三角形多边形的最大中位数的有效方法

三角形多边形的最大中位数的有效方法

拉莫斯之舞 2022-08-02 16:04:10
目的我有一汤三角形多边形。我想检索每个三角形的最大中位数作为向量。工作状态起点:点数组 (n,3),例如 [x,y,z]引用上述点数组的三角形点索引数组 (n, 3),例如 [[0,1,2],[2,3,4]...]我将两个包含真实3D点坐标的单个矩阵组合在一起。然后我计算中位数向量及其长度。/编辑:我将代码更新为我的当前版本def calcMedians(polygon):    # C -> AB = C-(A + 0.5(B-A))    # B -> AC = B - (A + 0.5(C-A))    # A -> BC = A - (B    dim = np.shape(polygon)    medians = np.zeros((dim[0],3,2,dim[1]))    medians[:,0,0] = polygon[:,2]    medians[:,0,1] = polygon[:,0] + 0.5*(polygon[:,1]-polygon[:,0])     medians[:,1,0] = polygon[:,1]    medians[:,1,1] = polygon[:,0] + 0.5*(polygon[:,2]-polygon[:,0])    medians[:,2,0] = polygon[:,0]    medians[:,2,1] = polygon[:,1] + 0.5*(polygon[:,2]-polygon[:,1])    m1 = np.linalg.norm(medians[:,0,0]-medians[:,0,1],axis=1)    m2 = np.linalg.norm(medians[:,1,0]-medians[:,1,1],axis=1)    m3 = np.linalg.norm(medians[:,2,0]-medians[:,2,1],axis=1)    medianlengths = np.vstack((m1,m2,m3)).T    maxlengths = np.argmax(medianlengths,axis=1)    final = np.zeros((dim[0],2,dim[1]))    dim = np.shape(medians)    for i in range(0,dim[0]):        idx = maxlengths[i]        final[i] = medians[i,idx]    return final现在,我首先使用空矩阵创建最终的中值向量矩阵。长度使用np.linalg.norm计算并收集在矩阵中。对于此矩阵,argmax 方法用于识别目标中值向量。问题Old:但是,我对维度感到困惑,目前无法使其工作或了解结果是否正确。有人知道如何正确地做到这一点和/或这种方法是否有效?我的目标是以[n_polygons,3(由于3个中位数),2(起点和终点),3(xyz)]的形式构造3个中位数。使用最大长度信息,我想将其简化为[n_polygons,2(起点和终点),3(xyz)]在函数中使用这个临时的 for 循环,我可以创建输出。但是必须有一个更“干净”的矩阵方法。使用中位数[:,最大长度,:,:]会导致形状为[4,n_polygons,2,3]而不是[n_polygons,2,3],我不明白为什么。两个三角形的中位数的示例图像:不幸的是,我没有一个大型的示例性数据集,但我想这可以很快生成。上图中的示例数据集是:polygons = np.array([[0,1,2],[0,3,2]]) points = np.array([[0,0],           [1,0],           [1,1],           [0,1]]) polygons3d = points[polygons[:,:]]
查看完整描述

1 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

最长的中位数表示最短的三角形边。查看此处,将中位数长度公式重写为

M[i] = Sqrt(2(a^2+b^2+c^2)-3*side[i]^2) / 2

因此,您可以仅使用边长来简化计算(也许您已经拥有它们)

关于 3D 坐标 - 只需在不垂直于点平面的任何坐标平面上使用投影 - 忽略一个维度(选择具有最低值范围的维度)


查看完整回答
反对 回复 2022-08-02
  • 1 回答
  • 0 关注
  • 105 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号