Advertisement

03.22.2008 at 02:40PM PDT, ID: 23261935 | Points: 500
[x]
Attachment Details

Draw an arrow on a sphere.

Hi all,

Got an interesting one.

I want to draw an arrow between two points using kml in Google Earth.

Using planar coordinates the calculation looks right if I do it like this:

Line: (x1,y1),(x2,y2)

w = 0.1 (Width of the shaft of the arrow (for example))
n = 2 (Number of w's the point of the arrow should extend (for example))
x = x2 - x1 (Extent of line in x direction)
y = y2 - y1 (Extent of line in y direction)
d = sqrt((x*x)+(y*y)) (Length of line)
wx = y * wy / x (Extent of shoulder in x direction)
wy = w * x / d (Extent of shoulder in y direction)
nw = n * w (Length of point)
nwx = nw * x / d (Extent of point in x direction)
nwy = y * nwx / x (Extent of point in y direction)

The coordinates of the arrow look like this:

(x1-wx,y1-wy)
(x1+wx,y1+wy)
(x2-nwx+wx,y2+nwy+wy)
(x2-nwx+wx+wx,y2+nwy+wy+wy)
(x2,y2)
(x2-nwx-wx-wx,y2+nwy+wy+wy)
(x2-nwx-wx,y2+nwy+wy)
(x1-wx,y1-wy)

When I place this arrow in google earth it looks 'skewed'. I have attached a sample kml file to look at. Just open Google Earth and paste it from a text editor.

I am guessing I am not taking into account the fact that the coordinates in kml are spherical.

What changes do I need to make to the calculations to make it look better in Google Earth?

Paul
Attachments:
 
KML For an arrow.
 
Start your free trial to view this solution
Question Stats
Zone: Other
Question Asked By: PaulCaswell
Question Asked On: 03.22.2008
Participating Experts: 2
Points: 500
Views: 0
Translate:
Loading Advertisement...
03.22.2008 at 02:53PM PDT, ID: 21187860

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
03.22.2008 at 03:29PM PDT, ID: 21187952

Rank: Genius

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
03.23.2008 at 04:20AM PDT, ID: 21189260

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
03.23.2008 at 05:42PM PDT, ID: 21191254

Rank: Genius

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
03.24.2008 at 05:49AM PDT, ID: 21193165

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
03.24.2008 at 10:38AM PDT, ID: 21195151

Rank: Genius

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
03.24.2008 at 11:45AM PDT, ID: 21195735

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
03.25.2008 at 11:41PM PDT, ID: 21209285

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
03.26.2008 at 12:40AM PDT, ID: 21209494

Rank: Genius

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
03.26.2008 at 12:10PM PDT, ID: 21215102

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
 
Loading Advertisement...
Microsoft
  • Internet Protocols
  • Applications
  • Development
  • OS
  • Hardware
  • Windows Security
Apple
  • Operating Systems
  • Hardware
  • Programming
  • Networking
  • Software
Internet
  • Search Engines
  • File Sharing
  • WebTrends / Stats
  • Spy / Ad Blockers
  • Web Browsers
  • New Net Users
  • Web Development
  • Chat / IM
  • Anti Spam
  • Web Servers
  • Anti-Virus
  • Email Clients
Gamers
  • Tips
  • Online / MMORPG
  • Puzzle
  • Emulators
  • Action / Adventure
  • Role Playing
  • Consoles
  • Game Programming
  • Strategy
  • Sports
  • Misc
  • Computer Games
Digital Living
  • Hardware
  • Automotive
  • New Net Users
  • New Users
  • Software
  • Digital Music
  • Gaming World
  • Home Security
  • Apple
  • Networking Hardware
Virus & Spyware
  • Vulnerabilities
  • IDS
  • Encryption
  • Anti-Virus
  • Operating Systems Security
  • Software Firewalls
  • WebApplications
  • Cell Phones
  • Operating Systems
  • Internet
  • Hardware Firewalls
Hardware
  • Displays / Monitors
  • Handhelds / PDAs
  • Components
  • Peripherals
  • Laptops/Notebooks
  • Servers
  • Misc
  • Apple
  • Embedded Hardware
  • Networking Hardware
  • Storage
  • Desktops
  • New Users
Software
  • System Utilities
  • Industry Specific
  • Network Management
  • Photos / Graphics
  • Page Layout
  • VMware
  • Misc
  • Web Development
  • OS
  • CYGWIN
  • Voice Recognition
  • Virtualization
  • Message Queue
  • Quality Assurance
  • Security
  • Firewalls
  • MultiMedia Applications
  • Development
  • Database
  • Office / Productivity
  • Business Management
  • OS/2 Apps
  • Server Software
  • Internet / Email
ITPro
  • OS
  • Storage
  • Encryption
  • Operating Systems Security
  • Apple Hardware
  • Laptops & Notebooks
  • Servers
  • Networking Hardware
  • Peripherals
  • Devices
  • Displays / Monitors
  • WebTrends / Stats
  • Search Engines
  • Firewalls
  • Web Computing
  • WebApplications
  • IDS
  • Vulnerabilities
  • Email Clients
  • File Sharing
  • Spy / Ad Blockers
  • Web Browsers
  • Web Servers
  • Networking
  • Anti-Virus
  • Consulting
  • Chat / IM
  • Anti Spam
Developer
  • Web Servers
  • Web Browsers
  • Game Programming
  • Dev Tools
  • Industry Specific
  • Office / Productivity
  • Database
  • CYGWIN
  • Web Development
  • Search Engines
  • File Sharing
  • WebTrends / Stats
  • Programming
  • Content Management
  • Application Servers
  • Protocols
Storage
  • Removable Backup Media
  • Storage Technology
  • Servers
  • Grid
  • Remote Access
  • Backup / Restore
  • Misc
  • Hard Drives
OS
  • Miscellaneous
  • Security
  • Development
  • Linux
  • VMware
  • MainFrame OS
  • Unix
  • Apple
  • OS / 2
  • AS / 400
  • BeOS
  • Microsoft
  • VMS / OpenVMS
Database
  • Oracle
  • Miscellaneous
  • MySQL
  • Software
  • Sybase
  • Contact Management
  • PostgreSQL
  • Data Manipulation
  • Clarion
  • InterSystems Cache
  • Siebel
  • MUMPS
  • OLAP
  • SQLBase
  • SAS
  • GIS & GPS
  • 4GL
  • Berkeley DB
  • DB2
  • Informix
  • Interbase / Firebird
  • FoxPro
  • Reporting
  • LDAP
  • Filemaker Pro
  • MS SQL Server
  • dBase
  • MS Access
Security
  • Misc
  • Web Browsers
  • Software Firewalls
  • Operating Systems Security
  • File Sharing
  • Spy / Ad Blockers
  • Vulnerabilities
  • WebApplications
  • IDS
  • Anti-Virus
  • Encryption
  • Anti Spam
  • Email Clients
  • VPN
  • Chat / IM
Programming
  • Editors IDEs
  • Installation
  • Handhelds / PDAs
  • Multimedia Programming
  • System / Kernel
  • Automation
  • Algorithms
  • Game
  • Signal Processing
  • Project Management
  • Open Source
  • Database
  • Misc
  • Languages
  • Processor Platforms
  • Theory
Web Development
  • Scripting
  • Blogs
  • Web Servers
  • Software
  • Search Engines
  • Web Graphics
  • Web Services
  • Images
  • Internet Marketing
  • Images and Photos
  • Components
  • Document Imaging
  • Web Languages/Standards
  • Illustration
  • WebApplications
  • Fonts
  • WebTrends / Stats
  • Authoring
  • Digital Camera Software
  • Miscellaneous
Networking
  • Protocols
  • Apple Networking
  • Network Management
  • Message Queue
  • Application Servers
  • Content Management
  • File Servers
  • Email Servers
  • Misc
  • Java Editors & IDEs
  • Wireless
  • Networking Hardware
  • Backup / Restore
  • System Utilities
  • ISPs & Hosting
  • Web Servers
  • Storage Technology
  • Removable Backup Media
  • Servers
  • Web Computing
  • Broadband
  • Grid
  • OS / 2
  • Novell Netware
  • Unix Networking
  • Windows Networking
  • Security
  • Telecommunications
  • Operating Systems
  • Linux Networking
Other
  • Lounge
  • Business Travel
  • Community Support
  • New Net Users
  • Philosophy / Religion
  • Math / Science
  • Miscellaneous
  • URLs
  • Expert Lounge
  • Politics
  • Puzzles / Riddles
  • Automotive
Community Support
  • Suggestions
  • New to EE
  • New Topics
  • CleanUp
  • Announcements
  • General
  • Feedback
  • Input
  • EE Bugs
 
03.22.2008 at 02:53PM PDT, ID: 21187860
Here is the Excel sheet I used for the calculations.
 
Spreadsheet for the current calculation.
 
 
03.22.2008 at 03:29PM PDT, ID: 21187952

Rank: Genius

If you are not to close to a pole, and your arrow is not too long, you might try scaling wx by 1/cos(latitude)
 
03.23.2008 at 04:20AM PDT, ID: 21189260
Thanks ozo,

That is an improvement in the right direction but not quite enough I think. Can anything more be done?

Paul
 
Spreadsheet use for calculations.
 
 
The arrow now.
 
 
03.23.2008 at 05:42PM PDT, ID: 21191254

Rank: Genius

You may also need to scale x by cos(lat), so

w = 0.1 (Width of the shaft of the arrow (for example))
n = 2 (Number of w's the point of the arrow should extend (for example))
x =  cos(lat)*(x2 - x1) (Extent of line in x direction)
y = y2 - y1 (Extent of line in y direction)
d = sqrt((x*x)+(y*y)) (Length of line)
wx = w * y / d / cos(lat) (Extent of shoulder in x direction)
wy = w * x / d (Extent of shoulder in y direction)
nwx = n * wx (Extent of point in x direction)
nwy = n * wy (Extent of point in y direction)

it may be better to have a different cos(lat) for each of
(x1-wx,y1-wy)
(x1+wx,y1+wy)
(x2-nwx+wx,y2+nwy+wy)
(x2-nwx+wx+wx,y2+nwy+wy+wy)
(x2,y2)
(x2-nwx-wx-wx,y2+nwy+wy+wy)
(x2-nwx-wx,y2+nwy+wy)
(x1-wx,y1-wy)
but if the arrow is long enough or close enough to a pole for that difference to be significant, then it may be better to use a different approach than tweaking a planar solution
 
03.24.2008 at 05:49AM PDT, ID: 21193165
Hi ozo,

Strangely, that made it worse, but just to 'see what happens' I tried 'x = (x2 - x1)/cos(lat)' and it looks significantly better. The shoulders of the arrow at least now look square to the shaft. The head looks a bit strange though.

What would you suggest as an alternative to 'tweaking a planar solution'? My schoolboy maths reminds me that Pythagoras and some trig doesn't strictly apply on a sphere. I guess a simple mapping of the original endpoints to cylindrical coordinates may be a good start but can we work purely in spherical? How does one calculate a perpendicular vector in spherical coordinates?

Paul
 
03.24.2008 at 10:38AM PDT, ID: 21195151

Rank: Genius

I would probably do it in 3-D coordinates then project it on to a sphere

Which direction are you calling x and which direction are you calling y?
 
03.24.2008 at 11:45AM PDT, ID: 21195735
Hi ozo,

If the choice is arbitrary I would choose the same as Google Earth which is

x (Longitude) e 180 and <= 180
y (Latitude) e 90 and d 90

x=0 at Greenwich meridian y=0 at equator.

Given a solution I should be able to work on the coordinate system if it is not what I want. I have done some maths since school but not a huge amount. :-)

So you would translate the endpoints into true 3d (x,y,z) cartesians, draw the arrow between them and map the results back onto the sphere? How would you project it back to the sphere?

I was considering rotating the sphere so the arrow is north-south, draw the arrow, rotate back to original position. The 1/cos(lat) adjustment can still be applied if required but at least the true shape should be preserved which is my primary aim. This 'should' only require conversion from r/theta/phi to lat/long as the first rotation is purely notional.

Paul
 
03.25.2008 at 11:41PM PDT, ID: 21209285
To project a point P = (x, y, z) onto a sphere, radius r, centred at the origin O:

1. Find the length of OP = R = sqrt(x^2 + y^2 + z^2).

2. Scale the co-ordinates of P to get a point, P', such that P' lies on OP and |OP'| = r - i.e. P' = P * r / R.

3. Translate the co-ordinates of P' = (x', y', z') into a latitude and longitude on the sphere.

