<jscript> var RectangularMap = NewGraph2D( { Id: 'RectMapCanvas', Width: '100%', Height: '50%', DrawFunc: DrawGlobeModel, AutoReset: true, AutoClear: true, AutoScalePix: true } ); var SplineTension = 0.2; function DrawGlobeModel( g ) { //g.Reset(); g.SetAngleMeasure( 'deg' ); var VpScaleArgs = true; var VpClip = false; var VpLeft = 8; var VpTop = 8; var VpRight = -8; var VpBottom = -8; g.SetViewport( VpLeft, VpTop, VpRight, VpBottom, VpScaleArgs, VpClip ); var WinXmin = 0; var WinXmax = 360; var WinYmin = 180; var WinYmax = 0; var WinWidth = 360; var WinHeight = -180; //g.SetWindow( WinXmin, WinYmin, WinXmax, WinYmax ); g.SetWindowWH( WinXmin, WinYmin, WinWidth, WinHeight ); var GDeltaX = 15; var GDeltaY = 15; var GSkipZero = true; var GSkipLimit = false; g.SetLineAttr( '#ddd', 1 ); g.Grid( GDeltaX, GDeltaY, GSkipZero, GSkipLimit ); var Mode = 1; g.SetLineAttr( '#ddd', 2 ); g.Frame( Mode ); var colors = [ 'red', 'green', 'blue', 'yellow', 'orange', 'magenta' ]; for (var c = 0; c < EarthMap.ContinentList.length; c++) { var continent = EarthMap.ContinentList[c]; g.SetAreaAttr( colors[c], 'black', 1 ); for (var l = 0; l < continent.LandList.length; l++) { var land = continent.LandList[l]; g.OpenPath(); var lmode = 2; // fill if (land.SpanPole == '') lmode += 1; // border if (land.ClosePath) lmode += 4; // close //g.Polygon( land.PolyX, land.PolyY, lmode ); g.SplineCurve( land.PolyX, land.PolyY, SplineTension, lmode ); for (var s = 0; s < land.LakeList.length; s++) { var lake = land.LakeList[s]; var mode = 3; if (lake.ClosePath) mode += 4; //g.Polygon( lake.PolyX, lake.PolyY, mode ); g.SplineCurve( lake.PolyX, lake.PolyY, SplineTension, mode ); } // handle pole areas if (land.SpanPole == 'S') { var last = land.PolyX.length-1; g.Line( land.PolyX[last], 180, land.PolyX[0], 180, true ); g.Path( lmode ); // fill with pole area g.OpenPath(); lmode = 1; // border if (land.ClosePath) lmode += 4; // close //g.Polygon( land.PolyX, land.PolyY, lmode ); g.SplineCurve( land.PolyX, land.PolyY, SplineTension, lmode ); } g.Path( lmode ); } } } </jscript>
<jscript> var GlobeModel = { HAng: 0, VAng: 0, Dist: 100, Scale: 5, Rot: 0, }; function UpdateAllGlobe() { GlobePanels.Update(); GlobeMap.Redraw(); } var GlobeMap = NewGraphX3D( { Id: 'GlobeMapCanvas', Width: '100%', Height: '66%', DrawFunc: DrawGlobeModel, AutoReset: true, AutoClear: true, AutoScalePix: true } ); var SplineTension = 0.33; function DrawGlobeModel( g ) { g.SetAngleMeasure( 'deg' ); var alpha = Math.acos( EarthMap.Radius / GlobeModel.Dist ); var scale = GlobeModel.Scale * EarthMap.Radius / Math.cos( Math.PI/2 - alpha ); g.SetCameraScale( scale ); g.SetCameraView( [0,0,0], GlobeModel.HAng, GlobeModel.VAng, GlobeModel.Dist ); var VpScaleArgs = true; var VpClip = false; var VpLeft = 8; var VpTop = 8; var VpRight = -8; var VpBottom = -8; g.SetViewport( VpLeft, VpTop, VpRight, VpBottom, VpScaleArgs, VpClip ); g.SetWindowToCameraScreen(); g.SetCameraClipping( 0.001 ); EarthMap.SetLandColor( 'Antarctica', '#ddd', '#bbb' ); g.TransRotateVect3D( [0,0,1], GlobeModel.Rot ); g.TransRotateVect3D( [1,-1,0], -23.4 ); g.TransMove3D( -1, -1, 1 ); EarthMap.Trans = g.Trans3D; g.ResetTrans3D(); var colors = [ 'red', 'green', 'blue', 'yellow', 'orange', 'magenta' ]; //EarthMap.SetContinentColor( null, colors, 'black' ); EarthMap.DrawGlobe( g ); g.SetAreaAttr( 'black', 'black' ); g.SetAlpha( 0.5 ); EarthMap.DrawGlobeShadow( g, [1,-1,0], 0 ); EarthMap.DrawGlobeGrid( g ); g.SetAlpha( 1 ); g.TransRotateVect3D( [0,0,1], GlobeModel.Rot + 180 ); g.TransRotateVect3D( [1,-1,0], 23.4 ); g.TransMove3D( -1, 1, -1 ); EarthMap.Trans = g.Trans3D; g.ResetTrans3D(); EarthMap.DrawGlobe( g ); g.SetAreaAttr( 'black', 'black' ); g.SetAlpha( 0.5 ); EarthMap.DrawGlobeShadow( g, [1,-1,0], 0 ); EarthMap.DrawGlobeGrid( g ); g.SetAlpha( 1 ); } var GlobePanels = ControlPanels.NewSliderPanel( { ModelRef: 'GlobeModel', NCols: 2, ValuePos: 'left', OnModelChange: UpdateAllGlobe, Format: 'fix0', Digits: 1, ReadOnly: false, PanelFormat: 'InputShortWidth' } ); GlobePanels.AddValueSliderField( { Name: 'HAng', Min: -180, Max: 360+180 } ); GlobePanels.AddValueSliderField( { Name: 'VAng', Min: -89.9, Max: 89.9 } ); GlobePanels.AddValueSliderField( { Name: 'Dist', Digits: 0, Min: 1.5, Max: 100 } ); GlobePanels.AddValueSliderField( { Name: 'Scale', Digits: 0, Min: 2.2, Max: 10 } ); GlobePanels.AddValueSliderField( { Name: 'Rot', Digits: 0, Min: -180, Max: 360+180 } ); GlobePanels.Render(); </jscript>
<jscript> var FlatEarthMap = NewGraph2D( { Id: 'FlatEarthCanvas', Width: '100%', Height: '100%', DrawFunc: DrawFlatEarthModel, AutoReset: false, AutoClear: false, AutoScalePix: true } ); function DrawFlatEarthModel( g ) { g.Reset(); var VpScaleArgs = true; var VpClip = false; var VpLeft = 8; var VpTop = 8; var VpRight = -8; var VpBottom = -8; g.SetViewport( VpLeft, VpTop, VpRight, VpBottom, VpScaleArgs, VpClip ); var WinXmin = -1; var WinXmax = 1; var WinYmin = -1; var WinYmax = 1; g.SetWindow( WinXmin, WinYmin, WinXmax, WinYmax ); EarthMap.Radius = 1; EarthMap.SetWaterColor( '#d3e2f5' ); EarthMap.SetLakeColor( '#d3e2f5', '#8cbe5d' ); EarthMap.SetContinentColor( null, '#c6dfaf', '#8cbe5d' ); EarthMap.SetLandColor( 'Antarctica', '#eee', '#ccc' ); EarthMap.DrawFlatEarth( g ); g.SetAlpha( 0.3 ); g.SetLineAttr( 'gray', 1 ); EarthMap.DrawFlatEarthGrid( g, 15, 15 ); g.SetLineAttr( 'black', 1 ); EarthMap.DrawFlatEarthEquator( g ); EarthMap.DrawFlatEarthBorder( g ); EarthMap.DrawFlatEarthMeridian( g ); g.SetAlpha( 1 ); } </jscript>