//計算旋轉角
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 ...