Вычисление положения внутри треугольника

Я пытаюсь визуализировать некоторые данные в соответствии с дизайном на этом рисунке:

Вычисление положения внутри треугольника

Каждый предмет имеет оценку (1-100). Я хочу, чтобы средняя точка указывала, по какому предмету учащийся (средняя точка) преуспевает.

Например: Если учащийся набрал 50 % по предмету 1 и по предмету 2 и 100 % по предмету 3, я хочу, чтобы точка была немного ближе к углу предмета 3 и находилась точно по центру между предметами 1 и 2, как на этом рисунке:

Вычисление положения внутри треугольника

Любые советы о том, как это сделать, или даже точка в правильном направлении, были бы очень признательны!

Здесь могут пригодиться барицентрические координаты? Это может быть полезно npmjs.com/package/barycentric

Dacre Denny 28.06.2019 01:51
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
1
95
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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)

Что вы делаете, так это вычисляете вес для каждого субъекта, где сумма весов равна 1, а затем находите средневзвешенное значение трех баллов. Эта конструкция называется Выпуклая комбинация (спасибо @MattTimmermans за ссылку в комментариях).

Один особый случай - это когда сумма баллов равна нулю, и в этом случае нет действительной точки (поскольку расчеты будут включать деление на ноль). В этом случае вы можете поставить точку точно в центр или просто не отображать точку, на ваше усмотрение.

Небольшим недостатком является то, что ученик с навыками (0%, %0, 100%), например, будет помещен на то же место, что и студент с навыками (0%, 0%, 10%). Но трудно сделать лучше без более подробной информации о пожеланиях ОП (+1)

Damien 28.06.2019 11:50

Это именно то, что я искал! Большое спасибо!

Koos 28.06.2019 14:39

@ Дэмиен Да, это правда. Однако я думаю, что неизбежна ситуация, когда более одного набора оценок будет отображаться в точку, потому что мы отображаем трехмерное пространство в двухмерное. Каждая точка треугольника соответствует линии в пространстве предметных оценок с множеством наборов оценок вдоль линии.

samgak 29.06.2019 02:15

Другие вопросы по теме