1. deirdre

    deirdre Moderator Staff Member

    That would be nice. Metabunk is big on actual evidence.
     
    • Like Like x 2
  2. Trailblazer

    Trailblazer Moderator Staff Member

    That would be great. Can you post it? If the P900 records GPS co-ordinates in the metadata then could you post that too? (Metadata gets stripped out by the forum software).

    From the curve calculator, Santa Barbara island should only be visible if you are higher than about 100ft above sea level at that distance, barring any unusual refraction effects.
     
    • Like Like x 1
  3. Mick West

    Mick West Administrator Staff Member

    You can email the original pic to metabunk@gmail.com so I can extract the most detail from it. It will get resampled if you just post it here. But feel free to do both.
     
  4. Mick West

    Mick West Administrator Staff Member

    Here what Google Earth thinks you would see standing on the beach below the Trump National Golf Course. The sea level is marked by a thin line, and does not account for refraction.
    20170309-093206-10ie4.

    I'm post this mostly so you can tell if you are looking in the right direction. Several times these things turn out to be misidentified islands. Although in this case that seems very unlikely.
     
    • Like Like x 1
  5. Henk001

    Henk001 Active Member

    I assume you were standing on the beach, so about 2m above sealevel. without refraction, the hidden height would be about 1050 ft. But there always is a certain amount of refraction, unfortunately rather variable. As a rule of thumb you can assume that the horizon is on average roughly 7% further away than without refraction.
    http://mathscinotes.com/2013/08/distance-to-the-horizon-assuming-refraction/
    Recalculating the hidden height I get about 890 ft. Still more than 634ft, but at that particular day the refraction effect could have been stronger (larger temperature gradient f.i.)
     
    • Like Like x 1
  6. Philippe

    Philippe New Member

    I already know all that I live there. But you still didn't answer my question as to why I can see the whole island I didn't say partially. I think what's going on here is you are mistaking curvature for perspective. In perspective you can loose your target with naked eye and bring it back in focus with powerful lenses. With curvature/declination it's not possible.
     
    • Funny Funny x 1
  7. Trailblazer

    Trailblazer Moderator Staff Member

    Perspective doesn't change the shape of objects, or hide parts of it: it just makes the whole thing smaller. The curve of the Earth progressively hides things from the bottom upwards, like this (comparison made from @Mick West's photos in post #2)

    high. low.


    Perspective cannot do that, and you cannot "bring back" hidden objects by using a stronger lens. That is a common Flat Earth misconception.

    Can you show us the picture you are referring to, so we can see the island?
     
    Last edited: Mar 9, 2017
    • Like Like x 2
  8. Mick West

    Mick West Administrator Staff Member

    Show us the photo. email it to metabunk@gmail.com
     
  9. Spectrar Ghost

    Spectrar Ghost Senior Member

    FYI, "declination" is the angle of a star away from the plane of the equator. What you keep calling declination is just hidden height.
     
  10. Bass In Your Face

    Bass In Your Face Active Member

    This thread seems the best place to put this.. I hope? It's a JavaScript program involving flat/sphere visual comparisons, you can change any of the variables.. its quite useful. It has some informational models regarding what the horizon is, and mentions the Theodolite app as well.

    (Thanks to DarkStar for finding this)

    http://walter.bislins.ch/blog/index.asp?page=Flat-Earth:+Finding+the+curvature+of+the+Earth

    From source:

    [​IMG]
    [​IMG]

    This is a link to the JavaScript code:

    http://walter.bislins.ch/blog/index.asp?page=JavaScript:+Simulation+of+the+Eearths+Curvature

    Code:
    #INCLUDE JsGraphX3D.inc
    #INCLUDE ControlPanel.inc
    
    <jscript>
    
    function EarthModel() {
    
      this.rEarth = 6371000;
      this.rFEarth = this.rEarth * Math.PI / 2;
      this.nLines = 45;
      this.showModel = 1; // 1 -> globe, 2 -> flat, 3 -> both
      this.showGrid = 1; // 0 -> none, 1 -> globe, 3 -> both
      this.showFlatHorizon = false;
      this.showEquator = false;
      this.showEyeLevel = true;
      this.deviceRatio = 3 / 2; // width / height of device screen
      this.sceneWidth = 0;
      this.sceneHeight = 0;
    
      this.HeightSlider = 0;
      this.HeightSliderLast = 0;
      this.HeightRange = 0; // 0 -> log, > 0 -> linear
      this.Height = 10000;
    
      this.ViewAngle = 60;  // viewAngle in deg
      this.ViewAngleField = 60;
      this.ViewAngleSlider = 0;
      this.ViewAngleSliderLast = 0;
      this.Roll = 0;
      this.Nick = 0;
      this.FocalLength = 0;
      this.FocalLengthField = 0;
      this.FocalLengthSlider = 0;
      this.FocalLengthSliderLast = 0;
    
      this.rDisk = 0;		  // d
      this.dHorizon = 0;	   // s
      this.zDisk = 0;		  // p
      this.hDisk = 0;		  // R - b
      this.hDip = 0;		   // b
      this.aDip = 0;		   // alpha
      this.aEarth = 0;		 // 180 - 2 * alpha
      this.dView = 0;		  // v
      this.aDelta = 0;		 // aDip / nLines
      this.posEarth = [ 0, 0, -this.rEarth ];
      this.camViewAngle = 0.1; // rad
      this.camPos = [ 0, 0, 0 ];
      this.camUp = [ 0, 0, 1 ];
      this.camViewCenter = [ 0, 1, 0 ];
      this.camSceneSize = 1;
    
      this.drawBackGGrid = false;
      this.drawBackFGrid = false;
      this.drawBackFE = false;
    
      this.Update();
    }
    
    EarthModel.prototype.Update = function() {
      var pi180 = Math.PI;
      var pi90 = pi180 / 2;
      var pi45 = pi180 / 4;
      var toRad  = pi180 / 180;
    
      if ( this.rEarth < 100000 ) this.rEarth = 100000;
      this.rFEarth = this.rEarth * Math.PI / 2;
    
      // handle height changes
      if ( this.HeightSliderLast != this.HeightSlider ) {
    	if ( this.HeightRange == 0 ) {
    	  this.Height = Math.pow( 10, 1 + 8 * this.HeightSlider );
    	} else {
    	  this.Height = this.HeightRange * this.HeightSlider;
    	}
      }
      if ( this.Height < 0.1 ) this.Height = 0.1;
      if ( this.Height > 1000000000 ) this.Height = 1000000000;
      if ( this.HeightRange == 0 ) {
    	this.HeightSlider = ( Math.log10( this.Height ) - 1 ) / 8;
      } else {
    	this.HeightSlider = this.Height / this.HeightRange;
      }
      this.HeightSliderLast = this.HeightSlider;
    
      // handle ViewAngle and FocalLength changes
      if ( this.FocalLengthSlider != this.FocalLengthSliderLast ) {
    	this.ViewAngle = 2 * Math.atan( 43.2 / 2 / this.FocalLengthSlider ) / toRad;
      } else if ( this.FocalLengthField != this.FocalLength ) {
    	this.ViewAngle = 2 * Math.atan( 43.2 / 2 / this.FocalLengthField ) / toRad;
      } else if ( this.ViewAngleSlider != this.ViewAngleSliderLast ) {
    	this.ViewAngle = this.ViewAngleSlider;
      } else if ( this.ViewAngleField != this.ViewAngle ) {
    	this.ViewAngle = this.ViewAngleField;
      }
      if ( this.ViewAngle < 0.1 ) this.ViewAngle = 0.1;
      if ( this.ViewAngle > 160 ) this.ViewAngle = 160;
      this.camViewAngle = this.ViewAngle * toRad;
      this.FocalLength = 43.2 / ( 2 * Math.tan( this.camViewAngle / 2 ) );
      this.FocalLengthField = this.FocalLength;
      this.FocalLengthSlider = this.FocalLength;
      this.FocalLengthSliderLast = this.FocalLengthSlider;
      this.ViewAngleField = this.ViewAngle;
      this.ViewAngleSlider = this.ViewAngle;
      this.ViewAngleSliderLast = this.ViewAngle;
    
      // compute diverse values
      this.aDip = Math.acos( this.rEarth / (this.rEarth + this.Height) );
      this.aEarth = pi180 - 2 * this.aDip;
      this.rDisk = this.rEarth * Math.sin( this.aDip );
      this.dHorizon = this.rEarth * this.aDip;
      this.hDisk = this.rEarth * Math.cos( this.aDip );
      this.hDip = this.rEarth - this.hDisk;
      this.dView = ( this.Height + this.rEarth ) * Math.sin( this.aDip );
      this.aDelta = this.aDip / this.nLines;
      this.dDelta = this.showModel & 1 ? this.aDelta * this.rEarth : 0;
      this.posEarth = [ 0, 0, -(this.rEarth + this.Height) ];
      this.zDisk = (this.rEarth + this.Height) - ( this.rEarth * Math.cos( this.aDip ) );
    
      // compute camViewCenter from panning
      if ( Math.abs( this.Nick ) < 30 / 30 ) this.Nick = 0;
      if ( Math.abs( this.Roll ) < 30 / 30 ) this.Roll = 0;
      var dvc = Math.sqrt( this.rDisk * this.rDisk + this.zDisk * this.zDisk );
      var avc = this.aDip - this.Nick * toRad;
      if ( avc > pi90 ) avc = pi90;
      if ( avc < 0 ) avc = 0;
      var yvc = dvc * Math.cos( avc );
      var zvc = - dvc * Math.sin( avc );
      this.camViewCenter = [ 0, yvc, zvc ];
    
      // compute camera up and pos
      var a = this.Roll * toRad;
      this.camUp = [ Math.sin(a), 0.7, Math.cos(a) ];
      this.camPos = [ 0, 0, 0 ];
    
      // compute scene size taking device ratio into account
      var vpRatio = 3 / 2;
      var diag = 2 * this.dView * Math.tan( this.camViewAngle / 2 );
      this.sceneHeight = diag / Math.sqrt( 1 + this.deviceRatio*this.deviceRatio );
      this.sceneWidth = this.deviceRatio * this.sceneHeight;
      if ( this.deviceRatio > vpRatio ) {
    	// device is wider then viewport
    	this.camSceneSize = this.sceneWidth / vpRatio;
      } else {
    	this.camSceneSize = this.sceneHeight;
      }
    
      // looking down
      var vpan = this.Nick * toRad / 2;
      this.drawBackGGrid = this.aDip > pi45 + vpan;
      this.drawBackFGrid = Math.atan( this.Height / this.rDisk ) > pi45 + vpan;
      this.drawBackFE	= Math.atan( this.Height / (2 * this.rEarth) ) > pi45 + vpan;
    }
    
    var Model = new EarthModel();
    
    function UpdateAll() {
      Model.Update();
      ControlPanels.Update();
      graph.Redraw();
    }
    
    var graph = NewGraphX3D( {
      Id: 'JsGraph1',
      Width: '100%',
      Height: '66.67%',
      DrawFunc: DrawModel,
      AutoReset: true,
      AutoClear: true,
      AutoScalePix: true
    } );
    
    function DrawModel( g ) {
    
      g.SetAngleMeasure( 'rad' );
      g.SetViewport( 0, 1, -0.5, -2 );
      g.SetGraphClipping( true, '', 0 );
      g.SetWindowToCameraScreen();
    
      g.SetCamera( {
    	SceneSize: Model.camSceneSize,
    	CamPos: Model.camPos,
    	CamUp: Model.camUp,
    	CamViewCenter: Model.camViewCenter,
      } );
      g.SetCameraZoom( 1 );
    
      g.SetLineAttr( 'black', 2 );
      var xDir = JsgVect3.Mult( g.Camera.ViewDir, g.Camera.CamUp );
      var yDir = JsgVect3.Mult( g.Camera.ViewDir, xDir );
      g.SetPlane( g.Camera.CamViewCenter, xDir, yDir, true );
      g.RectOnPlane( -Model.sceneWidth/2, -Model.sceneHeight/2, Model.sceneWidth/2, Model.sceneHeight/2, 1 );
    
      // Globe Earth
    
      if ( Model.showModel & 1 ) {
    
    	var alpha = 0.6 - 0.5 * (Math.log10( Model.Height ) / 9);
    	g.SetAlpha( alpha );
    	g.SetLineAttr( 'blue', 1 );
    
    	// show globe grid
    	if ( Model.showGrid & 1 ) {
    
    	  // latitude lines
    	  var latMax = Model.aDip;
    	  var latStart = -( Math.floor( latMax / Model.aDelta ) * Model.aDelta );
    	  if (!Model.drawBackGGrid) latStart = 0;
    	  for ( var lat = latStart; lat < latMax; lat += Model.aDelta ) {
    		var dLatPlaneDisk = Model.hDisk / Math.cos( lat );
    		var longMax = Math.acos( dLatPlaneDisk / Model.rEarth );
    		var longStart = -( Math.floor( longMax / Model.aDelta ) * Model.aDelta );
    		g.NewPoly();
    		for ( var long = longStart; long < longMax; long += Model.aDelta ) {
    		  g.AddPointToPoly3D( PointOnEarth( lat, long ) );
    		}
    		g.AddPointToPoly3D( PointOnEarth( lat, longMax ) );
    		g.DrawPoly( 1 );
    	  }
    
    	  // longitude lines
    	  var longMax = Model.aDip;
    	  var longStart = -( Math.floor( longMax / Model.aDelta ) * Model.aDelta );
    	  for ( var long = longStart; long < longMax; long += Model.aDelta ) {
    		var rLong = Model.rEarth * Math.cos( long );
    		var latMax = Math.acos( Model.hDisk / rLong );
    		var latStart = -( Math.floor( latMax / Model.aDelta ) * Model.aDelta );
    		if (!Model.drawBackGGrid) latStart = 0;
    		g.NewPoly();
    		if (Model.drawBackGGrid) g.AddPointToPoly3D( PointOnEarth( -latMax, long ) );
    		for ( var lat = latStart; lat < latMax; lat += Model.aDelta ) {
    		  g.AddPointToPoly3D( PointOnEarth( lat, long ) );
    		}
    		g.AddPointToPoly3D( PointOnEarth( latMax, long ) );
    		g.DrawPoly( 1 );
    	  }
    
    	} // end show globe grid
    
    	g.SetLineAttr( 'red', 1 );
    
    	// show flat grid
    	if ( Model.showGrid & 2 ) {
    
    	  // latitude lines on flat model
    	  var latMax = Model.aDip;
    	  var latStart = -( Math.floor( latMax / Model.aDelta ) * Model.aDelta );
    	  if (!Model.drawBackFGrid) latStart = 0;
    	  for ( var lat = latStart; lat < latMax; lat += Model.aDelta ) {
    		var dLatPlaneDisk = Model.hDisk / Math.cos( lat );
    		var longMax = Math.acos( dLatPlaneDisk / Model.rEarth );
    		var longStart = -( Math.floor( longMax / Model.aDelta ) * Model.aDelta );
    		g.NewPoly();
    		for ( var long = longStart; long < longMax; long += Model.aDelta ) {
    		  g.AddPointToPoly3D( PointOnPlane( lat, long ) );
    		}
    		g.AddPointToPoly3D( PointOnPlane( lat, longMax ) );
    		g.DrawPoly( 1 );
    	  }
    
    	  // longitude lines on flat model
    	  var longMax = Model.aDip;
    	  var longStart = -( Math.floor( longMax / Model.aDelta ) * Model.aDelta );
    	  for ( var long = longStart; long < longMax; long += Model.aDelta ) {
    		var rLong = Model.rEarth * Math.cos( long );
    		var latMax = Math.acos( Model.hDisk / rLong );
    		var latStart = -( Math.floor( latMax / Model.aDelta ) * Model.aDelta );
    		if (!Model.drawBackFGrid) latStart = 0;
    		g.NewPoly();
    		if (Model.drawBackFGrid) g.AddPointToPoly3D( PointOnPlane( -latMax, long ) );
    		for ( var lat = latStart; lat < latMax; lat += Model.aDelta ) {
    		  g.AddPointToPoly3D( PointOnPlane( lat, long ) );
    		}
    		g.AddPointToPoly3D( PointOnPlane( latMax, long ) );
    		g.DrawPoly( 1 );
    	  }
    
    	} // end flat grid
    
    	if ( (Model.showGrid & 2) || Model.showFlatHorizon ) {
    
    	  // horizon on flat model
    	  var aMax = Model.drawBackFGrid ? Math.PI * 2 : Math.PI;
    	  g.SetPlane( [ 0, 0, -Model.Height ], [ 1, 0, 0 ], [ 0, 1, 0 ] );
    	  g.SetAlpha( 1 );
    	  g.SetLineAttr( 'red', 2 );
    	  g.ArcOnPlane( 0, 0, Model.rDisk, 0, aMax, 1 );
    
    	}
    
    	if ( Model.showEquator ) {
    
    	  // equator
    	  var aMax = Model.drawBackFGrid ? Math.PI * 2 : Math.PI;
    	  g.SetPlane( [ 0, 0, -Model.Height ], [ 1, 0, 0 ], [ 0, 1, 0 ] );
    	  g.SetAlpha( 1 );
    	  g.SetLineAttr( 'black', 1 );
    	  g.ArcOnPlane( 0, 0, Model.rFEarth, 0, aMax, 1 );
    
    	}
    
    	// Globe Horizon
    	var aMax = Model.drawBackGGrid ? Math.PI * 2 : Math.PI;
    	g.SetAlpha( 1 );
    	g.SetLineAttr( 'blue', 2 );
    	g.SetPlane( [ 0, 0, -Model.zDisk ], [ 1, 0, 0 ], [ 0, 1, 0 ] );
    	g.ArcOnPlane( 0, 0, Model.rDisk, 0, aMax, 1 );
    
      } // end model globe
    
    
      // Flat Earth
    
      if ( Model.showModel & 2 ) {
    
    	var alpha = 0.6 - 0.5 * (Math.log10( Model.Height ) / 9);
    	g.SetAlpha( alpha );
    	g.SetLineAttr( 'black', 1 );
    
    	// circle lines
    	var aMax = Model.drawBackFE ? Math.PI * 2 : Math.PI;
    	var crDelta = Model.rFEarth / 12;
    	var crMax = 2 * Model.rFEarth - crDelta / 2;
    	g.SetPlane( [ 0, 0, -Model.Height ], [ 1, 0, 0 ], [ 0, 1, 0 ] );
    	for ( var cr = crDelta; cr < crMax; cr += crDelta ) {
    	  g.ArcOnPlane( 0, 0, cr, 0, aMax, 1 );
    	}
    	if (Model.Height < 700000) {
    	  crMax = crDelta;
    	  crDelta /= 10;
    	  crMax -= crDelta / 2;
    	  for ( var cr = crDelta; cr < crMax; cr += crDelta ) {
    		g.ArcOnPlane( 0, 0, cr, 0, aMax, 1 );
    	  }
    	}
    	if (Model.Height < 30000) {
    	  crMax = crDelta;
    	  crDelta /= 10;
    	  crMax -= crDelta / 2;
    	  for ( var cr = crDelta; cr < crMax; cr += crDelta ) {
    		g.ArcOnPlane( 0, 0, cr, 0, aMax, 1 );
    	  }
    	}
    	if (Model.Height < 3000) {
    	  crMax = crDelta;
    	  crDelta /= 10;
    	  crMax -= crDelta / 2;
    	  for ( var cr = crDelta; cr < crMax; cr += crDelta ) {
    		g.ArcOnPlane( 0, 0, cr, 0, aMax, 1 );
    	  }
    	}
    	if (Model.Height < 300) {
    	  crMax = crDelta;
    	  crDelta /= 10;
    	  crMax -= crDelta / 2;
    	  for ( var cr = crDelta; cr < crMax; cr += crDelta ) {
    		g.ArcOnPlane( 0, 0, cr, 0, aMax, 1 );
    	  }
    	}
    	g.SetAlpha( 1 );
    	g.ArcOnPlane( 0, 0, Model.rFEarth, 0, aMax, 1 );
    	g.SetLineAttr( 'black', 2 );
    	g.ArcOnPlane( 0, 0, 2*Model.rFEarth, 0, aMax, 1 );
    
    	// ray lines
    	g.SetAlpha( alpha );
    	g.SetLineAttr( 'black', 1 );
    	var caDelta = Math.PI / 12;
    	var caMax = Model.drawBackFE ? 2 * Math.PI : Math.PI;
    	caMax -= caDelta / 2;
    	var r = 2 * Model.rFEarth;
    	for ( var ca = 0; ca < caMax; ca += caDelta ) {
    	  var c = Math.cos( ca );
    	  var s = Math.sin( ca );
    	  g.LineOnPlane( r * c, r * s, 0, 0 );
    	}
    
      } // end nLines > 0
    
      if ( Model.showEyeLevel ) {
    	g.SetLineAttr( 'magenta', 1 );
    	g.SetAlpha( 1 );
    	g.Line3D( [ -Model.sceneWidth/2, Model.rDisk, 0 ], [ Model.sceneWidth/2, Model.rDisk, 0 ] );
    	g.SetTextAttr( 'Arial', 12, 'magenta', 'normal', 'normal', 'venter', 'bottom', 6 );
    	g.SetTextRotation( -Model.Roll*Math.PI/180 );
    	g.Text3D( 'Eye-Level', [ 0, Model.rDisk, 0 ] );
      }
    }
    
    function PointOnEarth( lat, long ) {
      var x = Model.rEarth * Math.sin( long );
      var rr = Model.rEarth * Math.cos( long );
      var y = rr * Math.sin( lat );
      var z = rr * Math.cos( lat );
      return [ x, y, z - (Model.rEarth + Model.Height) ];
    }
    
    function PointOnPlane( lat, long ) {
      var x = Model.rEarth * Math.sin( long );
      var rr = Model.rEarth * Math.cos( long );
      var y = rr * Math.sin( lat );
      return [ x, y, -Model.Height ];
    }
    
    
    ControlPanels.NewSliderPanel( {
      ModelRef: 'Model',
      OnModelChange: UpdateAll,
      Format: 'std',
      Digits: 3,
      ReadOnly: false,
      PanelFormat: 'InputMediumWidth'
    
    } ).AddValueSliderField( {
      Name: 'Height',
      ValueRef: 'Height',
      SliderValueRef: 'HeightSlider',
      Mult: 1000,
      Units: 'km',
      Color: 'blue',
      Min: 0,
      Max: 1
    
    } ).AddValueSliderField( {
      Name: 'ViewAngle',
      Label: 'View&ang;',
      ValueRef: 'ViewAngleField',
      SliderValueRef: 'ViewAngleSlider',
      Units: '&deg;',
      Color: 'black',
      Min: 5,
      Max: 90
    
    } ).AddValueSliderField( {
      Name: 'FocalLength',
      ValueRef: 'FocalLengthField',
      SliderValueRef: 'FocalLengthSlider',
      Label: 'f',
      Units: 'mm',
      Color: 'black',
      Min: 21,
      Max: 500
    
    } ).Render();
    
    
    ControlPanels.NewSliderPanel( {
      ModelRef: 'Model',
      OnModelChange: UpdateAll,
      NCols: 2,
      Format: 'fix0',
      Digits: 0,
      ReadOnly: true,
      PanelFormat: 'InputMediumWidth'
    
    } ).AddValueSliderField( {
      Name: 'Nick',
      Format: 'std',
      Digits: 3,
      Units: '&deg;',
      Color: 'green',
      Min: -45,
      Max: 30
    
    } ).AddValueSliderField( {
      Name: 'Roll',
      Format: 'std',
      Digits: 3,
      Units: '&deg;',
      Color: 'green',
      Min: -45,
      Max: 45
    
    } ).Render();
    
    
    ControlPanels.NewPanel( {
      Name: 'Options',
      ModelRef: 'Model',
      NCols: 2,
      OnModelChange: UpdateAll
    
    } ).AddRadiobuttonField( {
      Name: 'showModel',
      Label: 'Model',
      ValueType: 'int',
      Items: [
    	{
    	  Name: 'Globe',
    	  Value: 1
    	}, {
    	  Name: 'Globe+Flat',
    	  Value: 3
    	}, {
    	  Name: 'Flat',
    	  Value: 2
    	}
      ]
    
    } ).AddRadiobuttonField( {
      Name: 'HeightRange',
      ValueType: 'int',
      Items: [
    	{
    	  Name: '50',
    	  Text: '50',
    	  Value: 50000
    	}, {
    	  Name: '500',
    	  Text: '500',
    	  Value: 500000
    	}, {
    	  Name: '20000',
    	  Text: '20&thinsp;000',
    	  Value: 20000000
    	}, {
    	  Name: 'Log',
    	  Value: 0
    	}
      ]
    
    } ).AddRadiobuttonField( {
      Name: 'showGrid',
      Label: 'Grid',
      ValueType: 'int',
      Items: [
    	{
    	  Name: 'None',
    	  Value: 0
    	}, {
    	  Name: 'Globe',
    	  Value: 1
    	}, {
    	  Name: 'Globe+Flat',
    	  Value: 3
    	}
      ]
    
    } ).AddRadiobuttonField( {
      Name: 'nLines',
      Label: 'Lines',
      ValueType: 'int',
      Items: [
    	{
    	  Name: '15',
    	  Value: 15
    	}, {
    	  Name: '30',
    	  Value: 30
    	}, {
    	  Name: '45',
    	  Value: 45
    	}, {
    	  Name: '60',
    	  Value: 60
    	}, {
    	  Name: '90',
    	  Value: 90
    	}
      ]
    
    } ).AddCheckboxField( {
      Name: 'Show',
      Label: 'Show',
      Items: [
    	{
    	  Name: 'showEyeLevel',
    	  Text: 'EyeLevel',
    	}, {
    	  Name: 'showFlatHorizon',
    	  Text: 'FE-Horizon',
    	}, {
    	  Name: 'showEquator',
    	  Text: 'FE-Equator',
    	}
      ]
    
    } ).AddRadiobuttonField( {
      Name: 'deviceRatio',
      Label: 'AspectRatio',
      ValueType: 'num',
      Items: [
    	{
    	  Name: '3:2',
    	  Value: 3/2
    	}, {
    	  Name: '2:3',
    	  Value: 2/3
    	}, {
    	  Name: '16:9',
    	  Value: 16/9
    	}, {
    	  Name: '9:16',
    	  Value: 9/16
    	}
      ]
    
    } ).Render();
    
    
    ControlPanels.NewPanel( {
      Name: 'Output',
      ModelRef: 'Model',
      OnModelChange: UpdateAll,
      NCols: 2,
      ReadOnly: true,
      Format: 'std',
      Digits: 4
    
    } ).AddTextField( {
      Name: 'hDip',
      Label: 'DipHeight(b)',
      Mult: 1000,
      Units: 'km'
    
    } ).AddTextField( {
      Name: 'aDip',
      Label: 'DipAngle(&alpha;)',
      Mult: Math.PI / 180,
      Units: '&deg;'
    
    } ).AddTextField( {
      Name: 'dHorizon',
      Label: 'HorDist(s)',
      Mult: 1000,
      Units: 'km'
    
    } ).AddTextField( {
      Name: 'aEarth',
      Label: 'AngDiameter',
      Mult: Math.PI / 180,
      Units: '&deg;'
    
    } ).AddTextField( {
      Name: 'rDisk',
      Label: 'HorDistX(d)',
      Mult: 1000,
      Units: 'km'
    
    } ).AddTextField( {
      Name: 'dDelta',
      Label: 'LineSpacing',
      Mult: 1000,
      Units: 'km'
    
    } ).AddTextField( {
      Name: 'zDisk',
      Label: 'HorDistZ(p)',
      Mult: 1000,
      Units: 'km'
    
    } ).AddTextField( {
      Name: 'dView',
      Label: 'HorDistView(v)',
      Mult: 1000,
      Units: 'km'
    
    } ).AddTextField( {
      Name: 'rEarth',
      Label: 'RadiusPlanet',
      Mult: 1000,
      Units: 'km',
      ReadOnly: false
    
    } ).Render();
    
    </jscript>
     
    • Like Like x 1
    • Useful Useful x 1
  11. Henk001

    Henk001 Active Member

    Very useful. And his own commentaries below are also worth reading.
     
  12. Trailblazer

    Trailblazer Moderator Staff Member

    Did @Philippe ever send his photo? I'd be interested to see it, if it shows what he claims.
     
  13. Mick West

    Mick West Administrator Staff Member

    No, he did not send it or post it.
     
  14. JTolan

    JTolan Closed Account Banned

    I've taken a lot of pictures of the islands and oil rigs visible from Santa Barbara, CA during the past year, in both visible and infrared light. Most of the time I see farther then the calculated horizon should allow, but that does not necessarily mean the earth is "flat" because other phenomena might be at work.

    It is no mystery atmospheric light refraction (i.e., light bending in the air) plays a big part, however, I have discovered that near the surface of water, light actually bends upward making objects seem to disappear sooner then they should, usually on a clear day (dry air and high moisture gradient near the surface) Other times the bending can be downward, making distant targets visible (atmosphere has a general negative gradient, i.e. air get thinner with altitude) Because of the complex light bending phenomena close to the water air boundary, and the constantly changing conditions, it is not easy to pin down with high confidence exactly what phenomena is at work at a particular time of the day. When the mirage is seen, it is clear that light bending is upward at the boundary, but when it is not, the question is can we assume light now travels straight? There are also coastal effects like tides, maybe water tension, and/or gravitational variations, etc.., making a definitive answer a bit elusive.

    Anyway, here's some of my pictures, enjoy.

    1) my first picture after I learned of the "flat earth" and headed out to the beach to check for myself. (Behind the oil rig those are the Santa Monica Mountains, by Point Mugu, photo was taken from Santa Barbara pier)
    point mugu.
    2) Santa Cruz island viewed from the Santa Barbara beach. I used the visible valley (blue lines) as a known height reference (its about 80 ft based on topological maps), showing that indeed we see to the water level, (the bottom of the valley is about 600 ft in elevation) Usually when it's hazy outside the water vapor is more evenly distributed and index of refraction more uniform, thus less bending occurs making long distance views possible.
    santa cruz island.

    3) Boat should not be visible, weather was beautiful, no wind.
    sandpoint.

    4) note time difference of about 5 hrs. If you don't like the curvature, just wait a while :)

    SB_OilRigs_Contrast.

    5) this is taken with a IR720 filter, I've been experimenting to see if I can see through the mist. The best is really SWIR, but those are not sold to the public (ITAR restricted)
    malibu.
     
    Last edited: Jun 5, 2017
    • Like Like x 1
  15. Philippe

    Philippe New Member

    You keep showing evidence of a flat plane you will be removed. Hahahah! They don't like observable evidence that contradicts their ball model. Good luck.
     
    • Disagree Disagree x 1
  16. Mick West

    Mick West Administrator Staff Member

    You were going to provide a photo of Catalina. Where is it?
     
  17. Philippe

    Philippe New Member

    I have been removed just posting this.

    After months of research I have no doubt there is no curvature anywhere to be seen. If the curvature is measurable it should be observable as targets disappearing over the horizon could NOT stay perpendicular on the surface of a ball. This links proves without a shadow of a doubt that no matter how many 100 miles of flat horizon there is you cannot create a curve.
    https://beyondhorizons.eu/tag/photography/
     
    • Like Like x 1
    • Funny Funny x 1
  18. Philippe

    Philippe New Member

    Last edited by a moderator: Jun 5, 2017
  19. Trailblazer

    Trailblazer Moderator Staff Member

    I suggest that you actually read the site before linking to it. That site has an extensive discussion of the Earth's curvature and what it means for intervisibility of mountains:

    https://beyondhorizons.eu/visibility-facts/geometrics/

     
    • Like Like x 1
  20. Mick West

    Mick West Administrator Staff Member

  21. Trailblazer

    Trailblazer Moderator Staff Member

    Actually @Philippe claimed that he could see Santa Barbara island from the same spot: specifically, he said. from the beach below the cliffs. That's the photo I'd really like to see.

     
  22. Mick West

    Mick West Administrator Staff Member

    Ah yes:
    The photos linked above are clearly of Catalina Island, showing Two Harbors just peeking though the horizon refraction.
    [​IMG]

    They are also clearly from the clifftop, and not the beach. So the view is as expected. (Probable, as sometimes refraction can create a join there)

    20170605-094910-xztb4.

    20170605-094945-og9gn.

    Sea level would have more obscured, giving a (probable) gap where Two Harbors is.
    20170605-095019-dlnvh.
     
  23. Trailblazer

    Trailblazer Moderator Staff Member

    The cliff edge has a height of 164ft at its lowest, so the camera height would be approx 170ft at least. The distance to Two Harbors is 21.6 miles, giving an obscured height of only about 11 feet.

    From sea level (camera height 6ft) the obscured height should be far bigger: about 193 feet.

    Can you show us a photo of either island from the beach, @Philippe?
     
  24. Mick West

    Mick West Administrator Staff Member

    This photo:
    20170605-095909-kvrgd.

    Might be from here:
    20170605-100126-09z29.
    Which is 57 feet (eye level being 62-63 feet)

    The un-refracted view from there is similar.
    20170605-100337-sh90r.

    Edit: Scratch that. I though those were bushes blocking the path, but the path continues down to sea level.


    I await @Philippe's clarification of the photo spot, and some photos from the beach (of Catalina would be fine)
     
    Last edited: Jun 5, 2017
  25. Abishua

    Abishua Member

    wow! Even with Micks calc this comes out as 5km hidden! And the mountain is 4km high only and it's not only tops what we see there! There seems to be at least a few km's of missing curvature there
     
    • Disagree Disagree x 1
    • Funny Funny x 1
  26. Mick West

    Mick West Administrator Staff Member

    What exactly are you referring to there? Please show the actual numbers.
     
  27. Trailblazer

    Trailblazer Moderator Staff Member

    The photo being referred to shows Barre des Ecrins (4102m tall) photographed from Pic de Finestrelles (2820m tall) at a distance of 440km.

    With standard refraction that means 3721m should be hidden, leaving 281 metres visible.

    The whole website is about finding the longest lines of sight possible on a globe Earth and trying to take photos of them. If the Earth was flat then much longer lines of sight ought to be possible.
     
  28. Mick West

    Mick West Administrator Staff Member