2013-09-26 5 views
0

J'ai une page Web avec un élément qui a une transformation de perspective 3D.Trouver les coordonnées locales d'une coordonnée d'écran sur l'élément CSS3D

Je voudrais trouver des coordonnées relatives sur cet objet transformé pour une coordonnée d'écran donnée. Ou en d'autres termes, je veux faire ce qui est fondamentalement la détection de coup: trouver une coordonnée relative sur l'élément qui correspond aux coordonnées de la souris.

Dans Chrome/Safari, il est trivial de trouver la matrice de transformation de perspective pour l'élément. Je crois que je dois faire quelque chose comme multiplier les coordonnées de l'écran par l'inverse de la matrice de perspective, mais les détails sont malheureusement perdus sur moi.

J'ai créé un Chrome/Safari/WebKit compatible jsFiddle avec une mise en œuvre partielle manque le calcul de la matrice: http://jsfiddle.net/HT2VQ/

Si le calcul correct, il y avait, le beignet bleu tiré sur l'élément entourerait le point rouge.

Ceci est mon coffeescript du jsFiddle:

projectionMat = new WebKitCSSMatrix container.css('-webkit-transform') 
window.onmousemove = (e) -> 
    insideX = e.clientX - container.position().left 
    insideY = e.clientY - container.position().top 

    outsideCursor.css 
     left: e.clientX 
     top: e.clientY 

    # Do something with projectionMat/projectionMat.inverse() 
    # insideX = ?? 
    # insideY = ?? 

    insideCursor.css 
     left: insideX 
     top: insideY 
+0

en double: http://stackoverflow.com/questions/17940214/show-me-a-javascript-implementation-of-webkitconvertpointfrompagetonode?noredirect=1#comment 29402218_17940214 – Markasoftware

Répondre

Questions connexes