本站所有资源均为高质量资源,各种姿势下载。
exportgraphics功能,支持将当前三维视图导出为高分辨率的PNG、JPG位图或EPS矢量图。uifigure和uiaxes性能)。main 并回车即可启动应用,无需额外参数。该项目完全包含在 main.m 文件中,采用单一入口函数配合嵌套函数的架构。通过共享的 app 结构体在不同回调函数间传递数据(app.Data)和状态(app.State)。
uifigure 和 uigridlayout 进行布局。
uiaxes 用于三维绘图,关闭了默认的坐标轴网格,并配置了 infinite 光源;右侧放置控制面板,包含文件、扩胞、视图、信息和导出五个功能区。uiaxes 的交互模式(旋转、缩放、平移),并禁用了默认的数据提示(DataTip),以便接管鼠标点击事件用于自定义的距离测量。app.Data 中,包含晶格矩阵(Lattice)和原子信息表(Element, Frac)。
renderScene 函数中实现。通过三重循环遍历 0 到 SuperCell-1 的整数位移,将位移量加到原始的分数坐标上。Cartesian = Fractional * Lattice。app.Gui.CurrentRenderData 中。renderScene 函数,采用“清空-重绘”策略。
sphere 函数生成球体网格数据。代码实现了基于原子类型的批量处理:先获取唯一元素列表,针对每种元素获取对应的半径和颜色,然后利用 surface 函数在指定坐标处绘制球体。为了实现交互,每个原子的 surface 对象都绑定了 ButtonDownFcn 回调,并将索引存储在 Tag 属性中。pdist 函数计算所有原子间的欧氏距离,通过 squareform 转换为矩阵。
* 阈值筛选:根据用户设定的 BondCutoff 筛选出符合成键条件的原子对。
* 几何生成:对于每一根键,代码通过计算两点间的向量差,结合 cylinder 函数生成的圆柱网格,通过旋转矩阵变换将标准圆柱对齐到两个原子之间。onAtomClick。函数通过读取被点击对象的 Tag 属性获取原子在数据表中的索引。app.State.SelectedAtoms 维护当前选中的原子队列。norm 函数计算两个笛卡尔坐标向量差的模(即距离),并将结果输出到文本区域。onLoadFile 根据文件后缀名(.cif 或 .vasp/.POSCAR)分流到相应的解析函数(parseCIF 或 parsePOSCAR)。try-catch 块,若解析过程出错或解析后原子数据为空,会弹出 uialert 警告窗口提示用户,防止程序崩溃。