Dies ist eine Herausforderung, die von Chebyshev Rotation inspiriert wurde . Ich schlage vor, dort nach Antworten zu suchen, um Inspiration für diese Herausforderung zu erhalten.
Bei einem Punkt auf der Ebene gibt es ein eindeutiges Quadrat (ein Rechteck mit gleichen Seiten), das auf dem Ursprung zentriert ist und diesen Punkt schneidet ( interaktive Demo ):
Geben Sie für einen Punkt p und einen Abstand d den Punkt zurück, den Sie erhalten, indem Sie den Abstand d von p entgegen dem Uhrzeigersinn (und für ein negatives d im Uhrzeigersinn ) entlang des Umfangs des Quadrats verschieben, das auf dem Ursprung zentriert ist, der p schneidet . Ihre Antwort muss auf mindestens 4 Dezimalstellen genau sein.
Testfälle:
(0, 0), 100 -> (0, 0)
(1, 1), 81.42 -> (-0.4200, 1.0000)
(42.234, 234.12), 2303.34 -> (-234.1200, 80.0940)
(-23, -39.234), -234.3 -> (39.2340, -21.8960)
Die folgenden Testfälle stammen von Martin Ender und sind alle mit d = 1 :
(0, 0) -> (0, 0)
(1, 0) -> (1, 1)
(1, 1) -> (0, 1)
(0, 1) -> (-1, 1)
(-1, 1) -> (-1, 0)
(-1, 0) -> (-1, -1)
(-1, -1) -> (0, -1)
(0, -1) -> (1, -1)
(1, -1) -> (1, 0)
(95, -12) -> (95, -11)
(127, 127) -> (126, 127)
(-2, 101) -> (-3, 101)
(-65, 65) -> (-65, 64)
(-127, 42) -> (-127, 41)
(-9, -9) -> (-8, -9)
(126, -127) -> (127, -127)
(105, -105) -> (105, -104)
