function object_drawing_functions(obj)
if strcmp(obj.obj_type, 'voltage_source')
draw_a_voltage_source(obj);
end
if strcmp(obj.obj_type, 'current_source')
draw_a_current_source(obj);
end
if strcmp(obj.obj_type, 'resistor')
draw_a_resistor(obj);
end
if strcmp(obj.obj_type, 'capacitor')
draw_a_capacitor(obj);
end
if strcmp(obj.obj_type, 'inductor')
draw_an_inductor(obj);
end
if strcmp(obj.obj_type, 'diode')
draw_a_diode(obj);
end
if strcmp(obj.obj_type, 'sampled_voltage')
draw_a_sampled_voltage(obj);
end
if strcmp(obj.obj_type, 'sampled_current')
draw_a_sampled_current(obj);
end
if strcmp(obj.obj_type, 'thin_wire')
draw_a_thin_wire(obj);
end
if strcmp(obj.obj_type, 'sampled_electric_field')
draw_a_sampled_electric_field(obj);
end
if strcmp(obj.obj_type, 'sampled_magnetic_field')
draw_a_sampled_magnetic_field(obj);
end
if strcmp(obj.obj_type, 'axis_outside_domain')
draw_axis_outside_domain(obj);
end
if strcmp(obj.obj_type, 'axis_at_origin')
draw_axis_at_origin(obj);
end
%===================================================================
function draw_a_current_source(obj)
ix = obj.min_x; iy = obj.min_y; iz = obj.min_z;
ax = obj.max_x; ay = obj.max_y; az = obj.max_z;
switch (obj.direction)
case ('xn')
vx = [ax ix]; vy = 0.5*[(iy+ay) (iy+ay)]; vz = 0.5*[(iz+az) (iz+az)];
len = ax - ix;
ir = len/20;
[v1, f1] = a_line([ix ix+0.2*len], vy, vz, ir);
[v2, f2] = a_line([ix+0.8*len ax], vy, vz, ir);
if ((az-iz)<(ay-iy)) dn = 'z'; else dn = 'y'; end
cx = (vx(1)+vx(2))/2;
cy = (vy(1)+vy(2))/2;
cz = (vz(1)+vz(2))/2;
[v3, f3] = a_circle(cx, cy, cz, len*0.3, dn, ir);
[v4, f4] = a_vector([cx+len/10 cx-len/10], [cy cy], [cz cz], len/16, len/8, 0.5);
case ('xp')
vx = [ix ax]; vy = 0.5*[(iy+ay) (iy+ay)]; vz = 0.5*[(iz+az) (iz+az)];
len = ax - ix;
ir = len/20;
[v1, f1] = a_line([ix ix+0.2*len], vy, vz, ir);
[v2, f2] = a_line([ix+0.8*len ax], vy, vz, ir);
if ((az-iz)<(ay-iy)) dn = 'z'; else dn = 'y'; end
cx = (vx(1)+vx(2))/2;
cy = (vy(1)+vy(2))/2;
cz = (vz(1)+vz(2))/2;
[v3, f3] = a_circle(cx, cy, cz, len*0.3, dn, ir);
[v4, f4] = a_vector([cx-len/10 cx+len/10], [cy cy], [cz cz], len/16, len/8, 0.5);
case ('yn')
vx = 0.5*[(ix+ax) (ix+ax)]; vy = [ay iy]; vz = 0.5*[(iz+az) (iz+az)];
len = ay - iy;
ir = len/20;
[v1, f1] = a_line(vx, [iy iy+0.2*len], vz, ir);
[v2, f2] = a_line(vx, [iy+0.8*len ay], vz, ir);
if ((ax-ix)<(az-iz)) dn = 'x'; else dn = 'z'; end
cx = (vx(1)+vx(2))/2;
cy = (vy(1)+vy(2))/2;
cz = (vz(1)+vz(2))/2;
[v3, f3] = a_circle(cx, cy, cz, len*0.3, dn, ir);
[v4, f4] = a_vector([cx cx],[cy+len/10 cy-len/10], [cz cz], len/16, len/8, 0.5);
case ('yp')
vx = 0.5*[(ix+ax) (ix+ax)]; vy = [iy ay]; vz = 0.5*[(iz+az) (iz+az)];
len = ay - iy;
ir = len/20;
[v1, f1] = a_line(vx, [iy iy+0.2*len], vz, ir);
[v2, f2] = a_line(vx, [iy+0.8*len ay], vz, ir);
if ((ax-ix)<(az-iz)) dn = 'x'; else dn = 'z'; end
cx = (vx(1)+vx(2))/2;
cy = (vy(1)+vy(2))/2;
cz = (vz(1)+vz(2))/2;
[v3, f3] = a_circle(cx, cy, cz, len*0.3, dn, ir);
[v4, f4] = a_vector([cx cx],[cy-len/10 cy+len/10], [cz cz], len/16, len/8, 0.5);
case ('zn')
vx = 0.5*[(ix+ax) (ix+ax)]; vy = 0.5*[(iy+ay) (iy+ay)]; vz = [az iz];
len = az - iz;
ir = len/20;
[v1, f1] = a_line(vx, vy, [iz iz+0.2*len], ir);
[v2, f2] = a_line(vx, vy, [iz+0.8*len az], ir);
if ((ax-ix)<(ay-iy)) dn = 'x'; else dn = 'y'; end
cx = (vx(1)+vx(2))/2;
cy = (vy(1)+vy(2))/2;
cz = (vz(1)+vz(2))/2;
[v3, f3] = a_circle(cx, cy, cz, len*0.3, dn, ir);
[v4, f4] = a_vector([cx cx], [cy cy], [cz+len/10 cz-len/10], len/16, len/8, 0.5);
case ('zp')
vx = 0.5*[(ix+ax) (ix+ax)]; vy = 0.5*[(iy+ay) (iy+ay)]; vz = [iz az];
len = az - iz;
ir = len/20;
[v1, f1] = a_line(vx, vy, [iz iz+0.2*len], ir);
[v2, f2] = a_line(vx, vy, [iz+0.8*len az], ir);
if ((ax-ix)<(ay-iy)) dn = 'x'; else dn = 'y'; end
cx = (vx(1)+vx(2))/2;
cy = (vy(1)+vy(2))/2;
cz = (vz(1)+vz(2))/2;
[v3, f3] = a_circle(cx, cy, cz, len*0.3, dn, ir);
[v4, f4] = a_vector([cx cx], [cy cy], [cz-len/10 cz+len/10], len/16, len/8, 0.5);
end
v = [v1; v2; v3; v4];
f = f1;
f = [f; max(max(f)) + f2];
f = [f; max(max(f)) + f3];
f = [f; max(max(f)) + f4];
patch('Vertices',v,'Faces',f,'facecolor','m', ...
'facealpha',1,'edgecolor','none');
% draw boundaries
v = [0 0 0; 1 0 0; 1 1 0; 0 1 0; 0 0 1; 1 0 1; 1 1 1; 0 1 1];
vx = v(:,1) * (ax - ix) + ix;
vy = v(:,2) * (ay - iy) + iy;
vz = v(:,3) * (az - iz) + iz;
f = [1 2 6 5; 2 3 7 6; 3 4 8 7; 4 1 5 8; 1 2 3 4; 5 6 7 8];
patch('Vertices',[vx vy vz],'Faces',f,'facecolor','none','LineWidth',1, ...
'facealpha',0.3,'edgecolor','m','linestyle','-');
% show label
text(ix,iy,iz,obj.obj_id,'VerticalAlignment','bottom', ...
'BackgroundColor','w','edgecolor','m','fontsize',12);
%===================================================================
function draw_a_voltage_source(obj)
ix = obj.min_x; iy = obj.min_y; iz = obj.min_z;
ax = obj.max_x; ay = obj.max_y; az = obj.max_z;
switch (obj.direction)
case ('xn')
vx = [ax ix]; vy = 0.5*[(iy+ay) (iy+ay)]; vz = 0.5*[(iz+az) (iz+az)];
len = ax - ix;
ir = len/30;
[v1, f1] = a_line([ix ix+0.2*len], vy, vz, ir);
[v2, f2] = a_line([ix+0.8*len ax], vy, vz, ir);
if ((az-iz)<(ay-iy)) dn = 'z'; else dn = 'y'; end
cx = (vx(1)+vx(2))/2;
cy = (vy(1)+vy(2))/2;
cz = (vz(1)+vz(2))/2;
[v3, f3] = a_circle(cx, cy, cz, len*0.3, dn, ir);
[v4, f4] = a_plus(cx-len/10, cy, cz, len/5, dn, ir);
[v5, f5] = a_minus(cx+len/10, cy, cz, len/5, dn, ir, 'x');
case ('xp')
vx = [ix ax]; vy = 0.5*[(iy+ay) (iy+ay)]; vz = 0.5*[(iz+az) (iz+az)];
len = ax - ix;
ir = len/30;
[v1, f1] = a_line([ix ix+0.2*len], vy, vz, ir);
[v2, f2] = a_line([ix+0.8*len ax], vy, vz, ir);
if ((az-iz)<(ay-iy)) dn = 'z'; else dn = 'y'; end
cx = (vx(1)+vx(2))/2;
cy = (vy(1)+vy(2))/2;
cz = (vz(1)+vz(2))/2;
[v3, f3] = a_circle(cx, cy, cz, len*0.3, dn, ir);
[v4, f4] = a_plus(cx+len/10, cy, cz, len/5, dn, ir);
[v5, f5] = a_minus(cx-len/10, cy, cz, len/5, dn, ir, 'x');
case ('yn')
vx = 0.5*[(ix+ax) (ix+ax)]; vy = [ay iy]; vz = 0.5*[(iz+az) (iz+az)];
len = ay - iy;
ir = len/30;
[v1, f1] = a_line(vx, [iy iy+0.2*len], vz, ir);
[v2, f2] = a_line(vx, [iy+0.8*len ay], vz, ir);
if ((ax-ix)<(az-iz)) dn = 'x'; else dn = 'z'; end
cx = (vx(1)+vx(2))/2;
cy = (vy(1)+vy(2))/2;
cz = (vz(1)+vz(2))/2;
[v3, f3] = a_circle(cx, cy, cz, len*0.3, dn, ir);
[v4, f4] = a_plus(cx, cy-len/10, cz, len/5, dn, ir);
[v5, f5] = a_minus(cx, cy+len/10, cz, len/5, dn, ir, 'y');
case ('yp')
vx = 0.5*[(ix+ax) (ix+ax)]; vy = [iy ay]; vz = 0.5*[(iz+az) (iz+az)];
len = ay - iy;
ir = len/30;
[v1, f1] = a_line(vx, [iy iy+0.2*len], vz, ir);
[v2, f2] = a_line(vx, [iy+0.8*len ay], vz, ir);
if ((ax-ix)<(az-iz)) dn = 'x'; else dn = 'z'; end
cx = (vx(1)+vx(2))/2;
cy = (vy(1)+vy(2))/2;
cz = (vz(1)+vz(2))/2;
[v3, f3] = a_circle(cx, cy, cz, len*0.3, dn, ir);
[v4, f4] = a_plus(cx, cy+len/10, cz, len/5, dn, ir);
[v5, f5] = a_minus(cx, cy-len/10, cz, len/5, dn, ir, 'y');
case ('zn')
vx = 0.5*[(ix+ax) (ix+ax)]; vy = 0.5*[(iy+ay) (iy+ay)]; vz = [az iz];
len = az - iz;
ir = len/30;
[v1, f1] = a_line(vx, vy, [iz iz+0.2*len], ir);
[v2, f2] = a_line(
没有合适的资源?快使用搜索试试~ 我知道了~
FDTD.zip_The Method Method_fdtd
共159个文件
m:159个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 185 浏览量
2022-07-15
02:16:03
上传
评论
收藏 128KB ZIP 举报
温馨提示
The Finite-Difference Time-Domain Method for Electromagnetics with MATLAB Simulatio
资源推荐
资源详情
资源评论
收起资源包目录
FDTD.zip_The Method Method_fdtd (159个子文件)
object_drawing_functions.m 36KB
object_drawing_functions.m 36KB
display_material_mesh_gui.m 35KB
display_material_mesh_gui.m 35KB
initialize_CPML_ABC.m 15KB
initialize_sources_and_lumped_elements.m 13KB
display_problem_space.m 11KB
display_problem_space.m 11KB
initialize_sources_and_lumped_elements.m 9KB
display_3D_geometry.m 9KB
display_3D_geometry.m 9KB
calculate_farfields_per_plane.m 8KB
calculate_farfields_per_plane.m 7KB
initialize_animation_parameters.m 6KB
calculate_domain_size.m 5KB
calculate_material_component_values.m 5KB
display_frequency_domain_outputs.m 5KB
calculate_domain_size.m 5KB
display_transient_parameters.m 5KB
define_output_parameters.m 5KB
calculate_JandM.m 4KB
initialize_output_parameters.m 4KB
display_transient_parameters.m 4KB
initialize_output_parameters.m 4KB
initialize_output_parameters.m 4KB
calculate_and_display_farfields.m 4KB
calculate_and_display_farfields.m 4KB
calculate_domain_size.m 3KB
update_magnetic_field_CPML_ABC.m 3KB
polar_plot_constant_phi.m 3KB
update_electric_field_CPML_ABC.m 3KB
define_output_parameters.m 3KB
define_output_parameters.m 3KB
define_problem_space_parameters.m 3KB
define_problem_space_parameters.m 3KB
define_problem_space_parameters.m 3KB
define_problem_space_parameters.m 3KB
calculate_frequency_domain_outputs.m 3KB
initialize_waveforms.m 3KB
update_incident_fields.m 3KB
define_problem_space_parameters.m 3KB
define_problem_space_parameters.m 3KB
define_problem_space_parameters.m 3KB
define_problem_space_parameters.m 3KB
define_problem_space_parameters.m 3KB
define_problem_space_parameters.m 3KB
initialize_farfield_arrays.m 3KB
display_sampled_parameters.m 3KB
display_objects_mesh_in_animation.m 3KB
initialize_thin_wire_updating_coefficients.m 3KB
define_sources_and_lumped_elements.m 3KB
polar_plot_constant_theta.m 2KB
define_problem_space_parameters.m 2KB
define_problem_space_parameters.m 2KB
define_problem_space_parameters.m 2KB
define_problem_space_parameters.m 2KB
initialize_voltage_source_updating_coefficients.m 2KB
initialize_current_source_updating_coefficients.m 2KB
define_geometry.m 2KB
calculate_frequency_domain_outputs.m 2KB
display_frequency_domain_outputs.m 2KB
initialize_display_parameters.m 2KB
define_geometry.m 2KB
define_problem_space_parameters.m 2KB
define_output_parameters.m 2KB
define_output_parameters.m 2KB
plot_h_zx.m 2KB
initialize_capacitor_updating_coefficients.m 2KB
plot_h_yz.m 2KB
plot_h_xy.m 2KB
define_sources_and_lumped_elements.m 2KB
initialize_resistor_updating_coefficients.m 2KB
initialize_updating_coefficients.m 2KB
define_output_parameters.m 2KB
capture_sampled_electric_fields.m 2KB
define_output_parameters.m 2KB
initialize_updating_coefficients.m 2KB
define_sources_and_lumped_elements.m 2KB
initialize_diode_updating_coefficients.m 2KB
recover_a_time_waveform.m 2KB
define_output_parameters.m 2KB
define_output_parameters.m 1KB
define_output_parameters.m 1KB
display_animation.m 1KB
define_sources_and_lumped_elements.m 1KB
define_output_parameters.m 1KB
plot_e_yz.m 1KB
define_geometry.m 1KB
plot_e_zx.m 1KB
define_output_parameters.m 1KB
plot_e_xy.m 1KB
define_output_parameters.m 1KB
set_color_axis_scaling.m 1KB
capture_sampled_currents.m 1KB
initialize_inductor_updating_coefficients.m 1KB
initialize_fdtd_material_grid.m 1KB
update_electric_fields.m 1KB
initialize_incident_field_updating_coefficients.m 1KB
define_output_parameters.m 1KB
initialize_boundary_conditions.m 1KB
共 159 条
- 1
- 2
资源评论
四散
- 粉丝: 52
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 驱动代码驱动代码驱动代码驱动代码
- SVID_20240523_141155_1.mp4
- Code for the complete guide to tkinter tutorial
- 关于百货中心供应链管理系统.zip
- SimpleFolderIcon-master 修改Unity的Project下的文件夹图标
- A python Tkinter widget to display tile based maps
- A pure Python library for adding tables to a Tkinter application
- Vector资源文件.zip
- MobaXterm-Installer
- 88-520告白(520气球).zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功