2011-03-07 4 views
2

J'essaie de construire une démonstration de réalité augmentée, comme cet iPhone App: http://www.acrossair.com/acrossair_app_augmented_reality_nearesttube_london_for_iPhone_3GS.htmRéalité Augmentée Démo

Cependant ma géométrie/math est un peu rouillé de nos jours.

Ce que je sais:

  • Si j'ai mon téléphone Android sur le mode paysage (avec le bouton d'accueil à gauche), mes points d'axe z à la direction que je suis à la recherche. À partir des capteurs de mon téléphone, je sais quel est l'angle que mon axe z a avec l'axe nord, appelons cet angle thêta.

  • Si j'ai un vecteur de ma position actuelle au point que je veux montrer dans mon écran, je peux calculer l'angle que ce vecteur fait avec mon axe z. Appelons cet angle alpha.

, calculé à partir de l'angle alpha I ont une perception de l'endroit où le point est, et je suis en mesure de le montrer à l'écran (comme le plus proche App Tube).

Ceci est la théorie de base d'une démonstration simple (bien sûr, ce n'est rien comme l'App, mais c'est la première étape).

Quelqu'un peut-il me donner des lumières à ce sujet?

[Mise à jour]

Je l'ai trouvé très intéressant mais ce example, je dois avoir le mouvement sur les deux axes xx et yy. Des indices?

+0

Quelle est la question ici? Vous semblez comprendre le processus - demandez-vous simplement comment utiliser trig pour calculer alpha et thêta? –

+0

J'ai mis à jour ma question. – ffleandro

Répondre

2

Les bases sont faciles. Vous avez besoin de l'angle entre votre emplacement et votre destin (arctangent), et le cap (de la boussole numérique dans votre téléphone). Voir cette réponse: Augmented Reality movement Il y a un code objectif-c là-bas que vous pouvez lire si vous venez de Java.

1

Ce que vous voulez, c'est une courbe de remplissage de l'espace 3D par exemple une courbe d'hilbert. C'est un index spatial sur 3 ccordinate. C'est comparable à un octree. Vous voulez stocker l'objet dans cet octree et faire une recherche profondeur-firat sur la coordonnée que vous avez enregistrée avec votre iphone comme coordonnée fixe, probablement le centre de l'écran. Une octree subdivise continuellement l'espace en huit directions et une courbe de remplissage de l'espace en 3D est une trajectoire hamiltonienne à travers l'espace qui est comme une fracta mais elle est clairement distincte de la région de l'octree. J'utilise 2d-hilbert-curve pour accélérer la recherche dans les bases de données géospatiales. Peut-être que vous voulez commencer avec ce premier?

+0

Ceci est juste une démo, ce qui signifie que je suis plus intéressé par la façon de montrer les points au lieu de s'inquiéter de l'évolutivité. – ffleandro