protected double internalForceLaw( double x, double theLatticeSpacing) { // gives the restoring force of a spring when it is stretched d units // from equilibrium return a.getValue() * (Math.exp(-b.getValue() * x) - 1) / (16 * theLatticeSpacing); }
protected double potentialEnergy( double x, double theLatticeSpacing) { // gives the potential energy of a spring that joins the nodes. d is // displacement from equilibrium return ((a.getValue() / b.getValue()) * (Math.exp(-b.getValue() * x) - 1) + a.getValue() * x) / (16 * theLatticeSpacing); // ( (a/b) (exp(-b x) -1) + a x)/(16*latticeSpacing) }
protected boolean doOK() { String error = input.checkContents(); if (error != null) { JOptionPane.showMessageDialog( this, error, I18n.tr("vmm.core.SettingsDialog.errorTitle"), JOptionPane.ERROR_MESSAGE); return false; } input.setValueFromContents(); double sep = multiplier.getValue(); if (sep != originalVal) { Prefs.putDouble("eyeSeparationMultiplier", sep); if (view.getViewStyle() == View3D.RED_GREEN_STEREO_VIEW || view.getViewStyle() == View3D.STEREOGRAPH_VIEW || view.getViewStyle() == View3D.CROSS_EYE_STEREO_VIEW) view.forceRedraw(); } if (defaultAnaglyphButton.isSelected()) Prefs.put("view3d.initialAnaglyphMode", "default"); else if (alwaysAnaglyphButton.isSelected()) { if (view.getViewStyle() == View3D.MONOCULAR_VIEW) view.setViewStyle(View3D.RED_GREEN_STEREO_VIEW); Prefs.put("view3d.initialAnaglyphMode", "always"); } else if (neverAnaglyphButton.isSelected()) { if (view.getViewStyle() == View3D.RED_GREEN_STEREO_VIEW) view.setViewStyle(View3D.MONOCULAR_VIEW); Prefs.put("view3d.initialAnaglyphMode", "never"); } if (moveObjectsForwardInAnaglyphToggle.isSelected()) { if (view.getViewStyle() == View3D.RED_GREEN_STEREO_VIEW && view.getTransform3D() != null) { double extent = Math.max( view.getTransform3D().getXmaxRequested() - view.getTransform3D().getXminRequested(), view.getTransform3D().getYmaxRequested() - view.getTransform3D().getYminRequested()); view.getTransform3D().setObjectDisplacementNormalToScreen(extent / 3); } Prefs.put("view3d.moveObjectsForwardInAnaglyph", "yes"); } else { if (view.getViewStyle() == View3D.RED_GREEN_STEREO_VIEW && view.getTransform3D() != null) view.getTransform3D().setObjectDisplacementNormalToScreen(0); Prefs.put("view3d.moveObjectsForwardInAnaglyph", "no"); } return true; }