Пересечение двух строк определяется в (ро/тете) параметризацию

Вам нужно иметь> 50 панорам с расстоянием < 5 м между двумя подключенными панорамами. Через несколько дней (недель?) Google преобразует их в синюю строку на отдельном этапе обработки.

12
задан erisu 20 December 2008 в 17:02
поделиться

2 ответа

Смотря на страницу Wikipedia, я вижу, что уравнение прямой линии, соответствующей данному данному r, θ пара,

r = x cosθ + y sinθ 

Таким образом, если я понимаю, учитывая двух пар r1, θ1 и r2, θ2, для нахождения пересечения необходимо решить для неизвестных x, y следующее линейное 2x2 система:

x cos θ1 + y sin θ1 = r1
x cos θ2 + y sin θ2 = r2

это - AX = b, где

A = [cos θ1  sin θ1]   b = |r1|   X = |x|
    [cos θ2  sin θ2]       |r2|       |y|
18
ответ дан 2 December 2019 в 05:28
поделиться

Никогда не встречался с матричной математикой прежде, поэтому взял немного исследования и экспериментирования для разработки процедуры ответа Fredrico. Спасибо, должен был узнать о матрицах так или иначе. ^^

функционируйте для нахождения, где две параметризованных строки пересекаются:

//Find point (x,y) where two parameterized lines intersect :p Returns 0 if lines are parallel 
int parametricIntersect(float r1, float t1, float r2, float t2, int *x, int *y) {
    float ct1=cosf(t1);     //matrix element a
    float st1=sinf(t1);     //b
    float ct2=cosf(t2);     //c
    float st2=sinf(t2);     //d
    float d=ct1*st2-st1*ct2;        //determinative (rearranged matrix for inverse)
    if(d!=0.0f) {   
            *x=(int)((st2*r1-st1*r2)/d);
            *y=(int)((-ct2*r1+ct1*r2)/d);
            return(1);
    } else { //lines are parallel and will NEVER intersect!
            return(0);
    }
}
10
ответ дан 2 December 2019 в 05:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: