Странные узоры после рисования отраженного объекта

Скриншот

Эй, я хотел бы отразить треугольник над линией симметрии, параллельной одной из сторон, используя только точечные координаты и Mat::at() в OpenCV. Поэтому я просто отражаю Point2d P над линией, состоящей из вершин треугольника P1, P2.

Проблема в том, что я получаю некоторые странные паттерны и не могу от них избавиться. Я использовал удвоения для повышения точности, но это не помогло.

Есть идеи?

if(P1.x-P2.x) //P1P2 is not vertical
{
double a=((P2.y-P1.y)/static_cast<double>(P2.x-P1.x));
double b=P1.y-a*P1.x;    //symmetry line y=ax+b
double a1=0,b1=0;
if(a)
{
a1=-1/a; // y=a1x+b1 perpendicular to y=ax+b
b1=P.y-a1*P.x;
double xc=(b1-b)/(a-a1); // ax+b=a1x+b1
P.x= 2*xc-P.x;
P.y=a1*P.x+b1;
}
else    //P1P2 is horizontal
{
P.y=2.0*P1.y-P.y;

}
}
else  //P1P2 is vertical
{

P.x=2*P1.x-P.x;
}

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]