Drehe einen Punkt um einen anderen Punkt
Ich habe eine Aufgabe zu zeichnen, eine bestimmte Grafik. Als Teil dieser Aufgabe muss ich drehen einige dot ' s auf 45 Grad.
Ich habe schon 2 Tage versucht zu berechnen, eine Formel, aber konnte einfach nicht bekommen es richtig.
Ich habe gesucht alle über den Ort, einschließlich dieser besonderen website, ich bin immer sehr nahe, aber ich bin immer noch nicht da.
Hier ist es:
Ich brauche zum zeichnen 4 verschiedene Punkte
Ich habe eine spezifische Formel zur Berechnung der position, die außerhalb des Bereichs der Frage, aber hier ist das, was ich immer als Ergebnis von:
int radius = 576;
int diameter = radius * 2;
Point blueA = new Point(561, 273);
Point greenB = new Point(273, 561);
Point yellowC = new Point (849, 561);
Point redD = new Point (561, 849);
Nun muss ich drehen diese Punkte auf 45 Grad. Ich verwende den folgenden code, um es zu erreichen:
double rotationAngle = 45;
double rotationRadians = rotationAngle * (Math.PI / 180);
int center = radius;
result.X = (int)(Math.Cos(rotationRadians) * ((double)result.X - (double)center) - (double)Math.Sin(rotationRadians) * ((double)result.Y - center) + (double)center);
result.Y = (int)(Math.Sin(rotationRadians) * ((double)result.X - (double)center) + (double)Math.Cos(rotationRadians) * ((double)result.Y - center) + (double)center);
Aber das ist, was ich immer bin:
Jede Hilfe wäre sehr geschätzt werden
InformationsquelleAutor der Frage Vlad Spreys | 2012-12-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem ist
int center = radius
die Sieint radius = 576
. Ist dies nicht sinnvoll, wie sicher Sie rotieren um einen Punkt, dass eine x-und y-Position.Gegeben, Sie drehen sich um die Herkunft der center
x
undy
sollten beide0
nicht576
.So, angesichts der Tatsache, dass Sie versuchen, diese.
Verwenden Sie so gerne.
Natürlich, wenn der Mittelpunkt ist immer
0,0
dann können Sie vereinfachen, der Funktion entsprechend, sonst machen Sie den Mittelpunkt optional über einen default-parameter, oder durch überladen der Methode. Sie würde wohl auch wollen zu Kapseln einige der wiederverwendbare Mathematik in andere statische Methoden zu.z.B.
Verwenden Sie so gerne.
Schließlich, wenn Sie mithilfe von GDI, können Sie auch einfach einen
RotateTransform
.Siehe: http://msdn.microsoft.com/en-us/library/a0z3f662.aspx
InformationsquelleAutor der Antwort Fraser
Du bist Mathe-sieht seltsam für mich. Ich denke, dx = r*Cos(theta) und dy = r*Sin(theta).
Hier ein kleines Programm, das ich schrieb, da war dies stört mich, und ich habe es nicht getan Mathe Jahren.
InformationsquelleAutor der Antwort Nick Bray