Как я могу получить измерение угла между 2 -й нарисованной линией пользователя независимо от направленияJavascript

Форум по Javascript
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу получить измерение угла между 2 -й нарисованной линией пользователя независимо от направления

Сообщение Anonymous »

Я мучительно из -за этого и не могу понять это. Не буду лгать, я довольно новичок в программировании, и ИИ написал большую часть этой программы. Я пытаюсь измерить угол между наборами линий пользователя для оценки ERGO. Цель состоит в том, чтобы измерить угол между ключевыми точками тела, такими как позвоночник, верхняя нога, нижняя рука и т. Д., По отношению к другим линиям. Пользователь сфотографирует человека, а затем проследит линии по их телу, и он сделает некоторую математику и даст им счет. Все строки будут нарисованы пользователем, и каждая строка имеет определенную эталонную строку, которую он использует. Теперь я могу заставить его работать, но только если линия нарисована определенным образом. Но у меня есть чувства, которые пользователи не будут читать инструкции и сломать приложение, и они получат неточную оценку, что было бы плохо. Число, которое я получаю, не является неверным, если сказать, просто неправильная часть измерения, если это сделано с тех пор (бесплатные углы и т. Д.). 60 градусов. Но если я нарисую одну или обе строки «неправильно» или нет, как я запрограммировал; Я мог бы получить 130 градусов, -60 или -130 градусов. Оценка строгая из -за того, какое измерение он ищет. Допустим, любой угол выше 50 градусов дает вам значение 1 ниже 50, значение 0. Это измерение выше 50 градусов, но программа записей -130 градусов, так что теперь оно неточно. И это проблема безопасности. В коде ниже этого показано угол багажника, позвоночник и угол шеи (который ссылается на туловище). С человеком, стоящим прямо вверх, угол багажника будет нулевым, любое прямое изгиб является положительным углом, а обратное изгиб - отрицательный угол. Вот почему у меня есть пользователь ответить, будь то субъект вперед или нет, я знаю, что я знаю. Шея ссылается на ствол и то же самое применяется; вперед = + и назад = -. < /p>

Код: Выделить всё

function calculateAngle(point1, point2, toolType) {
// Create vector from point1 to point2 (in the order user drew them)
const vector = {
x: point2.x - point1.x,
y: point2.y - point1.y
};

// For trunk angle (reference is vertical)
if (toolType === 'trunk') {
// Calculate trunk's absolute angle from vertical
const trunkAngle = Math.atan2(vector.x, vector.y) * (180 / Math.PI);

// We need to measure from North position (use complementary angle)
let northAngle = 180 - Math.abs(trunkAngle);

// Preserve original sign for direction
if (trunkAngle < 0) northAngle = -northAngle;

// Adjust based on subject facing direction
if (subjectFacingDirection === 'right') {
return northAngle;
} else { // 'left'
return -northAngle;
}
}

// For neck angle
if (toolType === 'neck') {
const trunkPoints = lines['trunk'];
if (!trunkPoints || trunkPoints.length < 2) {
console.error("Trunk must be drawn before neck");
return 0;
}

// Trunk vector from tailbone to neck
const trunkVector = {
x: trunkPoints[1].x - trunkPoints[0].x,
y: trunkPoints[1].y - trunkPoints[0].y
};

// Calculate dot product
const dotProduct = vector.x * trunkVector.x + vector.y * trunkVector.y;

// Calculate magnitudes
const vectorMag = Math.sqrt(vector.x * vector.x + vector.y * vector.y);
const trunkMag = Math.sqrt(trunkVector.x * trunkVector.x + trunkVector.y * trunkVector.y);

// Calculate angle between vectors (0-180 degrees)
let angle = Math.acos(dotProduct / (vectorMag * trunkMag)) * (180 / Math.PI);

// Use cross product to determine direction
const crossProduct = trunkVector.x * vector.y - trunkVector.y * vector.x;

if (subjectFacingDirection === 'right') {
angle = crossProduct < 0 ? angle : -angle;
} else { // 'left'
angle = crossProduct > 0 ? angle : -angle;
}

return -angle; // Negate the angle
}
Итак, как я могу убедиться, что я могу получить правильный номер угла независимо от порядка, в котором сделаны точки или как нарисована линия.

Подробнее здесь: https://stackoverflow.com/questions/796 ... s-of-direc
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Моя программа изначально отображает красную панель с нарисованной на ней линией. Добавление строки, задающей переменную
    Anonymous » » в форуме JAVA
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Моя программа изначально отображает красную панель с нарисованной на ней линией. Добавление строки, назначающей переменн
    Anonymous » » в форуме JAVA
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Измерение угла кривой проволоки с помощью OpenCV
    Anonymous » » в форуме Python
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Измерение угла кривой проволоки с помощью OpenCV
    Anonymous » » в форуме Python
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Измерение угла кривой проволоки с помощью OpenCV
    Anonymous » » в форуме Python
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Javascript»