Есть много способов сделать это; вот один простой способ.
Представьте себе круг радиуса R с центром в начале координат и квадрат со стороной 2R с центром в начале координат. Мы хотим отобразить все точки внутри и на границе окружность (с координатами (x,y)) к точкам внутри и на границе квадрата. Обратите внимание, что мы также можем описать точки внутри круга, используя полярные координаты (r, ø) (предполагается, что это фи), где
x = r cos ø,
y = r sin ø
(т. е. r^2 = x^2 + y^2 и r ‹= 1). Затем представьте другие координаты x' = a(ø) x = a(ø) r cos ø и y' = a(ø) y (т.е. мы решаем, что a не будет зависеть от r).
Чтобы сопоставить границу круга (r = 1) с границей квадрата (x' = R), мы должны иметь для ø ‹ 45 градусов, x' = a(ø) R cos ø = R, поэтому должно быть a(ø) = 1/cos ø. Точно так же для 45 ‹ ‹ ‹ 90 мы должны иметь границу карты круга с y' = R, что дает a(ø) = 1/sin ø в этом регионе. Продолжая движение по кругу, мы видим, что a(ø) всегда должно быть положительным, поэтому окончательное отображение круга в квадрат равно
x' = a(ø) x,
y' = a(ø) y
куда
ø = |arctan y/x| = arctan |y/x|
а также
a(ø) = 1/cos ø, когда ø ‹= 45 градусов (т. е. когда x ‹ y), и
a(ø) = 1/sin ø, когда ø > 45 град.
Это немедленно дает вам отображение в другом направлении. Если у вас есть координаты (x', y') на квадрате (где x' ‹= R и y' ‹= R), тогда
x = x'/a(ø)
y = y'/a(ø)
с a(ø), как указано выше.
Однако гораздо более простым преобразованием является вычисление (r, ø) для нужного положения на окружности и сопоставление его с x' = r и у' = ø. Это также преобразует каждую точку круга в прямоугольник и наоборот и может иметь лучшие свойства, в зависимости от того, что вы хотите сделать.
Так что это реальный вопрос: что вы на самом деле стремитесь сделать здесь?
person
Norman Gray
schedule
13.12.2014