问题描述
之前我们提到过,二维力学实验仿真中存在一个问题:二维力学引擎中,质量 = 密度 * 面积。而真实世界中,质量 = 密度 * 体积。虽然二维世界的物理规律也是完备的,但是学生学习过程中还是以3维世界为准的。
之前我们提到过,二维力学实验仿真中存在一个问题:二维力学引擎中,质量 = 密度 * 面积。而真实世界中,质量 = 密度 * 体积。虽然二维世界的物理规律也是完备的,但是学生学习过程中还是以3维世界为准的。
我们基于canvas做互动课件开发,本质上更接近游戏开发,而非前端(指DOM)开发。由于当前设备的分辨率种类太多,而且用户可以任意改变浏览器窗口尺寸,所以我们必须要做自适应。为了显示不变形,我们一定是进行等比缩放。
力学器材相对于电学器材要复杂。电学中的引擎只负责电学数据计算,不涉及到器材的任何属性(包括几何属性和电学属性)的改变,保存恢复不用考虑引擎的影响。而力学器材,器材的几何属性是靠引擎计算得出的,器材与器材之间的关系也是靠引擎中的约束来维护的,器材的物理属性也可能会影响器材的状态,需要考虑的比较多,实现起来更复杂。
实验开发中,我们经常要用到将两个器材(或者器材的部件)绑定到一起,并且能够解绑。比如电学中,导线的端点绑定到接线柱;家庭电路中,插头插到插座上;光学中,透镜放到光具座上;热学或者化学中,瓶盖绑定瓶子,玻璃导管放到试管中,等等。
之前我们已经讨论过用循环双向链表来记录元件端点之间的连接关系,在进行计算求解之前,我们还要做一些处理,把连接到一起的端点看做是一个点,如果元件的电阻是0的话,元件的两个端点也要看做是一个点,最后还要找到所有的连通子图,每一个连通子图单独进行计算。