版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
場(chǎng)論與復(fù)變函數(shù)大作業(yè)
問(wèn)題1
問(wèn)題I描述,在圓環(huán)內(nèi)一點(diǎn)(xO,yO)處有一條光線射出
圓環(huán)半徑為R
推導(dǎo)該光線通過(guò)m次反射后方向的公式,隨著(xO,y0)的不同,分析按照相同方向射出的光
線反射方向有什么特點(diǎn)?3給定(xO,y0),分析按照不同方向射出的光線反射方向有什么特
點(diǎn)?j
分析:
給定起始點(diǎn)(X,y),反射角angle,反射次數(shù)n
根據(jù)(x,y),angIe可以計(jì)算出入射光線在圓周上的兩個(gè)(xO,yo)(xlzyl)o
計(jì)算方法如下:
doublek=tan(ang1e);
doub1exl,yl;〃設(shè)出弦長(zhǎng)中點(diǎn)的坐標(biāo),輔助求解交點(diǎn)
doublelength;〃反射弦長(zhǎng)的一半
x1=k*(k*xO-y0)/(k*k+1);
yl=-(k*xO-yO)/(k*k+1);
length=(double)sqrt((double)(R*R-x1*x1-y1*y1));
pnode[O].x=x1-1ength*cos(angle);
pnode[0].y=yl-length*sin(angle);
pnode[l].x=x1+1ength*cos(angle);
pnode[l].y=y1+Iength*sin(angle);
然后由(xO,yO)(x1,yl)可得出(x2,y2);同理由(xi,yi)(xi?1,yi—1)可求出(xi
+l,yi+l),依次即可求出所有反射點(diǎn)
實(shí)現(xiàn)方法:
pnode[i+l].x=2*(pnode[i].x)*((pnode[i—1].x)*(pnode[i].x)+(pno
de[i-1].y)*(pnode[i].y))-(pnode[i-1].x);
pnode[i+1].y=2*(pnode[i].y)*((pnode[i-l].x)*(pnode[i].x)+(pnode[i
—11.y)*(pnode[i].y))-(pnode[i-1].y);
用C語(yǔ)言編寫(xiě)代碼運(yùn)營(yíng)結(jié)果如下:
*C:\Users\yunshijie\Documents\VisualStudio2010\Projects\001\Debug\001.exeIT回
請(qǐng)依次輸入起始點(diǎn)坐標(biāo)x。.90,入射角angle<-i80,1801,反射次教n
格式:x0,y。,angle,n圓半徑為1
0.5,0.3,62,30
疑過(guò)3。次反射后,此時(shí)光線的方向?yàn)?(0.871522,0.490356〉—><0.158049,-0.987431>
付詳細(xì)過(guò)程Y/N(退出)?
:0<start<end<=n
圈注:預(yù)留。,。輸入為退出標(biāo)志
寥虛3次反射后,
此時(shí)光線的方向?yàn)?(0.152016,0.988378〉—><0.874500,-0.485025)
經(jīng)過(guò)24次反射后,此時(shí)光線的方向?yàn)?(0.874500,-0.485025)—><-0.757957,-0.652304
法125次反射后,
此時(shí)光線的方向?yàn)?(-0.757957,-0.652304>—><-0.349312,0.937006
全過(guò)26次反射后,
此時(shí)光線的方向?yàn)?(-0.349312,0.93?006>—><0.999995,0.003053>
經(jīng)過(guò)27次反射后,此時(shí)光線的方向?yàn)?(0.999995,0.003053>—><-0.343584,-0.939122>
經(jīng)過(guò)28次反射后,此時(shí)光線的方向?yàn)?(-0.343584,-0.939122>—><-0.761926,0.647664
經(jīng)過(guò)29次反射后,此時(shí)光線的方向?yàn)?(-0.761926,0.647664)—><0.871522.0.490356〉
經(jīng)過(guò)30次反射后,此時(shí)光線的方向?yàn)?0.871522,0.490356)—><0.158049,-0.987431>
翻譯成MATLAB語(yǔ)言,作圖效果:
結(jié)論
隨著(xO,yO)的不同,分析按照相同方向射出的光線反射方向有什么特點(diǎn)?
取(0.5,03)為發(fā)射點(diǎn),角度分別用45,60,75反射25次作圖比較
給定(xO,yO),分析按照不同方向射出的光線反射方向有什么特點(diǎn)?
擬定入射角為62°,反射25次。入射點(diǎn)依次取(-0.5,0.3)(0,0.3)(0.5,
附C程序代碼
/*****************************************************************
***********************************************************
**************************
復(fù)變函數(shù)大作業(yè)程
序:(?)
bb°°姓名:15世潔。602103094
。0。。000011:2023.11.27
*****************************************************************
***************************************************************
***********************/
#inc1ude<stdio.h>
#inc1ude<math.h>
#inelude<conio.h>
#defineR1//圓的半徑備注:修改時(shí),注意改變后面printf函數(shù)輸出時(shí)的格式
typedefstructpnode。。//一個(gè)點(diǎn)的坐標(biāo)
(
doub1ex;
doubley;
}Coordinate;
Coordinatepnode[100]={0,0};〃儲(chǔ)存各反射點(diǎn)坐標(biāo)
〃■^函明*****************************************************
**********************************************************
*******************************
voidmy_func(inti);〃重要功能函數(shù),計(jì)算各反射點(diǎn)
voidmy_init(doublexO,doubleyO,doubleangIe);〃初始化條件
voidlieju(intstartJntend);〃輸出第start到第end次反射過(guò)程
******************************************************
****************************************************************
*********************************
voidmain()
(
inti,nzstart,end;
ocharinput_f1ag=1,f1ag=0;
doubIeang1ezx0,y0;
owhile(input_flag)
(
。叩rintf("請(qǐng)依次輸入起始點(diǎn)坐標(biāo)x0,y0,入射角angle(-180,180],反射次數(shù)n\n格式:
圓半徑為/注意的輸出格式
x0,yO,anglezn%d\n”,R);/R
M
sscanf("%lfz%lfz%lf,%dz&xO,&yO,&ang1e,&n);
。if((xO*xO+yO*yO<R*R)&&(-180<angle)&&(angle<=180)&&(n>0))
input_f1ag=0;
?e1se
sPrintf(H輸入錯(cuò)誤,請(qǐng)重新輸入\n");
}
my—init(x0,yO,ang1e);//初始化
for(i=1;i<=n;i++)
(
。my_func(i);
°}
叩rintf("通過(guò)%(1次反射后,此時(shí)光線的方向?yàn)椋?%lf,%lf)-->(%lf,%If)\n",n,pno
de[n].x,pnode[n].y,pnode[n+l].x,pnode[n+1].y);
叩rintf("請(qǐng)問(wèn)是否需要反射具體過(guò)程Y/N(退出)?\n");
while(flag!=Y&&flag!='y'&&flag!='N'&&flag!='n')
?flag=getch();
)
oif(flag==zY'I|flag==y)
(
3input__flag=1;
whi1e(input_flag)
00{
。oPrintf(“請(qǐng)輸入需要的過(guò)程:0<start<end<=n\n格式:star3end\n備注:預(yù)留
0,0輸入為退出標(biāo)志\n");
。3scanf("%d,%d”,&star3&end);
。if(0<start&&start<end&&end<=n)
°。。input_f1ag=0;
。e1seif(end==0&&start==0)
o。b「eak;
o*oelse
。。。printf("輸入錯(cuò)誤,請(qǐng)重新輸入\n");
。}
。if(input_flag==0)
0(
1ieju(start,end);
。printf("按任意鍵退出)
??getch();
)
)
/************************************************************
**************************************************************
********************************
000000子函數(shù)
名稱(chēng):my_init
功能:初始化條件,為后續(xù)計(jì)算各點(diǎn)坐標(biāo)提供初始條件pnode⑼,pnode[1]
輸入?yún)?shù):入射點(diǎn)坐標(biāo):doublex0,doub1eyO。入射角:doubleangIe
返回值:void
備注:各公式推導(dǎo),附word文檔
***********************************************************
****************************************************************
*******************************/
voidmy_init(doubIexO,doubIeyO,doubleangIe)
(
。if(angle==90)
{
epnode[0].x=pnode[1].x=xO;
?pnode[0].y=-sqrt(R*R—x0*x0);
?pnode[l].y=sqrt(R*R—xO*x0);
)
?e1seif(angle==-90)
pnode[0].x=pnode[l].x=x0;
?pnode[O].y=sqrt(R^R-xO*xO);
3pnode[l].y=-sqrt(R^R—xO*xO);
}
elseif(angle==0)
°(
epnode[0].y=pnode[1].y=y0;
pnode[0].x=-sqrt(R*R—yO*y0);
。叩node[1].x=sqrt(RR-yO*yO);
)
elseif(angle==180)
°(
。pnode[0].y=pnode[l].y=y0;
。叩node[0].x=sqrt(R*R-yO*y0);
?pnode[1].x=-sqrt(R*R-yO*y0);
)
。else
°{
o。doubIek=tan(angle);
。。doublex1,y1;〃設(shè)出弦長(zhǎng)中點(diǎn)的坐標(biāo),輔助求解交點(diǎn)
。doublelength;〃反射弦長(zhǎng)的一半
x1=k*(k*x0-y0)/(k*k+1);
yl=—(k*xO-y0)/(k*k+1);
1ength=(double)sqrt((double)(R*R-x1*xl—yl*y1));
pnode[0].x=x1-1ength*cos(angle);
。pnode[0].y=yl-Iength*sin(angIe);
3pnode[1].x=x1+length*cos(ang1e);
。。pnode[1].y=yl+1ength*sin(ang1e);
)
}
/******************^Kj-
****************************************************************
**************************?*?*****
名稱(chēng):my_func
功能:根據(jù)初始化計(jì)算出來(lái)的Pnode[0],pnode[1]計(jì)算以后各反射點(diǎn)坐標(biāo)
輸入?yún)?shù):inti(第i次反射)
返回值:void
*******************************************************
*******************************************************************
******************??*************/
voidmy_func(inti)
(
pnode[i+l].x=2*(pnode[i].x)*((pnode[i—l],x)*(pnode[i].x)+(pnode
Li-1].y)*(pnodeLi].y))-(pnode[i—1].x);
pnode[i+1].y=2*(pnode[i].y)*((pnode[i-l].x)*(pnode[i].x)+(pno
de[i-1].y)*(pnode[i].y))-(pnode[i-l].y);
)
/****************************************************
**********************************************************
********************************************
名稱(chēng):lieju
功能:根據(jù)用戶需要,列舉中間過(guò)程
輸入?yún)?shù):開(kāi)始intstart,結(jié)束intend
返回值:void
*************************************************************
*****************************************************************
****jUj"*************/
voidlieju(intstart,intend)
(
intk;
ofor(k=start;k<=end;k++)
°{
。。print")通過(guò)%(1次反射后,此時(shí)光線的方向?yàn)?1f)一一>(%lf,%lf)\n“,k,pno
de[k].xzpnode[k].y,pnode[k+l].x,pnode[k+1].y);
)
)
附matlab程序代碼
%假設(shè)圓的半徑為i
disp1ay(,請(qǐng)輸入入射的坐標(biāo)廠);
x=input(zX:');
y=input('Y:');
display「請(qǐng)輸入入射角度)
degree=input('(角度)');
degree=mod(degree,360);
%初始化
ifdegree==O
end_y=y;
start_y=end_y;
start_x=-sqrt(l-yA2);
end_x=-start_x;
eIseifdegree==l80
start_y=y;
end_y=y;
start_x=sqrt(1-yA2);
end_x=-start_x;
elseifdegree==90
end_x=x;
start_x-x;
start_y=-sqrt(1—xA2);
end_y=-start_y;
e1seifdegree==270
start_x=x;
end_x=x;
start_y=sqrt(l-xA2);
end_y=-start_y;
else
degree=degree*pi/180;
k=tan(degree);
x1=k*(k*x-y)/(k*k+1);
yl=—(k*x-y)/(k*k+1);
1en=sqrt(l-x1八2—ylA2);
start_x=x1-Ien*cos(degree);
start_y=yl-len*sin(degree);
end—x=xl+1en*cos(degree);
end_y=yl+len*sin(degree);
end
x_temp=x:(end_x-x)/200:end—x;
y_temp=y:(end_y-y)flQ0:end_y;
%開(kāi)始反射
m=input(,請(qǐng)輸入反射的次數(shù));
clareset
figure(1);
ezplot('xA2+yA2=l');
holdon;
plot(x,y/*');
ho1don;
pIot(x_temp,y_ternp,'rr);
holdon;
i=l;
whilei<=m
i=i+1;
x=2*end_x*(start_x*end_x+start_y*end—y)-start_x;
y=2*end_y*(start_x*end_x+start_y*end_y)—start_y;
start_x=end_x;
start_y=end_y;
end_x=x;
end_y=y;
x_temp=start_x:(end_x—start_x)/200:end_x;
y_temp=start—y:(end_y-start__y)/200:end_y;
p1ot(x_temp,y_temp/r7);
holdon;
end
plot(end—x,end_yz'*');
axis([-l1-11]);%調(diào)整x軸y軸坐標(biāo)范圍
axissquare;%使x軸y軸等長(zhǎng)
gridon;
clear;
問(wèn)題2
問(wèn)題I描述,在圓柱口面上一點(diǎn)(xO,yO,zO)處有一條光線射入)圓柱半徑為R,長(zhǎng)H
推導(dǎo)該光線反射回口面的位置及方向公式,隨著入射點(diǎn)位置不同分析反射波有什么特點(diǎn)?
隨著入射點(diǎn)方向不同分析反射波有什么特點(diǎn)?
隨著H/R比值不同分析反射波有什么特點(diǎn)?
分析
可以吧入射速度分解成z軸方向上的和xoy平面內(nèi)的分量
在平面上可以運(yùn)用問(wèn)題1中的函數(shù)求解平面上的反射
在z軸方向上,讓光線走2L長(zhǎng)度即可
用C語(yǔ)言編寫(xiě)代碼運(yùn)營(yíng)結(jié)果
?C:\Users\yunshijie\Documents\VisualStudio2010\Projects\002\Debug\002.exe
請(qǐng)以此輸入入射點(diǎn)在xoy平面內(nèi)的掾影坐標(biāo)X0,90,圓柱筒長(zhǎng)度deep,
入射遞度U沿x軸,y軸,好防向工的分量u_x.u_y,u_z<<0)
輸入格式:xx0O,y,y0O,leJnegntght,hu,_ux/,'uU_Vy,'uu_-z圓柱筒半徑為1
0.5,0.3,3,1,2,—0.5
經(jīng)過(guò)26次反射出射點(diǎn)坐標(biāo)為(0.759i2i,0.446322,3.000B00>,方向?yàn)?lt;-0.349849,-0.93679
1,2.791298)—><0.759121,0.446322,3.000000>
請(qǐng)回是否需要反射詳細(xì)過(guò)程Y/N〈退出〉?
請(qǐng)輸入需要的過(guò)程:0<start<end<=26
格式:start,end
牌注:預(yù)留。,。輸入為退出標(biāo)志
21,26
經(jīng)過(guò)21次反射后,此時(shí)光線的方向?yàn)?(-0.309783,-0.95080?,1-673264>—><0.814443,
0.580243.1.896871)
經(jīng)過(guò)22次反射后,此時(shí)光線的方向?yàn)?(0.814443,0.580243,1.8968?!>—><-0.999841,0
.01????,2.120478)
經(jīng)過(guò)23次反射后,此時(shí)光線的方向?yàn)?(-0.999841,0.017??7,2.120478>—><0.793300,-
忸.608828,2.344085)
匿過(guò)24次反射后,此時(shí)光線的方向?yàn)?(0.793300,-0.608828,2.344085>—><-0.275780,
k961216,2.567692>
經(jīng)過(guò)25次反射后,此時(shí)光線的方向?yàn)?(-0.275780,0.961216,2.567692>—><-0.349849,
-0.936791,2.791298)
經(jīng)過(guò)26次反射后,此時(shí)光線的方向?yàn)?I:-0.349849,-0.936791,2.?91298>—><0.759121,
0.446322,3.000000>
按任意鍵退出.
翻譯成matlab語(yǔ)言,做出射點(diǎn)的投影圖
當(dāng)入射點(diǎn)Xoy平面的投影點(diǎn)為(0,0)
角度b(入射方向與圓柱兩底的夾角)保持不變
角度a(入射方向在平面上投影與x軸的夾角)從0到2n變化
得到的圖像為一圓,即此時(shí)出射點(diǎn)落在該圓上
當(dāng)入射點(diǎn)xoy平面的投影點(diǎn)為(0,0)
角度b(入射方向與圓柱兩底的夾角)從0到n變化
角度a(入射方向在平面上投影與x軸的夾角)保持不變
得到一條過(guò)原點(diǎn)的直線
當(dāng)a,b均改變時(shí)
得到幾個(gè)圓域,有圖分析可知,出射點(diǎn)均落在這些圓上
結(jié)論
由上述所知,當(dāng)入射點(diǎn)投影為(0,0)時(shí),出射點(diǎn)落在幾個(gè)半徑不同的半圓域上(見(jiàn)上圖)
隨著入射點(diǎn)位置不同分析反射波有什么特點(diǎn)?
當(dāng)入射點(diǎn)投影為(0.3,0.5)時(shí)
(這個(gè)出射點(diǎn)投影域----是什么東西!!!????兩個(gè)外星人么??)
分開(kāi)看
角度b(入射方向與圓柱兩底的夾角)保持不變
角度a(入射方向在平面上投影與x軸的夾角)從0到2頁(yè)變化
各種像這樣的軸對(duì)稱(chēng)圖形,沒(méi)發(fā)現(xiàn)其他明顯規(guī)律
角度b(入射方向與圓柱兩底的夾角)從0到口變化
角度a(入射方向在平面上投影與x軸的夾角)保持不變
這個(gè)大約可以看出是幾個(gè)箭頭行組成的區(qū)域
把間隔調(diào)到最密,程序運(yùn)營(yíng)N久后。。.。。。。
大約可以看出
出射點(diǎn)在圓域的某一側(cè)分布比較密集,另一次較稀疏
分布為軸對(duì)稱(chēng)式
-1-0505
x
隨著入射點(diǎn)方向不同分析反射波有什么特點(diǎn)?j為分析簡(jiǎn)樸,拿(0,0)點(diǎn)作為定點(diǎn)
從上面關(guān)于(0,0)點(diǎn)的3個(gè)截圖中可以看出
角度a(入射方向在平面上投影與x軸的夾角)從。到2n變化時(shí)
隨a的增大,出射點(diǎn)與入射點(diǎn)連線與軸夾角不斷邊打切范圍為(0,2或(一",0)之一,具
體域吧取值有關(guān)
角度b(入射方向與圓柱兩底的夾角)從0到五變化是
隨b增大,出射點(diǎn)域偏離入射點(diǎn)域越來(lái)越遠(yuǎn)
附Q程序代碼
/*******************************************************
***************************************************************
*****************夫**************
復(fù)變函數(shù)大作業(yè)程序
(-)
。。。姓名:運(yùn)世潔。02103094
o。。日期:2023.11.27
***********************************************************
*************************************************************
*******************************/
#include<stdio.h>
#inc1ude<math.h>
#inc1ude<conio.h>
#defineR1〃圓的半徑備注:修改時(shí),注意改變后面pnntf函數(shù)輸出時(shí)的格式
typedefstructpnode。?!ㄒ粋€(gè)點(diǎn)的3維坐標(biāo)
(
odoublex;
。doubley;
◎doublez;
}Coordinate;
Coordinatepnode[100]={0,0,0};//儲(chǔ)存各反射點(diǎn)坐標(biāo)
11子函數(shù)聲明******************************************************
************************************************************
****************************
intmy_func(doubledeep,doubIer_length,doublev_x,doub1e
v_y,doublev_z);〃重要功能函數(shù),計(jì)算各反射點(diǎn),并返回總反射次數(shù)
intmyJnit(doublexO,doub1ey0,doublev_x,doublev_y);〃初始化條件,并返
回反射弦長(zhǎng)
voidlieju(intstartjntend);〃輸出第start到第end次反射過(guò)程
/1]****************-jjj*********
*******************************************************
*****************************************
voidmain()
(
。inti,n,start,end;
。charinput_f1ag=1,flag=O;
doubIeangIe,xO,y0,v_x,v_y,v_z,deep;
doub1er」ength;〃反射在xoy平面的弦長(zhǎng)
。while(input_flag)
(
printf("請(qǐng)以此輸入入射點(diǎn)在xoy平面內(nèi)的投影坐標(biāo)x0zy0,圓柱筒長(zhǎng)度deep,
\n入射速度V沿x軸,y軸,z軸方向上的分量v_x,v_y,v_z(<0)\n");
Printf("輸入格式:xO,y0Jength,v_x,v_y,v_z。。圓柱筒半徑為%d\n",R);〃坐
標(biāo)建立方式:以圓柱筒底面所在平面為xoy坐標(biāo)面
scanf%lf,%lf,%lf,%lf,%1f”,&x0,&y0,&deep,&v_x/&v_y/&v—z);
。if(x0*x0+yO*y0<R*R&&deep>0&&v—z<0&&v_xv_x+v_y*v_y>0)
。。。input_flag=0;
。else
o?oprintf("輸入錯(cuò)誤,請(qǐng)重新輸入\n”);
}
pnode[O].z=deep;
or_length=myjnit(x0,yO,v_x,v_y);
on=my_func(deep,r_Iength,v_xzv_y,v_z);
pnode[0].x=x0;
apnode[0],y=y0;
pnode[0].z=deep;
叩rintf(“通過(guò)%d次反射出射點(diǎn)坐標(biāo)為(%lf,%lf,%lf),方向?yàn)?%lf,%lf,%1f)->(%lf,%If,%lf)
\n,n,pnode[n+1].x,pnode[n+1].y,pnode[n+1].zzpnode[n].x,pnode
[n].y,pnode[n].z,pnode[n+l].x,pnode[n+1].y,pnode[n+1].z);
printf("請(qǐng)問(wèn)是否需要反射具體過(guò)程Y/N(退出)?\n");
owhile(flag!='Y'&&flag!=y&&flag!='N,&&flag!='n')
°(
。flag=getch();
°}
if(f1ag=='Y'||f1ag=='y,)
(
oinput_flag=1;
swhile(input_flag)
0o{
。。printf("請(qǐng)輸入需要的過(guò)程:0<start<end<=%d\n格式:starvend\n備注:預(yù)留
0,0輸入為退出標(biāo)志\n“,n);
ooscanf("%d,%d”,&startz&end);
。if(0<start&&start<end&&end<=n)
°。?input_flag=O;
?elseif(end==0&&start==0)
。ebreak:
eIse
。printf("輸入錯(cuò)誤,請(qǐng)重新輸入\n");
3if(input_flag==0)
6(
。lieju(startzend);
-printf("按任意鍵退出)
。getch();
00}
。}
}
intmy_init(doub1exO,doubIeyO,doublev_x,doublev_y)
(
doub1elength;〃反射弦長(zhǎng)的一半
。if(v—x==0&&v—y>0)
。{
3pnode[0].x=pnode[l].x=x0;
。pnodeL0].y=-sqrt(R*R—x0*x0);
epnode[l].y=sqrt(R*R-x0*x0);
1ength=2*pnode[1].y;
}
eIseif(v—x==0&&v—y<0)
°(
pnode[0].x=pnode[l].x=x0;
pnode[0].y=sqrt(R*R-xO*x0);
。pnode[1].y=—sqrt(R*R-x0*xO);
?Iength=2*pnode[0].y;
?elseif(v_x>0&&v_y—=0)
°{
。pnode[0].y=pnodeE1].y=yO:
?pnode[0].x=—sqrt(R*R-y0*y0);
。opnode[l].x=sqrt(R*R-y0*y0);
。Iength=2*pnode[l].x;
0)
eIseif(v_x<0&&v_y==0)
(
?pnode[0].y=pnode[l].y=y0;
oopnode[0].x=sqrt(R*R—yOyO);
?pnode[l].x=-sqrt(R*R-y0*y0);
1ength=2*pnode[0].x;
)
oelse
(
oodoubIek=(v_y/v_x);
doublexl,yl;//設(shè)出弦長(zhǎng)中點(diǎn)的坐標(biāo),輔助求解交點(diǎn)
。x1=k*(k*x0—y0)/(k*k+1);
oy1=-(k*xO-y0)/(k*k+1);
oolength=(doubIe)sqrt((double)(R*R—x1*xl-y1*yl));
pnode[0].x=xl-Iength*v__x/sqrt(v_x*v_x+v_y*v_y);
pnode[0].y=yl-1ength*v_y/sqrt(v_x*v_x+v_y*v_y);
pnode[l].x=x1+length*v_x/sqrt(v_x*v_x+v_y*v_y);
pnode[l].y=yl+length*v_y/sqrt(v_x*v_x+v_y*v_y);
)
。return(2*1ength);
)
intmy__func(doub1edeep,doubler_1ength,doublev__x,doublev_y,double
v_z)
(
ointi=2;
。doublez;
doub1elength_0=sqrt((pnode[0].x—pnode[1].x)*(pnode[0].x—pn
ode[1].x)+(pnode[0].y-pnode[l].y)*(pnode[0].y-pnode[l].y));
。doublev_xoy=sqrt(v_x*v_x+v_y*v_y);
0doub1etimeO=length_0/v_xoy;
opnodeEl].z=deep+timeO*v_z;
。z=deep+timeO*v_z+v_z*(r_1ength/v_xoy);
while(z>0)
0(
pnode[i].x=2*(pnodeEi-l].x)*((pnode[i-2].x)*(pnode[i-l].x)+
(pnode[i-2].y)*(pnode[i_l].y))—(pnode[i-2].x);
o?pnode[i].y=2*(pnode[i-l].y)*((pnode[i-2].x)*(pnode[i-1].x)+(pnod
e[i—2].y)*(pnode[i-l].y))-(Pnode[i-2].y);
。pnode[i].z=z;
。z=z+v_z*(r_1ength/v_xoy);
oi++;
}
。//需要加入底面反射點(diǎn)
0z=-Z;
〃計(jì)算底面反射點(diǎn)*****************************太麻煩了也不知道對(duì)不對(duì),備
,卡___**********************************************************
***************
i++;
?pnode[i].x=2*(pnode[i-2].x)*((pnode[i-3].x)*(pnode[i-2].x)+
(pnode[i-3].y)*(pnode[i—2].y))-(pnode[i-3].x);
pnode[i].y=2*(pnode[i-2].y)*((pnode[i—3],x)*(pnode[i-2].x)+
(pnode[i-3].y)*(pnode[i—2].y))-(pnode[i-3].y);
pnode[i].z=z;
。z=z—v_z*(r_length/v__xoy);
pnode[i—l].y=(pnode[i].z*pnode[i—2].y—pnode[i-2].z*pnode[i].y)/(pnode[i].z
-pnode[i-21.z);
3pnode[i-l].x=(pnode[i].z*pnode[i-2].x-pnode[i—2].z*pnode[i].x)/(pnodeLi],z
-pnode[i-2].z);
pnode[i-1].z=0;
i++;
。pnode。].x=2*(pnode[i-l].x)*((pnode[i-3].x)*(pnode[i-1].x)+
(pnode[i-3].y)*(pnodeLi-1].y))-(pnode[i-3].x);
opnode[i].y=2*(pnode[i-l].y)*((pnode[i-3].x)*(pnode[i-1].x)+(pno
de[i-3].y)*(pnode[i-l].y))—(pnode[i-3].y);
pnode[i].z=z;
。z=z-v_z*(r_Iength/v_xoy);
oi++;
〃********************************************************
**********************************************************
**********************************
。while(z<deep)
(
pnode[i].x=2*(pnode[i-1].x)*((pnodeLi-2].x)*(pnode[i-l].x)+
(pnode[i—2].y)*(pnode[i-1].y))-(pnode[i—2].x);
opnode[i].y=2*(pnode[i-l].y)*((pnode[i-2].x)*(pnode[i-1].x)+
(pnode[i-2].y)*(pnode[i-1].y))—(pnode[i-2].y);
。。pnode[i].z=z;
。。z=z-v_z*(r_length/v_xoy);
。。i++;
°)
。pnodeLi].z=deep;
opnode[i].x=2*(pnode[i-1].x)*((pnode[i-2].x)*(pnode[i-l].x)+
(pnode[i-2].y)*(pnode[i-l].y))-(pnode[i—2].x);
opnode[i].y=2*(pnode[i-1].y)*((pnode[i-2].x)*(pnode[i-11.x)
+(pnode[i-2].y)*(pnodeLi-1],y))-(pnode[i-2].y);
pnode[i].x=pnode[i-l].x+(pnode[i].x-pnode[i—l].x)*(deep-pnode[i—11.z)/(-v_z*(r_l
ength/v_xoy));
opnode[i].y=pnode[i—l].y+(pnode[i].y-pnode[i—l].y)*(deep-pnode[i-1].z)
/(-v_z*(r_1ength/v_xoy));
i--;
return(i);
voidlieju(intstart,intend)
ointk;
for(k=start;k<=end;k++)
(
。0printf("通過(guò)%~次反射后,此時(shí)光線的方向?yàn)椋?%lf,%lf,%1f)->(%lf,%1t%lf)\n”,k,
pnode[k].x,pnode[k].y,pnode[k].z,pnode[k+1].x,pnode[k+1].y,pnode
Lk+1].z);
0)
附mat1ab程序代碼
%**********************************主函************************
****
clareset
figure(1);
ezp1otCxA2+yA2=l');
hoIdon;
axis(L-11-11]);%調(diào)整x軸y軸坐標(biāo)范圍
axissquare;%使x軸y軸等長(zhǎng)
b=0.1;
whi1e(b<=pi)
a=0;
while(a<=2*pi)
[xl,y1]=Homework_2_Func(0,0,3,b);
Plot(xl,y1,'*,);
p1ot(xl,y1,7*');
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 北京警察學(xué)院《Premiere 視頻編輯》2024 - 2025 學(xué)年第一學(xué)期期末試卷
- 鄉(xiāng)鎮(zhèn)國(guó)土空間規(guī)劃文本
- 護(hù)理法律法規(guī)知識(shí)課件
- 2026年虛擬現(xiàn)實(shí)技術(shù)在教育領(lǐng)域的實(shí)踐報(bào)告及未來(lái)五至十年教育創(chuàng)新報(bào)告
- 新生兒常見(jiàn)意外傷害預(yù)防
- 【北師大版】初中生物學(xué)八年級(jí)上冊(cè) 期末評(píng)估測(cè)試卷二(含答案)
- 全期護(hù)理的成本效益分析
- 2026年及未來(lái)5年中國(guó)鍛造件行業(yè)市場(chǎng)深度分析及發(fā)展前景預(yù)測(cè)報(bào)告
- 基于生物識(shí)別技術(shù)的智能門(mén)禁與身份驗(yàn)證系統(tǒng)開(kāi)發(fā)課題報(bào)告教學(xué)研究課題報(bào)告
- 2025年物聯(lián)網(wǎng)在智能家居報(bào)告
- 2024年廣東省公務(wù)員《申論(省市級(jí))》試題真題及答案
- 民兵集訓(xùn)通知函
- 2025年雞飼料采購(gòu)合同
- 模擬電子技術(shù)基礎(chǔ) 第4版黃麗亞課后參考答案
- 電信營(yíng)業(yè)廳運(yùn)營(yíng)方案策劃書(shū)(2篇)
- JBT 14850-2024 塔式起重機(jī)支護(hù)系統(tǒng)(正式版)
- 專(zhuān)精特新申報(bào)材料范本
- 牽引供電系統(tǒng)短路計(jì)算-三相對(duì)稱(chēng)短路計(jì)算(高鐵牽引供電系統(tǒng))
- (完整版)第一性原理
- 安全技術(shù)勞動(dòng)保護(hù)措施管理規(guī)定
- 學(xué)習(xí)主題班會(huì)課件 高三寒假攻略
評(píng)論
0/150
提交評(píng)論