obtenir l'angle entre 2 UIImageView

@importer@importer Membre
11:00 modifié dans API UIKit #1
Bonjour,

Je cherche à  obtenir l'angle entre 2 UIImageView. En fait j'ai une imageView que je fixe avec un anchorPoint, et aprés je la drag au doigt ( :P) ce qui se résume en une rotation de mon imageView. Et donc voila, je cherche à  récupérer l'angle.
J'ai pensé à  récupérer les coordonnée de mon imageView (qui finissent par décrire un cercle) mais franchement aprés je sais pas comment faire
<br />CATransform3D maTransform = CATransform3DIdentity;<br />		maTransform = CATransform3DRotate(maTransform,angle,0.0,0.0,1.0);<br />		aImage.layer.transform = maTransform;<br />		CGRect rect = aImage.frame;<br />		float origineX = rect.origin.x;<br />		float origineY = rect.origin.y;<br />		aLabel.text = [NSString stringWithFormat:@&quot;X : %f, Y : %f&quot;,origineX,origineY];<br />


Est ce que quelqu'un est bon en math (equation de cercle etc, j'en ai fait ya loooongtemps) ou une autre solution svp? je préfèrerais l'autre solution mais bon si ya pas le choix, je ferais avec surtout que c un peu urgent (je suis en stage de fin d'étude ::)).
`Merci

Réponses

  • vico92vico92 Membre
    11:00 modifié #2
    Salut,

    Vas voir ici, ça pourra peut-être t'aider  ;)

    http://www.osx-dev.com/index.php?topic=3659.msg36820#msg36820

    @+
    Vico
  • @importer@importer Membre
    11:00 modifié #3
    Thanks Vico, je testerai ça demain, le Mac est au boulot, je re-deviens windowsien le soir
  • @importer@importer Membre
    juin 2009 modifié #4
    Bô bah, j'ai pas trop trouvé ce que je cherchais...ou alors j'ai mal cherché :)
    en gros c'est comme ça : http://www.mathovore.fr/maths-cabri/angle-isocele.php. Je sais qu'au final j'ai un triangle isocele, je connais [AO] et [AI] seulement et aucun angle sauf que Aà”I et AàŽO sont égaux. Moi, je cherche l'angle Oà‚I (ou Ià‚O).
    Siouplait :why?:

    EDIT(H): connaissant les coordonnées de [AI] et [AO] (leur extrêmité), est il possible de faire un segment [OI]? Connaissant la taille de tous les segments, et le fait que 2 angles sont identiques (isocèle), je pourrais récupérer Ià‚O, nan?
    Du coup, ma question est : est il possible de faire ce segment [OI]? et si oui comment?CGContextAddLines? (en + j'ai déja essayé d'utiliser saveContext l'autre jour et ça m'a mis "invalide context")
  • Philippe49Philippe49 Membre
    11:00 modifié #5
    dans 1246288014:

    Je cherche à  obtenir l'angle entre 2 UIImageView. En fait j'ai une imageView que je fixe avec un anchorPoint, et aprés je la drag au doigt ( :P) ce qui se résume en une rotation de mon imageView. Et donc voila, je cherche à  récupérer l'angle.

    Daprès ce que que je comprends, tes deux images view se déplacent en translation. Pour qu'elles puissent faire un angle, il faudrait qu'elles tournent sur elles-mêmes, et il faudrait alors dire de quel angle tu veux parler.

    dans 1246353329:

    EDIT(H): connaissant les coordonnées de [AI] et [AO] (leur extrêmité), est il possible de faire un segment [OI]? Connaissant la taille de tous les segments, et le fait que 2 angles sont identiques (isocèle), je pourrais récupérer Ià‚O, nan?
    Du coup, ma question est : est il possible de faire ce segment [OI]? et si oui comment?CGContextAddLines? (en + j'ai déja essayé d'utiliser saveContext l'autre jour et ça m'a mis "invalide context")

    Si tu connais les extrémités de [AI] et [AO] tu connais les coordonnées de O et de I. Il suffit donc de tracer le segment [OI], où  est le problème d'angle là -dedans ?


  • Philippe49Philippe49 Membre
    11:00 modifié #6
    CGPoint points[2];
    points[0]=tonPointO;
    points[1]=tonPointI;
    CGContextStrokeLineSegments(context,points,2);

    CGContextStrokeLineSegments
    Strokes a sequence of line segments.

    void CGContextStrokeLineSegments (
      CGContextRef c,
      const CGPoint points[],
      size_t count
    );
    Parameters
    c
    A graphics context.
    points
    An array of points, organized as pairs"the starting point of a line segment followed by the ending point of a line segment. For example, the first point in the array specifies the starting position of the first line, the second point specifies the ending position of the first line, the third point specifies the starting position of the second line, and so forth.
    count
    The number of points in the points array.
    Discussion
    This function is equivalent to the following code:

    CGContextBeginPath (context);
    for (k = 0; k < count; k += 2) {
        CGContextMoveToPoint(context, s[k].x, s[k].y);
        CGContextAddLineToPoint(context, s[k+1].x, s[k+1].y);
    }
    CGContextStrokePath(context);
  • @importer@importer Membre
    11:00 modifié #7
    Hmm j'étais en train de répondre.
    Donc, ceci me permet de faire une ligne (on doit pas la voir hein...).
    OK, et est ce qu'on peut connaitre l'angle entre le nouveau segment et un des segments ([AI]ou [AO]) adjacents ? Je suis trop trop nul en géométrie.
    merci pour ta réponse Philippe
  • Philippe49Philippe49 Membre
    juin 2009 modifié #8
    Pour connaà®tre un angle, on dispose de la fonction C atan2(y,x)

    • angle entre l'horizontal et le vecteur u de coordonnées (x,y)  :  atan2(y,x)
    • angle entre l'horizontal et le vecteur AB (du point A au point B)  , coordonnées A(xA,yA) et B(xB,yB) :  atan2(yB-yA,xB-xA)
    • angle entre les vecteurs u(xu,yu) et v(xv,yv) :  atan2(yv,xv) - atan2(yu,xu)
    • angle entre les vecteurs AB(xB-xA,yB-yA) et CD(xD-xC,yD-yC) : atan2(yD-yC,xD-xC) - atan2(yB-yA,xB-xA)


    Attention, selon l'orientation de repère, on peut être amené à  prendre les opposés.
  • @importer@importer Membre
    11:00 modifié #9
    Merci pour ton aide, je teste ça dés que j'ai le temps j'essaie de faire une alarme là .
    à  bientôt,

    @importer
  • @importer@importer Membre
    11:00 modifié #10
    Merci pour tes explications Philippe, c'est nikel.
Connectez-vous ou Inscrivez-vous pour répondre.