資源簡介
雙圓弧樣條插值,直接通過兩個離散點及其切矢量,計算雙圓弧半徑及圓心,并作圖
代碼片段和文件信息
function?[R_1R_2]=double_circle_sample(xyt)
%測試點為x,y
%k:兩點連線的斜率
%angle:與x軸的夾角
%angle_zhuanhuan=arctan(k):坐標變換角度
????k=(y(1)-y(2))/(x(1)-x(2));
????angle_zhuanhuan=abs(atan(k));
????angle=[abs(atan(t(1)))abs(atan(t(2)))];
%坐標變換
????xx=[x(1)*cos(angle_zhuanhuan)+y(1)*sin(angle_zhuanhuan)x(2)*cos(angle_zhuanhuan)+y(2)*sin(angle_zhuanhuan)];
????yy=[x(1)*sin(angle_zhuanhuan)-y(1)*cos(angle_zhuanhuan)x(2)*sin(angle_zhuanhuan)-y(2)*cos(angle_zhuanhuan)];
????if?(k>0)
????????%if(t(2)>0)
????????????%angle=[(angle(1)-angle_zhuanhuan)(angle_zhuanhuan-angle(2))];
????????%end
????????%if(t(2)<0)
????????????angle=[(angle(1)-angle_zhuanhuan)(angle(2)+angle_zhuanhuan)];
????????%end
????elseif?(k==0)
????????disp(‘不存在圓弧‘);
????elseif?(k<0)
????????angle=[(angle(1)+angle_zhuanhuan)(angle(2)-angle_zhuanhuan)];
????end
%平移點1至原點
????pingyi=xx(1);
????xxx(1)=xx(1)-pingyi;
????xxx(2)=xx(2)-pingyi;
%兩點距離
????L=sqrt((xx(1)-xx(2))^2+(yy(1)-yy(2))^2);?
%定義fai
????fai=[abs(angle(1))abs(angle(2))];
%求兩圓半徑
????if?(fai(1)>fai(2))?%判定兩夾角的大小
????????R_1=(L)/(2*(sin((fai(1)+fai(2))/2))^2)*(sin(fai(2))-sin((fai(1)-fai(2))/2));??
????????R_2=(L-2*R_1*sin(fai(1)))/(2*sin((fai(1)-fai(2))/2));
????end
????if?(fai(1)
- 上一篇:基于DWT的數字水印算法的MatLab實現
- 下一篇:反距離加權插值
評論
共有 條評論