Skip to content

Latest commit

 

History

History
23 lines (17 loc) · 1004 Bytes

README.md

File metadata and controls

23 lines (17 loc) · 1004 Bytes

LiverSimulation

一个粗制滥造的肝脏变形仿真……

基于质点弹簧模型

加入了一个简陋的质点捕获与拖拽逻辑:

  • 遍历质点放入稀疏平面网格中(z / w 值较小的会被覆盖,OpenGL 为右手坐标系)
  • 点击鼠标时捕获鼠标所在网格中的质点
  • 拖拽时强行改变该质点的坐标

难度与代码量都不大,核心逻辑在 Spring 类与 MouseControl 类中

记得开 o2 优化跑…… 否则很卡,当然这都是我的锅,stl 用的很随意,代码还有很大的优化空间

可优化的点:

  1. 网格 vector 可以改 array
  2. translate 矩阵可以降低更新频率
  3. fill 可以改 memset
  4. 弹簧常数项可以进一步优化
  5. 可以收集顶点原始位置放入 unordered_map,减少更新的运算量
  6. 更多愚蠢的我没有注意到的地方……

(吐槽一下带状疱疹实在是太疼了,几乎难以集中精力思考,这些代码身体好点后我会做优化的,一定?大概吧)