J'ai construit le script Redimensionner suivant - comme vous pouvez le voir le violon, il travaille pour intensifier mais pas vers le bas:Redimensionner le script à l'échelle supérieure et non inférieure. En utilisant le déterminant le rend nerveux
https://jsfiddle.net/calipoop/a37aeb08/
var item = document.getElementById('item'),
btn = document.getElementById('resizeBtn'),
s = 1;
btn.addEventListener('mousedown', initResize);
function initResize(e) {
var startS = s, startX = e.clientX, startY = e.clientY, dx, dy, d;
window.addEventListener('mousemove', resize);
window.addEventListener('mouseup', killResize);
function resize(e) {
dx = startX - e.clientX;
dy = startY - e.clientY;
d = Math.round(Math.sqrt(dx * dx + dy * dy));
s = startS + (d * .001);
item.style.transform = "scale(" + s + ")";
}
function killResize() {
window.removeEventListener('mousemove', resize);
window.removeEventListener('mouseup', killResize);
}
}
J'ai essayé de résoudre le problème en utilisant le déterminant/contre-produit pour une direction positive/négative:
https://jsfiddle.net/calipoop/zbx3us36/
det = (startX*e.clientY) - (e.clientX*startY);
dir = (det >= 0) ? 1 : -1; //get direction from sign of determinant
d = Math.round(Math.sqrt(dx * dx + dy * dy)) * dir;
Comme vous pouvez le voir à partir du violon, maintenant il "parfois" réduit, et il est toujours nerveux.
Des majors en mathématiques avec des idées? Est-ce que je reçois mal le déterminant? Merci d'avance pour toute idée.
Merci pour la mise à jour Greg! C'est beaucoup plus lisse maintenant, mais seulement si vous vous déplacez dans une direction parfaitement diagonale. Si vous virez plus vers l'axe x ou y, il saute ... pouvez-vous répliquer? Comment pouvons-nous éviter le saut? – calipoop
RE entier négatif, j'essayais d'accomplir cela via le déterminant (det = (startX x e.clientY) - (e.clientX x startY)). Je pensais que cela pourrait rendre la mise à l'échelle plus lisse. – calipoop
J'ai vu, ça ne fonctionnait pas bien avec la logique, car cela dépendait de comment tu t'es déplacé. –