计算三角形内的位置

时间:2019-06-27 23:49:14

标签: javascript algorithm

我试图按照这张图片的设计形象化一些数据:

enter image description here

每个受试者的得分为(1-100)。我希望中间的点表示学生(中间的点)擅长的科目。

例如: 如果学生在科目1和科目2上都获得50%的成绩,而科目3则得到100%,我希望该点稍微靠近科目3的角,并完美地位于科目1和2之间,如图所示:

enter image description here

任何有关此操作的建议,甚至是正确方向的建议,都将不胜感激!

1 个答案:

答案 0 :(得分:6)

对所有主题的分数求和,然后将每个主题的分数除以总和,得出每个主题的系数。然后将所有主题点乘以它们各自的系数,然后相加得出中心点。

例如(非代码):

subject1: 50%
subject2: 50%
subject3: 100%

total: 200

subject1 co-eff: 50 / 200 = 0.25
subject2 co-eff: 50 / 200 = 0.25
subject3 co-eff: 100 / 200 = 0.5

centralpoint.x = (point1.x * 0.25) + (point2.x * 0.25) + (point3.x * 0.5)
centralpoint.y = (point1.y * 0.25) + (point2.y * 0.25) + (point3.y * 0.5)

您正在做的是为每个主题计算权重,其中权重之和为1,然后找到这三个点的加权平均值。这种构造称为Convex combination(感谢@MattTimmermans在评论中提供链接)。

一种特殊情况是,分数总和为零,在这种情况下,没有有效分数(因为计算涉及除以零)。在这种情况下,您可以将点放在精确的中心,或者只显示不显示任何点。