尤拉角尤拉矩陣

2022-05-07 20:15:11 字數 3734 閱讀 7965

//計算旋轉角

double calculateangle(const eigen::vector3d &vectorbefore, const eigen::vector3d &vectorafter)

//計算旋轉軸

inline eigen::vector3d calculaterotaxis(const eigen::vector3d &vectorbefore, const eigen::vector3d &vectorafter)

//計算旋轉矩陣

void rotationmatrix(const eigen::vector3d &vectorbefore, const eigen::vector3d &vectorafter, eigen::matrix3d &rotmatrix)

cv::mat find_homography(template_data_h hole_data,string c_name,eigen::vector3d centerpoint,int type_plannormal,double & radius,point2d & circle_in_pc)/

eigen::vector3d planepoint_cad; //平面點

planepoint_cad << centerpoint[0]/1000.0, centerpoint[1] / 1000.0, centerpoint[2] / 1000.0;

//直線點:coor_dst1

//計算光軸與工件平面的交點

double vpt = optic_axis_vec[0]*planevecotr[0]+optic_axis_vec[1]*planevecotr[1]+optic_axis_vec[2]*planevecotr[2];

if(abs(vpt)<1e-08);

else

new_point_cad=;

}eigen::vector4d new_point_camera1 = extrinsic_matrix*(trans_cad*new_point_cad);//另外乙個點在camera1下的座標

eigen::vector3d new_axis=;

new_axis.normalize();

eigen::matrix3d r_matrix;

rotationmatrix(src_axis,new_axis,r_matrix);

eigen::vector3d t_matrix;

eigen::vector4d cirle_center_cad=;

auto c_c_camera1=extrinsic_matrix*(trans_cad * cirle_center_cad);

double dis=sqrt(c_c_camera1[0]*c_c_camera1[0]+c_c_camera1[1]*c_c_camera1[1]+c_c_camera1[2]*c_c_camera1[2]);

//cout<0)

new_point_cad=;

else

new_point_cad=;

}eigen::vector4d vector_d=extrinsic_matrix*(trans_cad*new_point_cad);//交點

eigen::vector3d v_pd = ;

eigen::vector3d v_pc = ;

t_matrix = v_pd-v_pc;

eigen::matrix4d rele_matrix;

rele_matrixintrex_prame<(0,0),intrinsic_matrix.at(0,1),intrinsic_matrix.at(0,2),0,

intrinsic_matrix.at(1,0),intrinsic_matrix.at(1,1),intrinsic_matrix.at(1,2),0,

intrinsic_matrix.at(2,0),intrinsic_matrix.at(2,1),intrinsic_matrix.at(2,2),0;

eigen::vector3d out=intrex_prame*gzr_p_camera1;//圓心點第1個cameraz

out[0]/=out[2];out[1]/=out[2];out[2]=1;

//rele_matix矩陣是目標位置到原始位置的相對矩陣

eigen::vector4d point1_in_cad=;

eigen::vector4d point1_in_camera=extrinsic_matrix*(trans_cad*point1_in_cad);

eigen::vector4d point2_in_cad;

if(type_plannormal==1) ;

}else;

}eigen::vector4d point2_in_camera=extrinsic_matrix*(trans_cad*point2_in_cad);

eigen::vector3d planenolmal=;//相機座標系下的法向

planenolmal.normalize();//平面在第乙個相機座標系的法向

eigen::vector4d temp_matrix=;//平面上隨機乙個點

temp_matrix=extrinsic_matrix*(trans_cad*temp_matrix);//得到在相機座標系點

double d = temp_matrix[0]*planenolmal[0]+temp_matrix[1]*planenolmal[1]+temp_matrix[2]*planenolmal[2];//平面的點法式確定,相機座標系下

cv::mat homography;

eigen::matrix4d new_matrix=rele_matrix.inverse();

r_matrix

new_matrix(2,0),new_matrix(2,1),new_matrix(2,2);

t_matrix

cv::eigen2cv(eigen_homo,homography);

homography = (intrinsic_matrix*homography)*(intrinsic_matrix.inv());

//生成圓

eigen::vector4d point_around[4];

if(type_plannormal==1) ;

point_around[1] = ;

point_around[2] = ;

point_around[3] = ;

}else;

point_around[1] = ;

point_around[2] = ;

point_around[3] = ;

}double total_radius=0;

double cen_x=intrex_prame(0,2);

double cen_y=intrex_prame(1,2);

circle_in_pc.x=cen_x;circle_in_pc.y=cen_y;

//cout

radius=total_radius/4;

return homography;

}

尤拉公式(尤拉公式)

尤拉公式 euler s formula,又稱尤拉公式 是在復分析領域的公式,將三角函式與複數指數函式相關聯,因其提出者萊昂哈德 尤拉而得名。尤拉公式提出,對任意實數 都存在 其中 是自然對數的底數,是虛數單位,而 和 則是余弦 正弦對應的三角函式,引數 則以弧度為單位。這一複數指數函式有時還寫作 ...

尤拉函式 尤拉定理

尤拉函式 對正整數 n,尤拉函式 是小於等於 n的數中與 n互質的數的數目 此函式以其首名研究者尤拉命名 euler so totientfunction 它又稱為 euler stotient function 函式 尤拉商數等。例如 8 4,因為 1,3,5,7均和8 互質。注 n為1時尤拉函式...

尤拉函式 尤拉定理

尤拉函式 設 n 為正整數,則 1,2,n 中與 n 互素的整數的個數計作 n 叫做尤拉函式。設 p 是素數,p p 1設 p 是素數,pa pa p a 1 設 p,q 是不同的素數,n q p,n p q 即 n p 1 q 1 設 m,n 是兩個正整數,且 m,n 1,若 n m n,n m ...