声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1186|回复: 4

[综合讨论] 请教:我把一个曲线旋转后,怎么Z轴有部分坐标成了虚数了呢,不知道为什么!

[复制链接]
发表于 2008-9-4 07:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
请教:我把一个曲线旋转后,再用一个圆去截了一下,怎么Z轴有部分坐标成了虚数了呢,不知道为什么!这是我复制的部份数据,只在xia.xls中最后才有几个Z轴的数为虚数:
3.7405;0.16834;0.22081               
3.7597;-0.16834;0.12211               
3.7597;-0.056112;0.20025               
3.7597;0.056112;0.20025               
3.7597;0.16834;0.12211               
3.7789;-0.056112;0.12658               
3.7789;0.056112;0.12658               
3.7981;-0.056112;0.040388               
3.7981;0.056112;0.040388               
3.8173;-28;0-28i               
3.8173;-27.888;0-27.888i               
3.8173;-27.776;0-27.776i               
3.8173;-27.663;0-27.663i               
3.8173;-27.551;0-27.551i               
3.8173;-27.439;0-27.439i               
3.8173;-27.327;0-27.327i               
3.8173;-27.214;0-27.214i               
3.8173;-27.102;0-27.102i               
3.8173;-26.99;0-26.99i               
3.8173;-26.878;0-26.878i               
3.8173;-26.766;0-26.766i               
3.8173;-26.653;0-26.653i               
3.8173;-26.541;0-26.541i               
3.8173;-26.429;0-26.429i               
3.8173;-26.317;0-26.317i               
3.8173;-26.204;0-26.204i               
代码如下:c1=input('请输入A区大半径532/c1时的较小的c1值,赋值到c1:');
if (c1<1)|(c1>6),break;end
c2=input('请输入C区小半径532/c2时的较大的c2值,赋值到c2:');
if (c2<1)|(c2>6),break;end
m=input('请输入最下面C区圆弧口径,范围是25到35,赋值到m:');
if (m<25)|(m>35),break;end
n=input('请输入B区过渡区域口径,范围是10到16,赋值到n:');
if (n<10)|(n>16),break;end
a=523./c1;
b=523./c2;
d=b-sqrt(b.^2-(-m).^2);
x1=linspace(0,d,200);
y1=linspace(-m,m,500);
[x11,y11]=meshgrid(x1,y1);
z11=sqrt((m-sqrt(2.*b.*x11-x11.^2)).^2-y11.^2);
ii=find((z11-50).^2+y11.^2>2500);
z11(ii)=[];
y11(ii)=[];
x11(ii)=[];
xyz1=[reshape(x11,1,[]);reshape(y11,1,[]);reshape(z11,1,[])]';
dlmwrite('xia.xls',xyz1,';');
e=(b.*(n.^2)-sqrt((b.^2).*(n.^4)-(n.^2).*(b.^2-(a.*(b.^2)).^(2/3)+n.^2).*(n.^2)))./(b.^2-(a.*(b.^2)).^(2/3)+n.^2);
x3=linspace(0,e,300);
y3=linspace(-(m+n),m+n,600);
[x33,y33]=meshgrid(x3,y3);
z33=sqrt((sqrt(2.*b.*x33+(-b.^2+(a.*(b.^2)).^(2/3)-n.^2).*(x33.^2)./(n.^2))+m).^2-y33.^2);
jj=find((z33-50).^2+y33.^2>2500);
z33(jj)=[];
y33(jj)=[];
x33(jj)=[];
xyz3=[reshape(x33,1,[]);reshape(y33,1,[]);reshape(z33,1,[])]';
dlmwrite('zhong.xls',xyz3,';');
f=(b.*((a.*sqrt((a.*(b.^2)).^(2/3)-n.^2))./((a.*(b.^2)).^(1/3))+(b.*(n.^2))./(b.^2-(a.*(b.^2)).^(2/3)+n.^2)-((n.^2).*sqrt((a.*(b.^2)).^(2/3)-n.^2))./(b.^2-(a.*(b.^2)).^(2/3)+n.^2))-sqrt((a.*b).^2-(b.*(100-m)).^2+2.*n.*(100-m).*(b.^2)-2.*(a.*(b.^2)).^(2/3).*n.*(100-m)-(b.*n).^2-a.*(a.*(b.^2)).^(1/3).*(n.^2)+2.*(a.*(b.^2)).^(2/3).*(n.^2)))./b;
x5=linspace(e,f,500);
y5=linspace(-100,100,1000);
[x55,y55]=meshgrid(x5,y5);
z55=sqrt(((a.^2-x55.^2+2.*(a.*sqrt((a.*(b.^2)).^(2/3)-n.^2)./(a.*(b.^2)).^(1/3)+b.*(n.^2)./(b.^2-(a.*(b.^2)).^(2/3)+n.^2)-n.^2.*sqrt((a.*(b.^2)).^(2/3)-n.^2)./(b.^2-(a.*(b.^2)).^(2/3)+n.^2)).*x55-(a.*sqrt((a.*(b.^2)).^(2/3)-n.^2)./(a.*(b.^2)).^(1/3)+b.*(n.^2)./(b.^2-(a.*(b.^2)).^(2/3)+n.^2)-n.^2.*sqrt((a.*(b.^2)).^(2/3)-n.^2)./(b.^2-(a.*(b.^2)).^(2/3)+n.^2)).^2).^(1/2)+n-a.*n/(a.*(b.^2)).^(1/3)+m).^2-y55.^2);
ll=find((z55-50).^2+y55.^2>2500);
z55(ll)=[];
y55(ll)=[];
x55(ll)=[];
xyz5=[reshape(x55,1,[]);reshape(y55,1,[]);reshape(z55,1,[])]';
dlmwrite('shang.xls',xyz5,';');
pianjiao=atan((f-d)./100);
回复
分享到:

使用道具 举报

发表于 2008-9-4 08:47 | 显示全部楼层
z11=sqrt((m-sqrt(2.*b.*x11-x11.^2)).^2-y11.^2);

这里开根号了
 楼主| 发表于 2008-9-4 09:52 | 显示全部楼层

回复 沙发 sigma665 的帖子

哦,谢谢你呀,小西,对了,那为什么我另外两个数据里面没有虚数了呀!
 楼主| 发表于 2008-9-4 09:54 | 显示全部楼层

回复 沙发 sigma665 的帖子

谢谢你,开根号的时候被开方数为负数时就出来是虚数了吧!明白了,谢谢!

[ 本帖最后由 fanzhenjie 于 2008-9-4 10:02 编辑 ]
发表于 2008-9-4 11:00 | 显示全部楼层
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-23 05:33 , Processed in 0.051670 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表