2010-07-08 2 views
0

может ли кто-нибудь объяснить мне логику этого кода?логика позади кода

pt1.x = cvRound(x0 + 1000*(-b)); 
    pt1.y = cvRound(y0 + 1000*(a)); 
    pt2.x = cvRound(x0 - 1000*(-b)); 
    pt2.y = cvRound(y0 - 1000*(a)); 
+3

Если вы отформатируете код как код, мы сможем вам помочь. Выясните, что представляют собой маленькие значки над текстовым полем на страницах вопросов и ответов, они обогатят вашу жизнь на SO. –

ответ

1

Похоже a и b пороговые значения, которые используются для перемещения pt1 в одном направлении (внутрь или наружу) и pt2 в противоположном направлении.

Возможно, они используются для увеличения/уменьшения площади прямоугольника для проверки границ?

+0

они изменили его на декартово, а затем y добавили * 1000, что-то вроде этого, строки для (i = 0; i < MIN(lines-> всего, 100); i ++) { float * line = (float *) cvGetSeqElem (lines, i); float rho = строка [0]; float theta = line [1]; CvPoint pt1, pt2; double a = cos (theta), b = sin (theta); double x0 = a * rho, y0 = b * rho; pt1.x = cvRound (x0 + 1000 * (- b)); pt1.y = cvRound (y0 + 1000 * (a)); pt2.x = cvRound (x0 - 1000 * (- b)); pt2.y = cvRound (y0 - 1000 * (a)); } – paddu

2

У вас есть точка, определенная x0, y0. Теперь вы создаете два других точечных объекта: один на (-b*1000, a*1000) и один на (b*1000, -a*1000) относительно исходной точки. Предположительно, 1000 предназначен для решения проблем масштаба, поскольку значения a и b находятся в другом масштабе, чем точки x0, y0.

+0

привет спасибо, из-за строкового кода opencv, вы могли бы объяснить мне ясно – paddu

+0

они изменили его на декартово, а затем y добавили * 1000, что-то вроде этого, строки для (i = 0; i < MIN(lines-> всего, 100); i ++) {float * line = (float *) cvGetSeqElem (строки, i); float rho = строка [0]; float theta = line [1]; CvPoint pt1, pt2; double a = cos (theta), b = sin (theta); double x0 = a * rho, y0 = b * rho; pt1.x = cvRound (x0 + 1000 * (- b)); pt1.y = cvRound (y0 + 1000 * (a)); pt2.x = cvRound (x0 - 1000 * (- b)); pt2.y = cvRound (y0 - 1000 * (a)); } – paddu

+0

, пожалуйста, помогите мне в расширении логики кода. – paddu

 Смежные вопросы

  • Нет связанных вопросов^_^