Obviously you could combine all three steps into one calculation, and even apply it to the equation of the line joining your two endpoints, but that might start to look ugly.
 
03.26.2008 at 12:40AM PDT, ID: 21209494

Rank: Genius

The two KML.xls spreadsheets you posted seem to have identical wx values
can you post the values for the one that strangely made it worse?

I think I may have misunderstood what nwx and nwy were supposed to represent.
and maybe they should have been
wx = (w * y / d) / cos(lat) (Extent of shoulder in x direction)
wy = w * x / d (Extent of shoulder in y direction)
nwx = (nw * x / d)  / cos(lat) (Extent of point in x direction)
nwy = nw * y / d (Extent of point in y direction)

You can get a perpendicular vector to the line that is also tangent to the sphere by taking the cross product of the line with the vector from the point to the centre of the sphere?

 
03.26.2008 at 12:10PM PDT, ID: 21215102
Hi Ozo,

Here's the latest spreadsheet and the kml it produces. This is very close. The only problem now is that the arrow point seems to be slightly off-center. In fact the point is in exactly the right place, its the whole of the arrow that seem to have been offset but I cant see where the problem is.

Here I use a different scale at each end (wxa and wxb) but as yet I am not doing a 'perfect' scale by scaling ALL x coordinates, only wx. I guess that would cause some other difficulties such as the end points moving unless the scale is performed centred on the line.

Hi Confusing,

The aim here is to get the arrow to look right on the sphere. A direct mapping onto the sphere from a perfect cartesian arrow would require correctly shaping the arrow for lattidude squeeze which is the problem I have right now. Thanks for the suggestions.

Paul
 
Spreadsheet - nearly there.
 
 
The arrow as it appears now.
 
 
 
20080236-EE-VQP-29 / EE_QW_2_20070628