Ich bin in den frühen Phasen eines JS-Projekts. Alles läuft gut bis auf die Positionierung einer Form. Die fragliche Form ist ein teal Diamant (Quadrat um 45 Grad gedreht). Ich kann den Platz auf dem Bildschirm kein Problem, aber wenn ich hinzufügen:d3.js Odd Rotation Verhalten
.attr("transform", "rotate(45)")
das Quadrat dreht richtig, sondern verschiebt sich in Richtung des linken Teil des Bildschirms, wie folgt aus:
Ich bin mir nicht sicher, was das verursacht. Wenn es hilft, ist hier ein Teil des Codes, der dieses Ergebnis geführt:
var svg = d3.select("body")
.append("svg")
.attr("width", w)
.attr("height", h);
svg
.append("rect")
.attr("transform", "rotate(45)")
.attr("x", 250)
.attr("height", w/10)
.attr("width", w/10)
.attr("fill", "teal")
Hinweis: Wenn ich die „y“ in Attribute gesetzt, verschwindet das Quadrat vollständig.
Was verursacht das? Habe ich etwas falsch gemacht, das ich einfach nicht sehen kann?
Ahhh Sie haben absolut Recht. Danke vielmals. Jetzt brauche ich die Form genau in der Mitte.Mit dem Pythagoräischen Theorm habe ich die Länge des Querschnitts gefunden und durch 2 geteilt. Das Ergebnis dieser Gleichung ist, was ich als y-Koordinate in meiner translate -Anweisung einstellen möchte (subtrahiert von der Leinwandhöhe/2 natürlich). . Es scheint, als könnte ich hier keine Variablen verwenden. Weißt du, wie ich das machen könnte? – 1080p
Sie müssen Pythagoras nicht verwenden, solange Sie die Transformation in der richtigen Reihenfolge durchführen. Angenommen, 'w' und' h' sind die Zeichenflächengröße, und 'rw' und' rh' sind die Größe des Rect. Dies sollte tun, was Sie fragen: '.attr (" transform "," translate ("+ (w/2) + "," + (h/2) + ") rotieren (45) übersetzen (" + (-rw/2) + "," + (-rh/2) + ")". Mit anderen Worten Bewegen Sie sich zuerst oben links von rect zur Mitte, dann drehen Sie 45, dann zurück zur Halb- und zur halben Höhe von rect - entlang der 45-Grad-Achse -, die es zentriert Wenn Canvas 300x300 und Rect ist 100x100: ' "translate (150,150) rotate (45) translate (-50, -50)" ' – meetamit
Interessant. Ich habe bereits Pythagoras in meinem Code eingerichtet, aber wenn Ihre Methode schneller ist, kann ich sie austauschen. Vielen Dank für all die – 1080p