Как правильно нарисовать линию траектории от точки пересечения к центру шара? - PullRequest
0 голосов
/ 29 апреля 2019

В настоящее время я работаю с проектом траекторий снукера. Мне удалось вычислить формулу пересечения кия и шаров.

Я получаю линию для рисования в кадре изображения, но вместо ее рисования от первой точки пересечения (между ключевой линией и внешним кольцом шара) до центра шара, ее рисование наоборот, от центра шара до точки пересечения.

Итак, эта ситуация делает способ, которым мяч должен проецировать движение, неправильное.

Это формула, которую я делаю, когда пересечение происходит

else
{
    circleLineIntercept = true;
    cout << "intercept happen" << endl;
    float mu = (-b + sqrt(b*b - 4 * a*c)) / (2 * a);

    //The intersection points = (ix,iy)
        //This calculate for first intersection

    float ix1 = pt1.x + mu * (dx);
    float iy1 = pt1.y + mu * (dy);

        //This calculate for second intersection
    mu = (-b + sqrt(b*b - 4 * a*c)) / (2 * a);
    float ix2 = pt2.x + mu * (dx);
    float iy2 = pt2.y + mu * (dy);




Это в основном код для рисования детали ..

В основном я просто получаю точку пересечения и рисую ее в центре шара. Но то, что происходит, это наоборот, линия проходит от центра к перекрестку.


if (flag == true)
{
    Point intercept(intx, inty);
    Point first_point_intercept(ix1, iy1);
    Point second_point_intercept(ix2, iy2);              
    line(imgFrame,first_point_intercept,center, Scalar(255, 0, 255), 1,8);
}
...