Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 计算三角形内的位置_Javascript_Algorithm - Fatal编程技术网

Javascript 计算三角形内的位置

Javascript 计算三角形内的位置,javascript,algorithm,Javascript,Algorithm,我正试图根据这张图片中的设计来可视化一些数据: 每个受试者都有一个分数(1-100)。我想中间的点表示学生(中间的点)擅长哪门学科 例如: 如果学生在科目1和科目2上的得分均为50%,在科目3上的得分均为100%,我希望圆点略微朝向科目3的角落,并完全居中于科目1和科目2之间,如下图所示: 任何关于如何做到这一点的建议,甚至是正确方向上的一点,都将不胜感激 将所有受试者的分数相加,然后将每个受试者的分数除以总分数,得到每个受试者的系数。然后将所有的主题点乘以它们各自的系数,求和得到你的中心点

我正试图根据这张图片中的设计来可视化一些数据:

每个受试者都有一个分数(1-100)。我想中间的点表示学生(中间的点)擅长哪门学科

例如: 如果学生在科目1和科目2上的得分均为50%,在科目3上的得分均为100%,我希望圆点略微朝向科目3的角落,并完全居中于科目1和科目2之间,如下图所示:


任何关于如何做到这一点的建议,甚至是正确方向上的一点,都将不胜感激

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

e、 g(非代码):

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


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

重心坐标在这里可能有用吗?这可能是有帮助的。一个小缺点是,例如,拥有(0%,%0,100%)技能的学生将被安置在与拥有(0%,0%,10%)技能的学生相同的位置。但是如果没有更多关于OP愿望的细节,就很难做得更好(+1)这正是我想要的!非常感谢你@达米恩:是的,没错。然而,我认为不可避免地会出现这样一种情况,即多组分数将映射到一个点,因为我们正在将一个三维空间映射到一个二维空间。三角形上的每个点对应于主体分数空间中的一条线,该线上有多组分数。
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)