Tuesday, May 08, 2007

Large Coordinate Systems

I made a previous post on my blog about keeping geometry near 0,0,0. Well, I came across another situation the other day that took this to another level and in my searches help me find even more info on why you want to keep things close to 0,0,0. What I'm about to describe cover 4 or possibly more different industries - general CAD, Surveying, 3D Modeling, possibly manufacturing, CSI and as built models/renovations - all rolled into one task.

Here's the deal. Using a 3D laser scanning device such as
Faro or Leica a user builds what's called a point cloud that has millions of data points that represent actual coordinates of all desired geometry. These points need to be tied in with some sort of geographic location such as NAD or somewhere in the GPS grid. When that is done and the geometry imported into CAD, the point cloud is typically millions of units away from 0,0 due to each region of the NAD having one common point. Millions of units generally translates into hundreds of miles which is a LONG ways away from 0,0. The point clouds can be used to build all sorts of data - terrain, buildings, tunnels, crash scenes from auto accidents (including the wrecked vehicals).

When geometry is located that far from 0,0 - things start to happen - strange things I might add. Commands stop working properly on obects, things display wrong in 3D - even vertical apps built on top of AutoCAD such as ADT start displaying things incorrectly. To start with, Shaan has made a few posts on his blog that discuss this.
Post 1, post 2, post 3. Reading these posts are essential to understanding what the problem is when you have geometry far away from 0,0.

Shaan's article uses the drawing of the solar system that many of you may remember from the older days of AutoCAD. You can draw the solar system to scale, but you run into problems when you try to draw a lander on pluto to scale due to the limit of digits that the computer can use. Currently that is 16 digits total and that does not mean 16 on each side of a decimal point. 16 total means you can have 10000000.00000001 or 1.000000000000001 or 100000000000000.1 as a number. When dealing with coordinates in the millions, you run out of decimal places real quick and that is what cause things to stop working when far away from 0,0.

Also, there is a lovely
article on Cadalyst that discusses this in depth too. This article describes some lovely workarounds for dealing with this situation. Typically, if the user doing the scans knows in advance that the points should be registered to a local 0,0 instead of a state plane - the point clouds come in close to 0,0 which is great. But what if that wasn't done before the point clouds were generated? What if the user cannot move the point clouds near 0,0? Well, those are questions I don't have an answer for right now - nor does anyone else seem to. If I find something more on this, I will post an update.

No comments: