Drehen Sie das Rechteck mit PyPlot in Julia um einen bestimmten Punkt


miga89

Ich versuche, ein Rechteck mit matplotlib zum Plotten um einen bestimmten Punkt in Julia zu zeichnen und zu drehen. Es scheint jedoch, dass ich zwei Transformationen kombinieren muss, damit das funktioniert, was ich nicht kann.

using PyPlot
using PyCall
@pyimport matplotlib.patches as patches
@pyimport matplotlib as mpl

fig = figure(1)
ax = gca()
axis([-4,4,-4,4])

# specify non-rotated rectangle
length = 4
width = 2
rect = patches.Rectangle([1,1],length,width,color="blue",alpha=0.3)
rect_rotated = patches.Rectangle([1,1],length,width,color="red",alpha=0.3)
 # rotate about the following point
point = [3,2]

# try to rotate rectangle using matplotlib's transformations
t1 = mpl.transforms[:Affine2D]()
t1[:rotate_deg_around](point[1],point[2], -30)

# apparently one also has to transform between data coordinate system and display coordinate system
t2 = ax[:transData]

Was ich jetzt tun möchte, um die Transformationen zu kombinieren:

t3 = t1 + t2
rect_rotated[:set_transform](t3)
ax[:add_patch](rect)
ax[:add_patch](rect_rotated)

Ich erhalte jedoch den folgenden Fehler

FEHLER: LoadError: MethodError: Keine Methodenübereinstimmung + (:: PyCall.PyObject, :: PyCall.PyObject)

Ich glaube, das liegt an dem PyPlot-Wrapper, der das "+" - Zeichen nicht unterstützt, um die zugrunde liegenden Transformationen zu kombinieren.

Weiß jemand, wie man diese Arbeit macht? Vielen Dank

David P. Sanders

Python implementiert das Überladen von Operatoren mithilfe der Methoden des ersten Objekts, z . B. t3 = t1 + t2entspricht t3 = t1.__add__(t2).

In Julia wird dies t3 = t1[:__add__](t2)

Verwandte Artikel


Drehen Sie das Spielermodell, um auf einen Punkt zu zeigen

Konsti Lackner Ich habe den Beitrag von vor drei Jahren gesehen, in dem eine ähnliche Frage gestellt wurde, wie dies erreicht werden glm::lookAtkann, konnte ihn aber nicht ganz auf mein Spiel anwenden. Ich habe ein Kamera- und Spielermodell, das sich auf einer

OpenSCAD: Um einen bestimmten Punkt drehen?

Mark Harrison Der folgende Code dreht den zweiten Würfel um den Ursprung. Wie kann ich stattdessen den zweiten Würfel um seinen Mittelpunkt ([5,5,0]) drehen? cube([10,10,1]); rotate([0,0,45]) cube([10,10,1]); Mark Harrison Dieses Modul führt die gewünschte Dr

Wenn Sie sich um einen Punkt drehen, wird das Objekt immer weiter

matidfk Ich mache ein Spiel in Unity und brauche einen Feind, der sich um einen Punkt dreht. Ich benutze atan2, um die Richtung zum Punkt zu bekommen, füge 90 Grad hinzu und benutze dann cos und sin, um die Position zu ändern. Nachdem ich festgestellt hatte, d

KonvaJS - Drehen Sie das Rechteck ohne Versatz um den Cursor

Chase Regen Ich verwende KonvaJS, um Rechtecke in vordefinierte Slots zu ziehen und dort abzulegen. Einige der Schlitze müssen um 90 Grad gedreht werden. Ich habe ein Trefferfeld um die Schlitze, die vertikal gedreht werden. Wenn der Benutzer das Rechteck in d

Ziehen Drehen Sie einen Knoten um einen festen Punkt

Wurflöffel Ich versuche, einen drehbaren Knoten zu erstellen, der dem "Preisrad" in dieser Frage ähnelt . Bisher habe ich die Fähigkeit, mit einem UIPanGestureRecognizer, der wirklich gut funktioniert, Winkelimpulse auf einen Physikkörper zu übertragen. Ich ka

So drehen Sie ein Bild um einen Punkt in Java

Eduardo Maia: Ich habe mir einige ähnliche Fragen angesehen, aber keine beantwortet genau das, was ich brauche. In den Lösungen, die ich gefunden habe, haben alle das Bild gedreht, ohne sich zu bewegen, aber ich brauche, dass sich dieses Bild um die Ausgangspo

Drehen Sie das Matplotlib-Pyplot mit der Kurve um 90 Grad

Bobesh Ich habe eine Handlung mit einer Zeile wie folgt: import numpy as np import matplotlib.pyplot as pl a = np.array([4, 4, 4, 4, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9]) b = np.array([i/len(a) for i in range(1, len(a)+1)]) aa = np.array([i/10 f