> however, I can never seem to get accurate screen coordinates
> of the points.

Could you specify what exactly your problem is?
Does it not work *at all*, or does it work basically, but points are
off by a few degrees? Or does it only work in one orientation of the
device (like in landscape mode), and fails in other orientations?

Peli
www.openintents.org
http://code.google.com/p/openintents/wiki/SensorSimulator

On Aug 20, 4:55 pm, mscwd01 <[email protected]> wrote:
> Hi,
>
> I want to find the screen coordinates (X,Y) where a point represented
> by a latitude/longitude value would appear on the screen if you
> pointed your phone at it (much in the same way as Wikitude does).
>
> Here is my code from my onSensorChanged() method:
>
> public void onSensorChanged(SensorEvent event) {
>         Sensor sensor = event.sensor;
>         int type = sensor.getType();
>
>         switch (type) {
>                 case Sensor.TYPE_MAGNETIC_FIELD:
>                         mags = event.values.clone();
>                         isReady = true;
>                     break;
>                 case Sensor.TYPE_ACCELEROMETER:
>                     accels = event.values.clone();
>                     break;
>                 case Sensor.TYPE_ORIENTATION:
>                     orients = event.values.clone();
>                     break;
>             }
>
>             if (mags != null && accels != null && isReady) {
>                 isReady = false;
>
>                     SensorManager.getRotationMatrix(R, I, accels, mags);
>                     SensorManager.remapCoordinateSystem(R,
> SensorManager.AXIS_X, SensorManager.AXIS_Z, outR);
>                     SensorManager.getOrientation(outR, values);
>
>                     azimuth = convert.radToDeg(values[0]);
>                     pitch= convert.radToDeg(values[1]);
>                     roll = convert.radToDeg(values[2]);
>
>             }
>
> }
>
> I convert the points I wish to project from their lat/lon spherical
> coordinates to Cartesian coordinates and perform a perspective
> projection using the roll, pitch and azimuth values returned by the
> sensor, however, I can never seem to get accurate screen coordinates
> of the points.
>
> The matrices for roll, pitch and azimuth I use are:
>
> // pan
> double[][] azimuthMat = {
>                 {Math.cos(azimuthValue), -Math.sin(azimuthValue), 0},
>                 {Math.sin(azimuthValue), Math.cos(azimuthValue), 0},
>                 {0, 0, 1},};
>
> // tilt
> double[][] pitchMat = {
>                 {Math.cos(pitchValue), 0, Math.sin(pitchValue)},
>                 {0, 1, 0},
>                 {-Math.sin(pitchValue), 0, Math.cos(pitchValue)},
>         };
> // roll
> double[][] rollMat = {
>                 {1, 0, 0},
>                 {0, Math.cos(rollValue), -Math.sin(rollValue)},
>                 {0, Math.sin(rollValue), Math.cos(rollValue)},
>         };
>
> I also perform the necessary translation of the projection cener and
> the point to project e.g:
>
> // Translate the point
> subtract(pointToProject, projectionCenter);
> ... where 'pointToProject' and 'projectionCenter' are double arrays
> holding the Cartesian coordinates of each location (i.e. camera lat/
> lon and the point to project lat/lon)
>
> I realise this is quite a complicated question to ask and I haven't
> provided all my projection code etc, however if someone feels they can
> help me out and may know how to achieve what i'm after - i'll post the
> whole code.
>
> Thanks
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to