Ich versuche, ein C++-Programm zu schreiben, das die folgenden Eingaben des Benutzers annimmt, um Rechtecke (zwischen 2 und 5) zu konstruieren: Höhe, Breite, x-pos, y-pos. Alle diese Rechtecke liegen parallel zur x- und y-Achse, d.h. alle ihre Kanten haben eine Steigung von 0 oder unendlich.
Ich habe versucht zu implementieren, was in ce Frage, aber ich habe nicht sehr viel Glück.
Meine derzeitige Implementierung funktioniert folgendermaßen:
// Gets all the vertices for Rectangle 1 and stores them in an array -> arrRect1
// point 1 x: arrRect1[0], point 1 y: arrRect1[1] and so on...
// Gets all the vertices for Rectangle 2 and stores them in an array -> arrRect2
// rotated edge of point a, rect 1
int rot_x, rot_y;
rot_x = -arrRect1[3];
rot_y = arrRect1[2];
// point on rotated edge
int pnt_x, pnt_y;
pnt_x = arrRect1[2];
pnt_y = arrRect1[3];
// test point, a from rect 2
int tst_x, tst_y;
tst_x = arrRect2[0];
tst_y = arrRect2[1];
int value;
value = (rot_x * (tst_x - pnt_x)) + (rot_y * (tst_y - pnt_y));
cout << "Value: " << value;
Allerdings bin ich mir nicht ganz sicher, ob (a) ich den Algorithmus, auf den ich verlinkt habe, richtig implementiert habe, oder ob ich genau weiß, wie er zu interpretieren ist?
Irgendwelche Vorschläge?
5 Stimmen
Ich würde denken, dass die Lösung für Ihr Problem nicht darin besteht tout Multiplikation.
0 Stimmen
Für den Fall, dass Sie eine Antwort für ein gedrehtes Rechteck benötigen, habe ich eine Antwort mit allen Schritten erstellt: stackoverflow.com/questions/62028169/ (es ist in Javascript, kann aber leicht in C++ reproduziert werden)