{
  "information": {
    "Title": "Michelson_Interferometer_Model",
    "Author": [
      "Fu Kwun Hwang",
      "Loo Kang Wee"
    ],
    "AuthorLogo": [
      "./01authorfu-kwun.hwang.png",
      "./01authorlookang50x50.png"
    ],
    "Password": "",
    "Keywords": "",
    "Abstract": "",
    "Copyright": "cc-by-sa-nc",
    "Level": "",
    "Language": "",
    "Logo": [
      "./Michelsoninterferometer/Screen Shot 2018-01-31 at 5.11.01 PM (2).png"
    ],
    "RunAlways": "true",
    "ModelTab": "",
    "ModelTabTitle": "",
    "ModelName": "",
    "FixedNavigationBar": "false",
    "CSSFile": "",
    "DetectedFiles": [
      "./01authorfu-kwun.hwang.png",
      "./01authorlookang50x50.png",
      "./Michelsoninterferometer/Screen Shot 2018-01-31 at 5.11.01 PM (2).png"
    ],
    "AuxiliaryFiles": [
      ""
    ],
    "HTMLHead": "<script async=\"true\" src=\"https://www.googletagmanager.com/gtag/js?id=UA-3326007-19\"></script>\n<script>\n  window.dataLayer = window.dataLayer || [];\n  function gtag(){dataLayer.push(arguments);}\n  gtag('js', new Date());\n  gtag('config', 'UA-3326007-19');\n</script>\n<script data-ad-client=\"ca-pub-0121577198857509\" async=\"true\" src=\"https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js\"></script>",
    "SaveInXMLFormat": "false",
    "IncludeSource": "true",
    "IncludeLibrary": "true",
    "UglifyJS": "false",
    "PreviewFullModel": "false",
    "UseInterpreter": "true",
    "UseDeltaForODE": "false"
  },
  "description": {
    "pages": [
      {
        "Name": "Intro Page",
        "Active": "true",
        "Internal": "false",
        "Type": "DESCRIPTION_EDITOR",
        "Locale": "_default_",
        "Title": "Intro Page",
        "External": "false",
        "Code": "<html>\n<head></head>\n<body>\n<p>    Designed by Fu-Kwun Hwang http://www.phy.ntnu.edu.tw/ntnujava/  </p>\n</body>\n</html>"
      }
    ]
  },
  "model": {
    "variables": {
      "pages": [
        {
          "Name": "coordinate",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "range",
              "Value": "200",
              "Type": "double",
              "Dimension": "",
              "Comment": "range",
              "Domain": "public"
            },
            {
              "Name": "xmin",
              "Value": "-range/2",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "xmax",
              "Value": "range/2",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "ymin",
              "Value": "-range/2",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "ymax",
              "Value": "range/2",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "t",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "dt",
              "Value": "0.05",
              "Type": "double",
              "Dimension": "",
              "Comment": "time step",
              "Domain": "public"
            },
            {
              "Name": "size",
              "Value": "range/10",
              "Type": "double",
              "Dimension": "",
              "Comment": "particle size",
              "Domain": "public"
            },
            {
              "Name": "size2",
              "Value": "size/2",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "stroke",
              "Value": "2.0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "d",
              "Value": "size/15",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "pi",
              "Value": "Math.PI",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "npt",
              "Value": "120",
              "Type": "int",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "A",
              "Value": "ymax/15",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "A2",
              "Value": "2*A",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "wavelength",
              "Value": "xmax/8",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "k",
              "Value": "2*pi/wavelength",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "T",
              "Value": "1.0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "omega",
              "Value": "2*pi/T",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "zero",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "L",
              "Value": "A",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "r",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "basic",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "x",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "y",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "y1",
              "Value": "ymax-size2",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "x1",
              "Value": "xmax-size2",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "dxp",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "dyp",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "xin",
              "Value": "xmin/2",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "yu",
              "Value": "y1/2",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "xr",
              "Value": "x1/2",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "yo",
              "Value": "ymin/2",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "n",
              "Value": "32",
              "Type": "int",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "n2",
              "Value": "n/2",
              "Type": "int",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "data",
              "Value": "0",
              "Type": "double",
              "Dimension": "[n][n]",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "int",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "language",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "l_play",
              "Value": "\"play\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "l_pause",
              "Value": "\"pause\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "l_reset",
              "Value": "\"reset\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "l_init",
              "Value": "\"initialize\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "label",
              "Value": "\"pause\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "l_step",
              "Value": "\"step\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "\"\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "String",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            }
          ]
        }
      ]
    },
    "initialization": {
      "pages": [
        {
          "Name": "Init Page",
          "Active": "true",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "",
          "Code": "drag();"
        },
        {
          "Name": "svg",
          "Active": "true",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "",
          "Code": "var container = document.createElement('div');\nvar svggradient = '<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\"><defs>'+\n  '  <radialGradient id=\"mygrandient\" cx=\"50%\" cy=\"50%\" r=\"50%\" fx=\"50%\" fy=\"50%\">'+\n  '    <stop offset=\"0%\" style=\"stop-color:rgb(255,175,175); stop-opacity:1\" />'+\n  '    <stop offset=\"100%\" style=\"stop-color:rgb(255,175,0);stop-opacity:1\" />'+\n  '  </radialGradient>'+\n  '</defs></svg>';\ncontainer.innerHTML = svggradient;\ndocument.body.appendChild(container);\n//\"url(#mygrandient)\"\n\n"
        }
      ]
    },
    "evolution": {
      "information": {
        "FPS": "20",
        "SPD": "1",
        "RealTimeVariable": "",
        "Autoplay": "true"
      },
      "pages": [
        {
          "Name": "Evol Page",
          "Active": "true",
          "Internal": "false",
          "Type": "ODE_EDITOR",
          "Comment": "",
          "IndependentVariable": "t",
          "Increment": "dt",
          "Equations": [
            {
              "state": "",
              "rate": ""
            }
          ],
          "Method": "RungeKuttaFehlberg",
          "AbsoluteTolerance": "0.00001",
          "PreliminaryCode": {
            "Code": "",
            "Comment": "Code to be executed before rate equations are evaluated"
          },
          "EventMaximumStep": "",
          "Events": {
            "pages": []
          },
          "ZenoEffect": {
            "Code": "",
            "Comment": "",
            "StopAfterEffect": "true"
          },
          "AccelerationIndependentOfVelocity": "false",
          "ForceSynchronization": "false",
          "UseBestInterpolation": "false",
          "EstimateFirstStep": "false",
          "MemoryLength": "",
          "InternalStep": "",
          "MaximumStep": "",
          "MaximumNumberOfSteps": "10000",
          "RelativeTolerance": "",
          "DelayList": "",
          "DelayMaximum": "",
          "DelayAddDiscont": "",
          "DelayInitialCondition": {
            "Code": "",
            "Comment": ""
          },
          "DirectIncidenceMatrix": "",
          "Discontinuities": {
            "pages": []
          },
          "ErrorHandling": {
            "pages": []
          }
        }
      ]
    },
    "fixed_relations": {
      "pages": [
        {
          "Name": "FixRel Page",
          "Active": "true",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "",
          "Code": "zero=0.;\n"
        }
      ]
    },
    "custom": {
      "pages": [
        {
          "Name": "drag",
          "Active": "true",
          "Internal": "false",
          "Type": "LIBRARY_EDITOR",
          "Comment": "",
          "Code": "function drag () {\n  dxp=2*x1*k;\ndyp=2*y1*k;\n\nfor(var i=0;i<n;i++){\n for(var j=0;j<n;j++){\n  r=Math.sqrt((i-n2)*(i-n2)+(j-n2)*(j-n2));\n  data[i][j]=Math.cos(k*r+dxp-dyp)*Math.cos(k*r+dxp-dyp);\n }\n}\n}"
        },
        {
          "Name": "fullScreen",
          "Active": "true",
          "Internal": "false",
          "Type": "LIBRARY_EDITOR",
          "Comment": "",
          "Code": "//https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Using_full_screen_mode\n// does not work for iOS \n/*jslint browser:true */\nfunction toggleFullScreen() {\n  if (!document.fullscreenElement &&    // alternative standard method\n      !document.mozFullScreenElement && !document.webkitFullscreenElement && !document.msFullscreenElement ) {  // current working methods\n    if (document.documentElement.requestFullscreen) {\n      document.documentElement.requestFullscreen();\n    } else if (document.documentElement.msRequestFullscreen) {\n      document.documentElement.msRequestFullscreen();\n    } else if (document.documentElement.mozRequestFullScreen) {\n      document.documentElement.mozRequestFullScreen();\n    } else if (document.documentElement.webkitRequestFullscreen) {\n      document.documentElement.webkitRequestFullscreen();\n    }\n  } else {\n    if (document.exitFullscreen) {\n      document.exitFullscreen();\n    } else if (document.msExitFullscreen) {\n      document.msExitFullscreen();\n    } else if (document.mozCancelFullScreen) {\n      document.mozCancelFullScreen();\n    } else if (document.webkitExitFullscreen) {\n      document.webkitExitFullscreen();\n    }\n  }\n}"
        },
        {
          "Name": "playpause",
          "Active": "true",
          "Internal": "false",
          "Type": "LIBRARY_EDITOR",
          "Comment": "",
          "Code": "function playpause () {\n  if(label==l_play){\n  label=l_pause;\n  _play();\n }else{\n  label=l_play;\n  _pause();\n }\n}"
        }
      ]
    },
    "elements": {
      "list": []
    }
  },
  "view": {
    "Tree": [
      {
        "Name": "singlePlotPanel",
        "Type": "Panel",
        "Expanded": "true",
        "Properties": [],
        "Children": [
          {
            "Name": "controlPanel",
            "Type": "Panel",
            "Expanded": "true",
            "Properties": [
              {
                "name": "Font",
                "value": "\"normal bold 2vw\""
              },
              {
                "name": "Display",
                "value": "\"inline-flex\""
              }
            ],
            "Children": [
              {
                "Name": "playpause",
                "Type": "TwoStateButton",
                "Properties": [
                  {
                    "name": "OffClick",
                    "value": "_pause();"
                  },
                  {
                    "name": "TextOn",
                    "value": "\"Play\u25b6\""
                  },
                  {
                    "name": "State",
                    "value": "false"
                  },
                  {
                    "name": "TextOff",
                    "value": "\"Pause\u275a\u275a\""
                  },
                  {
                    "name": "OnClick",
                    "value": "_play();"
                  }
                ]
              },
              {
                "Name": "step",
                "Type": "Button",
                "Properties": [
                  {
                    "name": "Text",
                    "value": "\"Step\u25b6|\""
                  },
                  {
                    "name": "OnClick",
                    "value": "_step();"
                  }
                ]
              },
              {
                "Name": "reset",
                "Type": "Button",
                "Properties": [
                  {
                    "name": "Text",
                    "value": "\"Reset\u21bb\""
                  },
                  {
                    "name": "OnClick",
                    "value": "_reset();"
                  }
                ]
              }
            ]
          },
          {
            "Name": "plottingPanel",
            "Type": "PlottingPanel",
            "Expanded": "true",
            "Properties": [
              {
                "name": "Gutters",
                "value": "[0,0,0,0]"
              },
              {
                "name": "Background",
                "value": "\"url(#mygrandient)\""
              },
              {
                "name": "Enabled",
                "value": "true"
              },
              {
                "name": "OnDoubleClick",
                "value": "toggleFullScreen();"
              },
              {
                "name": "SquareAspect",
                "value": "true"
              },
              {
                "name": "MaximumY",
                "value": "ymax"
              },
              {
                "name": "MaximumX",
                "value": "xmax"
              },
              {
                "name": "GridYShow",
                "value": "false"
              },
              {
                "name": "MinimumX",
                "value": "xmin"
              },
              {
                "name": "MinimumY",
                "value": "ymin"
              },
              {
                "name": "AutoScaleY",
                "value": "false"
              },
              {
                "name": "AutoScaleX",
                "value": "false"
              },
              {
                "name": "Height",
                "value": "\"95vh\""
              },
              {
                "name": "GridXShow",
                "value": "false"
              },
              {
                "name": "Width",
                "value": "\"100%\""
              },
              {
                "name": "TRMessage",
                "value": "\"Michelson Interferometer Model\""
              },
              {
                "name": "TLMessage",
                "value": "\"Drag the position of mirrors to vary the distance\""
              }
            ],
            "Children": [
              {
                "Name": "group222",
                "Type": "Group2D",
                "Expanded": "true",
                "Properties": [
                  {
                    "name": "X",
                    "value": "0"
                  },
                  {
                    "name": "Y",
                    "value": "0"
                  }
                ],
                "Children": [
                  {
                    "Name": "text222",
                    "Type": "Text2D",
                    "Properties": [
                      {
                        "name": "X",
                        "value": "30"
                      },
                      {
                        "name": "Y",
                        "value": "20"
                      },
                      {
                        "name": "Text",
                        "value": "\"Half Silvered Mirror 1\""
                      },
                      {
                        "name": "EnabledPosition",
                        "value": "\"ENABLED_ANY\""
                      }
                    ]
                  }
                ]
              },
              {
                "Name": "halfsilvermirror",
                "Type": "Shape2D",
                "Properties": [
                  {
                    "name": "FillColor",
                    "value": "\"rgba(200,220,208,1.0)\""
                  },
                  {
                    "name": "SizeX",
                    "value": "d"
                  },
                  {
                    "name": "Rotate",
                    "value": "-pi/4"
                  },
                  {
                    "name": "RelativePosition",
                    "value": "\"CENTERED\""
                  },
                  {
                    "name": "ShapeType",
                    "value": "\"RECTANGLE\""
                  },
                  {
                    "name": "X",
                    "value": "0"
                  },
                  {
                    "name": "Y",
                    "value": "0"
                  },
                  {
                    "name": "SizeY",
                    "value": "size"
                  }
                ]
              },
              {
                "Name": "top",
                "Type": "Shape2D",
                "Properties": [
                  {
                    "name": "FillColor",
                    "value": "\"rgba(200,220,208,1.0)\""
                  },
                  {
                    "name": "Sensitivity",
                    "value": "0"
                  },
                  {
                    "name": "SizeX",
                    "value": "size"
                  },
                  {
                    "name": "RelativePosition",
                    "value": "\"SOUTH\""
                  },
                  {
                    "name": "ShapeType",
                    "value": "\"RECTANGLE\""
                  },
                  {
                    "name": "X",
                    "value": "0"
                  },
                  {
                    "name": "Y",
                    "value": "y1"
                  },
                  {
                    "name": "SizeY",
                    "value": "d"
                  },
                  {
                    "name": "EnabledPosition",
                    "value": "\"ENABLED_Y\""
                  },
                  {
                    "name": "OnDrag",
                    "value": "if(y1<size)y1=size;\ndrag();\nif(yu>y1)yu=y1;"
                  }
                ]
              },
              {
                "Name": "group22",
                "Type": "Group2D",
                "Expanded": "true",
                "Properties": [
                  {
                    "name": "X",
                    "value": "0"
                  },
                  {
                    "name": "Y",
                    "value": "y1"
                  }
                ],
                "Children": [
                  {
                    "Name": "text22",
                    "Type": "Text2D",
                    "Properties": [
                      {
                        "name": "X",
                        "value": "20"
                      },
                      {
                        "name": "Y",
                        "value": "0"
                      },
                      {
                        "name": "Text",
                        "value": "\"Mirror 1\""
                      },
                      {
                        "name": "EnabledPosition",
                        "value": "\"ENABLED_ANY\""
                      }
                    ]
                  }
                ]
              },
              {
                "Name": "shape",
                "Type": "Shape2D",
                "Properties": [
                  {
                    "name": "SizeX",
                    "value": "20"
                  },
                  {
                    "name": "ShapeType",
                    "value": "\"RECTANGLE\""
                  },
                  {
                    "name": "X",
                    "value": "0"
                  },
                  {
                    "name": "Y",
                    "value": "y1"
                  },
                  {
                    "name": "SizeY",
                    "value": "20"
                  },
                  {
                    "name": "PixelSize",
                    "value": "true"
                  },
                  {
                    "name": "DrawFill",
                    "value": "false"
                  },
                  {
                    "name": "OnDrag",
                    "value": "if(y1<size)y1=size;\ndrag();\nif(yu>y1)yu=y1;"
                  }
                ]
              },
              {
                "Name": "right",
                "Type": "Shape2D",
                "Properties": [
                  {
                    "name": "FillColor",
                    "value": "\"rgba(200,220,208,1.0)\""
                  },
                  {
                    "name": "Sensitivity",
                    "value": "0"
                  },
                  {
                    "name": "SizeX",
                    "value": "d"
                  },
                  {
                    "name": "RelativePosition",
                    "value": "\"WEST\""
                  },
                  {
                    "name": "ShapeType",
                    "value": "\"RECTANGLE\""
                  },
                  {
                    "name": "X",
                    "value": "x1"
                  },
                  {
                    "name": "Y",
                    "value": "0"
                  },
                  {
                    "name": "SizeY",
                    "value": "size"
                  },
                  {
                    "name": "EnabledPosition",
                    "value": "\"ENABLED_X\""
                  },
                  {
                    "name": "OnDrag",
                    "value": "if(x1<size)x1=size;\nif(x1<xr)xr=x1;\ndrag();"
                  }
                ]
              },
              {
                "Name": "group2",
                "Type": "Group2D",
                "Expanded": "true",
                "Properties": [
                  {
                    "name": "X",
                    "value": "x1"
                  },
                  {
                    "name": "Y",
                    "value": "0"
                  }
                ],
                "Children": [
                  {
                    "Name": "text2",
                    "Type": "Text2D",
                    "Properties": [
                      {
                        "name": "Y",
                        "value": "10"
                      },
                      {
                        "name": "Text",
                        "value": "\"Mirror 2\""
                      },
                      {
                        "name": "EnabledPosition",
                        "value": "\"ENABLED_ANY\""
                      }
                    ]
                  }
                ]
              },
              {
                "Name": "shape2",
                "Type": "Shape2D",
                "Properties": [
                  {
                    "name": "SizeX",
                    "value": "20"
                  },
                  {
                    "name": "ShapeType",
                    "value": "\"RECTANGLE\""
                  },
                  {
                    "name": "X",
                    "value": "x1"
                  },
                  {
                    "name": "Y",
                    "value": "0"
                  },
                  {
                    "name": "SizeY",
                    "value": "20"
                  },
                  {
                    "name": "PixelSize",
                    "value": "true"
                  },
                  {
                    "name": "DrawFill",
                    "value": "false"
                  },
                  {
                    "name": "OnDrag",
                    "value": "if(x1<size)x1=size;\nif(x1<xr)xr=x1;\ndrag();"
                  }
                ]
              },
              {
                "Name": "source",
                "Type": "Shape2D",
                "Properties": [
                  {
                    "name": "SizeX",
                    "value": "d*2"
                  },
                  {
                    "name": "ShapeType",
                    "value": "\"RECTANGLE\""
                  },
                  {
                    "name": "X",
                    "value": "xmin"
                  },
                  {
                    "name": "Y",
                    "value": "0"
                  },
                  {
                    "name": "SizeY",
                    "value": "d*2"
                  }
                ]
              },
              {
                "Name": "group",
                "Type": "Group2D",
                "Expanded": "true",
                "Properties": [
                  {
                    "name": "X",
                    "value": "xmin"
                  },
                  {
                    "name": "Y",
                    "value": "0"
                  }
                ],
                "Children": [
                  {
                    "Name": "text",
                    "Type": "Text2D",
                    "Properties": [
                      {
                        "name": "Y",
                        "value": "10"
                      },
                      {
                        "name": "Text",
                        "value": "\"Source\""
                      },
                      {
                        "name": "EnabledPosition",
                        "value": "\"ENABLED_ANY\""
                      }
                    ]
                  }
                ]
              },
              {
                "Name": "AnalyticCurvein",
                "Type": "AnalyticCurve2D",
                "Properties": [
                  {
                    "name": "FunctionY",
                    "value": "\"\"+A2.toFixed(3)+\"*sin(\"+k.toFixed(3)+\"*x-\"+omega.toFixed(3)+\"*\"+t.toFixed(3)+\")\""
                  },
                  {
                    "name": "FunctionX",
                    "value": "\"x\""
                  },
                  {
                    "name": "NumPoints",
                    "value": "npt"
                  },
                  {
                    "name": "Minimum",
                    "value": "xmin"
                  },
                  {
                    "name": "Maximum",
                    "value": "0"
                  },
                  {
                    "name": "Variable",
                    "value": "\"x\""
                  },
                  {
                    "name": "LineWidth",
                    "value": "2"
                  }
                ]
              },
              {
                "Name": "analyticCurvey1",
                "Type": "AnalyticCurve2D",
                "Properties": [
                  {
                    "name": "FunctionY",
                    "value": "\"x\""
                  },
                  {
                    "name": "FunctionX",
                    "value": "\"\"+A.toFixed(3)+\"*sin(\"+k.toFixed(3)+\"*x-\"+omega.toFixed(3)+\"*\"+t.toFixed(3)+\")\""
                  },
                  {
                    "name": "NumPoints",
                    "value": "npt"
                  },
                  {
                    "name": "Minimum",
                    "value": "0"
                  },
                  {
                    "name": "Maximum",
                    "value": "y1"
                  },
                  {
                    "name": "Variable",
                    "value": "\"x\""
                  },
                  {
                    "name": "Visibility",
                    "value": "true"
                  },
                  {
                    "name": "LineWidth",
                    "value": "2"
                  }
                ]
              },
              {
                "Name": "analyticCurvey2",
                "Type": "AnalyticCurve2D",
                "Properties": [
                  {
                    "name": "FunctionY",
                    "value": "\"x\""
                  },
                  {
                    "name": "FunctionX",
                    "value": "\"\"+A.toFixed(3)+\"*sin(\"+k.toFixed(3)+\"*(2*\"+y1.toFixed(3)+\"-x)-\"+omega.toFixed(3)+\"*\"+t.toFixed(3)+\"+\"+pi+\")\" "
                  },
                  {
                    "name": "NumPoints",
                    "value": "npt"
                  },
                  {
                    "name": "Minimum",
                    "value": "0"
                  },
                  {
                    "name": "Maximum",
                    "value": "y1"
                  },
                  {
                    "name": "Variable",
                    "value": "\"x\""
                  },
                  {
                    "name": "LineColor",
                    "value": "\"Green\""
                  },
                  {
                    "name": "LineWidth",
                    "value": "2"
                  }
                ]
              },
              {
                "Name": "analyticCurvex1",
                "Type": "AnalyticCurve2D",
                "Properties": [
                  {
                    "name": "FunctionY",
                    "value": "\"\"+A.toFixed(3)+\"*sin(\"+k.toFixed(3)+\"*x-\"+omega.toFixed(3)+\"*\"+t.toFixed(3)+\")\""
                  },
                  {
                    "name": "FunctionX",
                    "value": "\"x\""
                  },
                  {
                    "name": "NumPoints",
                    "value": "npt"
                  },
                  {
                    "name": "Minimum",
                    "value": "0"
                  },
                  {
                    "name": "Maximum",
                    "value": "x1"
                  },
                  {
                    "name": "Variable",
                    "value": "\"x\""
                  },
                  {
                    "name": "LineWidth",
                    "value": "2"
                  }
                ]
              },
              {
                "Name": "analyticCurvex2",
                "Type": "AnalyticCurve2D",
                "Properties": [
                  {
                    "name": "FunctionY",
                    "value": "\"\"+A.toFixed(3)+\"*sin(\"+k.toFixed(3)+\"*(2*\"+y1.toFixed(3)+\"-x)-\"+omega.toFixed(3)+\"*\"+t.toFixed(3)+\"+\"+pi.toFixed(3)+\")\" "
                  },
                  {
                    "name": "FunctionX",
                    "value": "\"x\""
                  },
                  {
                    "name": "Minimum",
                    "value": "0"
                  },
                  {
                    "name": "NumPoints",
                    "value": "npt"
                  },
                  {
                    "name": "Maximum",
                    "value": "x1"
                  },
                  {
                    "name": "Variable",
                    "value": "\"x\""
                  },
                  {
                    "name": "LineColor",
                    "value": "\"Green\""
                  },
                  {
                    "name": "LineWidth",
                    "value": "2"
                  }
                ]
              },
              {
                "Name": "analyticCurveOut",
                "Type": "AnalyticCurve2D",
                "Properties": [
                  {
                    "name": "FunctionY",
                    "value": "\"x\""
                  },
                  {
                    "name": "FunctionX",
                    "value": "\"\"+A.toFixed(3)+\"*sin(\"+k.toFixed(3)+\"*(2*\"+x1.toFixed(3)+\"-x)-\"+omega.toFixed(3)+\"*\"+t.toFixed(3)+\")+\"+A.toFixed(3)+\"*sin(\"+k.toFixed(3)+\"*(2*\"+y1.toFixed(3)+\"-x)-\"+omega.toFixed(3)+\"*\"+t.toFixed(3)+\")\""
                  },
                  {
                    "name": "NumPoints",
                    "value": "npt"
                  },
                  {
                    "name": "Minimum",
                    "value": "ymin"
                  },
                  {
                    "name": "Maximum",
                    "value": "0"
                  },
                  {
                    "name": "Variable",
                    "value": "\"x\""
                  },
                  {
                    "name": "LineColor",
                    "value": "\"blue\""
                  },
                  {
                    "name": "LineWidth",
                    "value": "2"
                  }
                ]
              },
              {
                "Name": "ParticleinSource",
                "Type": "Shape2D",
                "Properties": [
                  {
                    "name": "FillColor",
                    "value": "\"Black\""
                  },
                  {
                    "name": "SizeX",
                    "value": "d"
                  },
                  {
                    "name": "ShapeType",
                    "value": "\"RECTANGLE\""
                  },
                  {
                    "name": "X",
                    "value": "xin"
                  },
                  {
                    "name": "LineColor",
                    "value": "\"Black\""
                  },
                  {
                    "name": "Y",
                    "value": "0"
                  },
                  {
                    "name": "SizeY",
                    "value": "d"
                  },
                  {
                    "name": "DrawFill",
                    "value": "false"
                  },
                  {
                    "name": "OnDrag",
                    "value": "if(xin>0)xin=0;"
                  },
                  {
                    "name": "EnabledPosition",
                    "value": "\"ENABLED_X\""
                  }
                ]
              },
              {
                "Name": "ArrowinSource",
                "Type": "Arrow2D",
                "Properties": [
                  {
                    "name": "ResizesGroup",
                    "value": "false"
                  },
                  {
                    "name": "SizeX",
                    "value": "A2*Math.cos(k*xin-omega*t)"
                  },
                  {
                    "name": "X",
                    "value": "xin"
                  },
                  {
                    "name": "LineColor",
                    "value": "\"Black\""
                  },
                  {
                    "name": "Y",
                    "value": "ymax/4"
                  },
                  {
                    "name": "SizeY",
                    "value": "A2*Math.sin(k*xin-omega*t)"
                  },
                  {
                    "name": "LineWidth",
                    "value": "2"
                  }
                ]
              },
              {
                "Name": "Particletop",
                "Type": "Shape2D",
                "Properties": [
                  {
                    "name": "FillColor",
                    "value": "\"green\""
                  },
                  {
                    "name": "SizeX",
                    "value": "d"
                  },
                  {
                    "name": "ShapeType",
                    "value": "\"RECTANGLE\""
                  },
                  {
                    "name": "X",
                    "value": "0"
                  },
                  {
                    "name": "LineColor",
                    "value": "\"green\""
                  },
                  {
                    "name": "Y",
                    "value": "yu"
                  },
                  {
                    "name": "SizeY",
                    "value": "d"
                  },
                  {
                    "name": "EnabledPosition",
                    "value": "\"ENABLED_Y\""
                  },
                  {
                    "name": "OnDrag",
                    "value": "if(yu>y1)yu=y1;\nelse if(yu<0)yu=0;"
                  }
                ]
              },
              {
                "Name": "Arrowtop",
                "Type": "Arrow2D",
                "Properties": [
                  {
                    "name": "SizeX",
                    "value": "L*Math.cos(k*yu-omega*t+pi)"
                  },
                  {
                    "name": "X",
                    "value": "xmin/4"
                  },
                  {
                    "name": "LineColor",
                    "value": "\"Black\""
                  },
                  {
                    "name": "Y",
                    "value": "yu"
                  },
                  {
                    "name": "SizeY",
                    "value": "L*Math.sin(k*yu-omega*t+pi)"
                  },
                  {
                    "name": "LineWidth",
                    "value": "2"
                  }
                ]
              },
              {
                "Name": "Arrowtopd",
                "Type": "Arrow2D",
                "Properties": [
                  {
                    "name": "SizeX",
                    "value": "L*Math.cos(k*(2*y1-yu)-omega*t)"
                  },
                  {
                    "name": "X",
                    "value": "xmax/4"
                  },
                  {
                    "name": "LineColor",
                    "value": "\"green\""
                  },
                  {
                    "name": "Y",
                    "value": "yu"
                  },
                  {
                    "name": "SizeY",
                    "value": "L*Math.sin(k*(2*y1-yu)-omega*t)"
                  },
                  {
                    "name": "LineWidth",
                    "value": "2"
                  }
                ]
              },
              {
                "Name": "Particleright",
                "Type": "Shape2D",
                "Properties": [
                  {
                    "name": "FillColor",
                    "value": "\"green\""
                  },
                  {
                    "name": "SizeX",
                    "value": "d"
                  },
                  {
                    "name": "ShapeType",
                    "value": "\"RECTANGLE\""
                  },
                  {
                    "name": "X",
                    "value": "xr"
                  },
                  {
                    "name": "LineColor",
                    "value": "\"green\""
                  },
                  {
                    "name": "Y",
                    "value": "0"
                  },
                  {
                    "name": "SizeY",
                    "value": "d"
                  },
                  {
                    "name": "EnabledPosition",
                    "value": "\"ENABLED_X\""
                  },
                  {
                    "name": "OnDrag",
                    "value": "if(xr>x1)xr=x1;\nelse if(xr<0)xr=0;"
                  }
                ]
              },
              {
                "Name": "Arrowrightx",
                "Type": "Arrow2D",
                "Properties": [
                  {
                    "name": "SizeX",
                    "value": "L*Math.cos(k*xr-omega*t)"
                  },
                  {
                    "name": "X",
                    "value": "xr"
                  },
                  {
                    "name": "LineColor",
                    "value": "\"black\""
                  },
                  {
                    "name": "Y",
                    "value": "ymax/4"
                  },
                  {
                    "name": "SizeY",
                    "value": "L*Math.sin(k*xr-omega*t)"
                  },
                  {
                    "name": "LineWidth",
                    "value": "2"
                  }
                ]
              },
              {
                "Name": "Arrowrightl",
                "Type": "Arrow2D",
                "Properties": [
                  {
                    "name": "SizeX",
                    "value": "L*Math.cos(k*(2*x1-xr)-omega*t+pi)"
                  },
                  {
                    "name": "X",
                    "value": "xr"
                  },
                  {
                    "name": "LineColor",
                    "value": "\"green\""
                  },
                  {
                    "name": "Y",
                    "value": "ymin/4"
                  },
                  {
                    "name": "SizeY",
                    "value": "L*Math.sin(k*(2*x1-xr)-omega*t+pi)"
                  },
                  {
                    "name": "LineWidth",
                    "value": "2"
                  }
                ]
              },
              {
                "Name": "group23",
                "Type": "Group2D",
                "Expanded": "true",
                "Properties": [
                  {
                    "name": "X",
                    "value": "0"
                  },
                  {
                    "name": "Y",
                    "value": "yo"
                  }
                ],
                "Children": [
                  {
                    "Name": "text23",
                    "Type": "Text2D",
                    "Properties": [
                      {
                        "name": "X",
                        "value": "10"
                      },
                      {
                        "name": "Y",
                        "value": "0"
                      },
                      {
                        "name": "Text",
                        "value": "\"Detector\""
                      },
                      {
                        "name": "EnabledPosition",
                        "value": "\"ENABLED_ANY\""
                      }
                    ]
                  }
                ]
              },
              {
                "Name": "Particlebottom",
                "Type": "Shape2D",
                "Properties": [
                  {
                    "name": "SizeX",
                    "value": "d"
                  },
                  {
                    "name": "ShapeType",
                    "value": "\"RECTANGLE\""
                  },
                  {
                    "name": "X",
                    "value": "0"
                  },
                  {
                    "name": "LineColor",
                    "value": "\"blue\""
                  },
                  {
                    "name": "Y",
                    "value": "yo"
                  },
                  {
                    "name": "SizeY",
                    "value": "d"
                  },
                  {
                    "name": "DrawFill",
                    "value": "false"
                  },
                  {
                    "name": "OnDrag",
                    "value": "if(yo>0)yo=0;"
                  },
                  {
                    "name": "EnabledPosition",
                    "value": "\"ENABLED_Y\""
                  }
                ]
              },
              {
                "Name": "arrowbottom",
                "Type": "Arrow2D",
                "Properties": [
                  {
                    "name": "SizeX",
                    "value": "L*2*Math.cos(dxp-dyp)*Math.cos(k*(x1+y1-yu/2)-omega*t)"
                  },
                  {
                    "name": "X",
                    "value": "xmax/4"
                  },
                  {
                    "name": "LineColor",
                    "value": "\"blue\""
                  },
                  {
                    "name": "Y",
                    "value": "yo"
                  },
                  {
                    "name": "SizeY",
                    "value": "L*2*Math.cos(dxp-dyp)*Math.sin(k*(x1+y1-yu/2)-omega*t)"
                  },
                  {
                    "name": "LineWidth",
                    "value": "2"
                  }
                ]
              }
            ]
          },
          {
            "Name": "html",
            "Type": "Panel",
            "Properties": [
              {
                "name": "Html",
                "value": "<h2>The Michelson Interferometer</h2>\n<p>The Michelson Interferometer is one of the most important devices in the history of physics, playing a central role in experiments that revolutionized our understanding of light, space, and time. Today, you can explore how this device works using a powerful Michelson Interferometer Simulation Applet, built in JavaScript and running on HTML5. This interactive tool helps visualize how light interference patterns are formed and how small differences in distance can lead to profound changes in the behavior of light.</p>\n\n<h3>What is the Michelson Interferometer?</h3>\n<p>The Michelson Interferometer was invented by Albert A. Michelson in the late 19th century and is known for its use in the famous Michelson-Morley experiment. The device splits a beam of light into two paths, reflects the beams back, and then recombines them. As the two light beams travel different distances, they interfere with each other when they meet again, creating a pattern of bright and dark fringes.</p>\n\n<p>These interference patterns depend on:</p>\n<ul>\n  <li>The wavelength of the light used,</li>\n  <li>The difference in the lengths of the two paths traveled by the beams, and</li>\n  <li>The angle of the mirrors in the setup.</li>\n</ul>\n\n<h3>How the Simulation Works</h3>\n<p>This Michelson Interferometer JavaScript Simulation Applet allows users to interact with a virtual interferometer, replicating real-world experiments in a controlled digital environment.</p>\n\n<p>Key features of the applet include:</p>\n<ul>\n  <li><strong>Light Source:</strong> A source of coherent light, which is represented by sinusoidal waves. The light moves from the source and is split by a half-silvered mirror.</li>\n  <li><strong>Half-Silvered Mirror:</strong> This element splits the light beam into two paths, with half the light passing through and the other half reflecting at a 90-degree angle.</li>\n  <li><strong>Mirrors:</strong> The two arms of the interferometer reflect light back using two mirrors (Mirror 1 and Mirror 2). These mirrors can be adjusted to change the distance the light travels.</li>\n  <li><strong>Detector:</strong> The detector captures the recombined light waves, and based on the phase difference between the two beams, an interference pattern is formed.</li>\n</ul>\n\n<h3>Interactive Features</h3>\n<p>The applet offers various controls and parameters that users can adjust in real-time to see how different configurations affect the interference pattern:</p>\n<ul>\n  <li><strong>Position of the mirrors:</strong> Adjusting the positions of the mirrors allows users to explore how changing the path length of one of the beams affects the resulting interference pattern.</li>\n  <li><strong>Wave properties:</strong> The applet uses a visual representation of light as waves, making it easy to see how the phase difference between the two beams leads to constructive and destructive interference.</li>\n  <li><strong>Real-time animation:</strong> The applet can be paused, stepped forward, or reset, allowing users to slow down and analyze specific stages of the interference process.</li>\n</ul>"
              }
            ]
          }
        ]
      }
    ],
    "RootProperties": []
  },
  "metadata": {
    "APP": "WebEJS",
    "CreatedWith": "WebEJS : The web version of Easy JavaScript Simulations",
    "MoreInfo": "WebEJS 1.1",
    "version": "https://www.um.es/fem/wikis/webejs/"
  }
}