Je veux dessiner une courbe de Bézier avec un événement de souris.Courbe de Bézier avec événement de souris
function draw(selection)
{
var keep = false, path, xy0;
line = d3.svg.line()
.interpolate(function(points) {return points.join("M10 80 C 40 10, 65 10, 95 80 S 150 150, 180 80"); })
.x(function(d) {return d[0];})
.y(function(d) {return d[1];});
selection
.on('mousedown', function() {
keep = true;
xy0 = d3.mouse(this);
path = d3.select('svg')
.append('path')
.attr('d', line([xy0, xy0]))
.style({'stroke': 'black', 'stroke-width': '3px'});
})
.on('mouseup', function() {
keep = false;
})
.on('mousemove', function(){
if(keep) {
Line = line([xy0, d3.mouse(this).map(function(x) {return x - 1;})]);
console.log(Line);
path.attr('points', Line);
}
});
}
Mais cela ne fonctionne pas. Avez-vous une idée de comment faire cela?
Merci à l'avance,
Qu'est-ce que vous essayez de faire exactement? ? Cette ligne 'points.join (" M10 80 C 40 10, 65 10, 95 80 S 150 150, 180 80 ");' n'a pas beaucoup de sens. Sur la souris avec le bouton cliqué, vous voulez dessiner une courbe entre la position de la souris et la position actuelle? – Mark
Je souhaite tracer une courbe de Bézier entre la position de la souris et la position actuelle. M10 80 C 40 10, 65 10, 95 80 S 150 150, 180 80 est le paramètre de la courbe de Bézier. Comment puis-je l'implémenter dans mon code? Merci – zoint
"* Mais cela ne marche pas *" n'est pas une déclaration de problème, c'est une opinion au mieux (le code fait exactement ce que vous avez écrit, il fonctionne exactement comme le code source le veut): Qu'attendiez-vous ** de ce code, que fait-il à la place, d'où pensez-vous que cette différence vient, et * qu'avez-vous essayé jusqu'ici pour corriger cela? –