GTI 350 Travail pratique Android sur tablettes Xoom de Motorola.

Slides:



Advertisements
Présentations similaires
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
Advertisements

La classe String Attention ce n’est pas un type de base. Il s'agit d'une classe défini dans l’API Java (Dans le package java.lang) String s="aaa"; // s.
Ecoute bien! Test your listening skills! On each slide you will see a sound icon. Click on this to hear a French number. Then click on the word for the.
Hiver 2010JGA Beaulieu GEF 243B Programmation informatique appliquée Résolution structurée des problèmes.
L’ interruption de boucle
Plan du cours 5:Threads introduction Définition Création des Threads
Biométrie Ecriture. Capteur standard: tablette Résolution :une résolution de 5080 lpp, le double de son prédécesseur.
Dreams and Reality. Photogroup During the next few minutes you can see some examples of the difference between dreams and reality concerning your work.
Les entrées /sorties en Java François Bonneville
جامعــــــة محمد خيضــــــــــــر
travail énergie puissance du solide au systeme poly-articule
4828 St-Denis6755 Jarry Est Montréal, QuébecSt-Léonard QC H2J 2L6H1P 1W
DIBA p r o g i c i e l. DIBA est un progiciel dédié à la gestion: des compagnies dassurance. des cabinets de courtage Il est entièrement paramétrable.
Connexion base de données
Mobile Clients for Location-Based Services
BlueJ_XI 1 Java, les objets : tout de suite ! Gestion des erreurs : les exceptions Notes de cours associées au chapitre 11 tutorial BlueJ
Où est le Canada?.
JUnitTest Infected: Programmers Love Writing Tests A little test, a little code, a little test, a little code…
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
1 Cours JAVA / Y.Laborde Java : Les types génériques ( ) LES TYPES GENERIQUES : Introduction (diapo 2) Déclaration dun type générique (3) 1re déclaration.
Une journée In this unit you will learn:
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
____________________ Pourquoi? L/O: To be able to justify your opinion about school subjects STARTER: Trouve les paires Match the French to the English:
Faites ceci: Sortez les devoirs..
Faculté I&C, Claude Petitpierre, André Maurer 1 Java.
How to solve biological problems with math Mars 2012.
Langage Oriente Objet Cours 4.
IFT3355: Infographie Projections
Chapitre VII Généricité. POO-L3 H. Fauconnier2 Chapitre VII 1. Principes généraux 2. Types génériques imbriqués 3. Méthodes génériques 4. Types paramètres.
Master 1 SIGLIS java Lecteur Stéphane Tallard Chapitre 4 – Structures de contrôle.
Jeu de role interactif Axel MANGUY Enora GABORY. I - construction de la démarche et mise en œuvre des moyens Cahier des charges.
Le patron de conception « Strategy » Simon Durocher ( )
Programmation par Objets et Java
Langage Oriente Objet Cours 2.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 5 – Héritage, Interfaces et Listes génériques.
Echauffement (10 minutes) Complete the sheet in front of you as best as you can with what you brought to class today: 1.Un défi mondial 2.Une liste de.
DESS CCI POO-JAVA TD n°7 exercice n°1
Modélisation géométrique à l’aide d’un maillage
Qu’est-ce qui te plaît? Chapitre 2.
JUnit Présentation complète de JUnit et « guide d’utilisation » en 13 transparents.
Sound Review Quest-ce que tu écoutes? a. -ou b.-é c.-i.
1 PROTOTYPE PGC++ Vecteur_3D DÉFINITION. 2 class Vecteur_3D { private : float vx, vy, vz, vw; // Représentation en coordonnées homogènes. public : Vecteur_3D();
Design Pattern Memento. Principe : Enregistrer les changements d'états d'un objet Objectif : Pouvoir restituer les états précédents d'un objet.
Faculté I&C, Claude Petitpierre, André Maurer 1 Concepts dhéritage Héritage dimplémentation hasA Héritage de spécialisation isA.
Passage entre quaternions et matrice des cosinus directeurs Transition from Quaternions to Direction Cosine Matrices.
Multi-Thread Jian-Yun Nie
To be able to say what I think about different jobs for level 3.
Cours 11 Threads. Chapitre X threads threadPOO-L3 H. Fauconnier3 Threads threads: plusieurs activités qui coexistent et partagent des données exemples:
Les pointeurs en C. valeur : main () { float valeur; void* pointeur; }
Introduction au Langage C
CSI1502 Principes fondamentaux en conception des logiciels Chapter 8: Gestion des exceptions.
CSI2520 Le langage Scheme (2) Un langage de programmation fonctionnelle.
Java, les objets : tout de suite ! Rassembler, grouper les objets
Thematic Alignment of Static Documents with Meeting Dialogs Dalila Mekhaldi Diva Group Department of Computer Science University of Fribourg.
Fabienne Boyer Laboratoire LIG (INRIA-UJF-INPG) Projet SARDES, INRIA Rhône-Alpes APACHE/VELOCITY.
Fabienne Boyer Laboratoire LIG (INRIA-UJF-INPG) Projet SARDES, INRIA Rhône-Alpes Usage.
Integer Caratheodory theorems. Linear Caratheodory Given A={a 1,…, a n } IR d. For all v cone(A) there exists B A, |B| d st v cone(B) Proof : Si A nest.
Différencier: NOMBRE PREMIER vs. NOMBRE COMPOSÉ
Programme de retouche d’images sous python
IL EST OU C’EST?. When describing a person or a thing, French speakers use two different constructions: Il/elle est + adjective C’est + noun Example.
Objectifs À la fin de ce cours, vous serez capables de :
AOP dans .Net avec PostSharp
CASANAS Sylvain PASTOR Antoine PERCHET Frederic
Ministère de l’Éducation, du Loisir et du Sport Responsables des programmes FLS et ELA: Diane Alain et Michele Luchs Animateurs: Diane Alain et Michael.
Tutorat en bio-informatique
Ottawa – News release January 2007 Nouvelle effective en Janvier 2007 Massive federal government tax surplus this year will make a tax rebate possible.
CSI 1502 Principes fondamentaux de conception de logiciels
Interfaces multitactiles LOG 745. Rappel de matière vue en LOG350: les widgets contextuels pour lancer des commandes (menus contextuels, menus radiaux,
BTN4U Gérer vos réservations du bout des doigts. BTN4U Gérer les réservations du bout des doigts Consultable toujours et partout Possibilité de multi-tâches.
Transcription de la présentation:

GTI 350 Travail pratique Android sur tablettes Xoom de Motorola

Lasso

1 doigt sur le fond: translation de caméra

Lasso 1 doigt sur le fond: translation de caméra

Lasso 2 doigts sur le fond: zoom et translation de caméra

Lasso 2 doigts sur le fond: zoom et translation de caméra

Lasso 1 doigt sur une forme: translation

Lasso 1 doigt sur une forme: translation

Lasso 2 doigts sur une forme: translation, rotation, changement déchelle

Lasso 2 doigts sur une forme: translation, rotation, changement déchelle

Lasso En mode lasso: 1 doigt pour dessiner le lasso

Lasso La sélection actuelle, après relâchement du lasso

Fonctionnalités à rajouter pour votre travail pratique …

Lasso 1 doigt sur la sélection actuelle: translation

Lasso 1 doigt sur la sélection actuelle: translation

Lasso En mode effacer: 1 doigt pour supprimer une forme Effacer

Lasso En mode effacer: 1 doigt pour supprimer une forme Effacer

Bouton encadrer: fait un zoom pour centrer la scène Lasso Effacer Encadrer

Lasso Bouton encadrer: fait un zoom pour centrer la scène Effacer Encadrer

Lasso En mode créer: 3 doigts ou plus pour créer un polygone Effacer Encadrer Créer

Points alloués pour le travail pratique Translation de sélection: 1 point Mode effacter: 1 point Mode encadrer: 1 point Mode créer: 2 points Une équipe de N personnes doit compléter des modifications valant N points

Consignes pour travailler avec les Xooms Le câble dalimentation est délicat ! Attention s.v.p. Delicat ! Brise facilement !

Consignes pour travailler avec les Xooms Si vous devez faire un redémarrage de votre Xoom, tenez le bouton arrière pendant 5-10 secondes Si cela ne fonctionne pas, essayez de tenir le bouton arrière ET le bouton pour augmenter le son en même temps pendant 5-10 secondes

Quelques classes de base et routines qui vous seront disponibles …

Point2D public class Point2D { public float [ ] p = new float[2]; public Point2D() { p[0] = p[1] = 0; } public Point2D( float x, float y ) { p[0] = x; p[1] = y; } public Point2D( Vector2D V ) { p[0] = V.v[0]; p[1] = V.v[1]; } public void copy( Point2D P ) { p[0] = P.p[0]; p[1] = P.p[1]; } public float x() { return p[0]; } public float y() { return p[1]; } // used to pass coordinates directly to OpenGL routines public float [ ] get() { return p; } // return the difference between two given points static public Vector2D diff( Point2D a, Point2D b ) { return new Vector2D( a.x()-b.x(), a.y()-b.y() ); } // return the sum of the given point and vector static public Point2D sum( Point2D a, Vector2D b ) { return new Point2D( a.x()+b.x(), a.y()+b.y() ); } // return the difference between the given point and vector static public Point2D diff( Point2D a, Vector2D b ) { return new Point2D( a.x()-b.x(), a.y()-b.y() ); } public float distance( Point2D otherPoint ) { return diff( this, otherPoint ).length(); } static Point2D average( Point2D a, Point2D b ) { return new Point2D( (a.x()+b.x())*0.5f, (a.y()+b.y())*0.5f ); }

Vector2D import java.lang.Math; public class Vector2D { public float [ ] v = new float[2]; public Vector2D() { v[0] = v[1] = 0; } public Vector2D( float x, float y ) { v[0] = x; v[1] = y; } public Vector2D( Point2D P ) { v[0] = P.p[0]; v[1] = P.p[1]; } public void copy( Vector2D V ) { v[0] = V.v[0]; v[1] = V.v[1]; } public float x() { return v[0]; } public float y() { return v[1]; } public float lengthSquared() { return x()*x() + y()*y(); } public float length() { return (float)Math.sqrt( lengthSquared() ); } public Vector2D negated() { return new Vector2D(-x(),-y()); } public Vector2D normalized() { float l = length(); if ( l > 0 ) { float k = 1/l; // scale factor return new Vector2D(k*x(),k*y()); } else return new Vector2D(x(),y()); } // returns the dot-product of the given vectors // Notez: dot product veut dire produit scalaire static public float dot( Vector2D a, Vector2D b ) { return a.x()*b.x() + a.y()*b.y(); } // returns the sum of the given vectors static public Vector2D sum( Vector2D a, Vector2D b ) { return new Vector2D( a.x()+b.x(), a.y()+b.y() ); } // returns the difference of the given vectors static public Vector2D diff( Vector2D a, Vector2D b ) { return new Vector2D( a.x()-b.x(), a.y()-b.y() ); } // returns the product of the given vector and scalar static public Vector2D mult( Vector2D a, float b ) { return new Vector2D( a.x()*b, a.y()*b ); }

Point2DUtil public class Point2DUtil { static public Point2D computeCentroidOfPoints( ArrayList points ) { float x = 0, y = 0; for ( Point2D p : points ) { x += p.x(); y += p.y(); } if ( points.size() > 1 ) { x /= points.size(); y /= points.size(); } return new Point2D( x, y ); }... }

Point2DUtil public class Point2DUtil {... static public boolean isPointInsidePolygon( ArrayList polygonPoints, Point2D q ) {... }... } Utile pour réaliser la sélection en lasso Aussi utile pour réaliser la sélection de polygones

Lasso En mode lasso: 1 doigt pour dessiner le lasso

Lasso 1 doigt sur une forme: translation

Lasso 1 doigt sur une forme: translation

Lasso 1 doigt sur la sélection actuelle: translation

Lasso 1 doigt sur la sélection actuelle: translation

Point2DUtil public class Point2DUtil {... static public ArrayList computeConvexHull( ArrayList points ) {... }... } Convex hull = enveloppe convexe Utile pour générer un polygone à partir dun ensemble de points

Comment rajouter une marge autour dun polygone convexe ? Ensemble de points Enveloppe convexe Enveloppe convexe avec une marge rajoutée Calcul de lenveloppe convexe Comment ?

Point2DUtil public class Point2DUtil {... static public ArrayList computeExpandedPolygon( ArrayList points, // input float marginThickness ) {... }... }

ArrayList points = …; points = Point2DUtil.computeConvexHull( points ); points = Point2DUtil.computeExpandedPolygon( points, marginThickness ); points initialsenveloppe convexe marge rajoutée, méthode naïve marge rajouté avec Point2DUtil. computeExpandedPolygon()

Lasso La sélection actuelle, après relâchement du lasso

Point2DUtil public class Point2DUtil {... static public void transformPointsBasedOnDisplacementOfOnePoint( ArrayList points, Point2D P_old, Point2D P_new ) { Point2D centroid = computeCentroidOfPoints( points ); Vector2D v1 = Point2D.diff( P_old, centroid ); Vector2D v2 = Point2D.diff( P_new, centroid ); float rotationAngle = Vector3D.computeSignedAngle( new Vector3D(v1.x(),v1.y(),0), new Vector3D(v2.x(),v2.y(),0), new Vector3D(0,0,1) ); float lengthToPreserve = v1.length(); Point2D newCentroid = Point2D.sum( P_new, Vector2D.mult( v2.normalized(), - lengthToPreserve ) ); Vector2D translation = Point2D.diff( newCentroid, centroid ); float cosine = (float)Math.cos( rotationAngle ); float sine = (float)Math.sin( rotationAngle ); for ( Point2D p : points ) { float relativeX = p.x() - centroid.x(); float relativeY = p.y() - centroid.y(); p.get()[0] = (cosine*relativeX - sine*relativeY) + translation.x() + centroid.x(); p.get()[1] = (sine*relativeX + cosine*relativeY) + translation.y() + centroid.y(); }... }

Transformation en fonction du déplacement de un point Michel Beaudouin-Lafon, Novel Interaction Techniques for Overlapping Windows, UIST

C new =P new –(D old ).length()×(D new ).normalized() D new = (P new -C old ) D old =P old –C old [difference] Transformation en fonction du déplacement de un point Composantes de la transformation: Translation: C new – C old Rotation: langle entre D new et D old C old [centroid] P new P old

B old Point2DUtil public class Point2DUtil {... static public void transformPointsBasedOnDisplacementOfTwoPoints( ArrayList points, Point2D A_old, Point2D B_old, Point2D A_new, Point2D B_new ) {... }... } B new A new A old

Transformation en fonction du déplacement de deux points Composantes de la transformation: Translation: M new – M old Rotation: langle entre D new et D old Changement déchelle (scale): (D new ).length() / (D old ).length() B new M new =(1/2)(A new +B new ) [midpoint] D new = (A new -B new ) [difference] A new B old M old D old A old

Transformation en fonction du déplacement de deux points

Lasso 2 doigts sur une forme: translation, rotation, changement déchelle

Lasso 2 doigts sur une forme: translation, rotation, changement déchelle