Как я могу преобразовать координаты на квадрате к координатам на круге?

В действительности Вы создали версию бедного человека ThreadPool. Ваш второй поток просто находится, там ничего не делая и без изрядного количества работы с Вашей стороны, Вы не можете только заставить его делать работу для Вас. Необходимо было бы передать делегатов в очередь, которую поток тогда снимает и выполняет.

Ваш лучший выбор состоит в том, чтобы сделать то, что Вы предназначили, и просто используйте.NET ThreadPool и дайте ему работу, чтобы сделать.

10
задан Metaphile 25 October 2009 в 19:32
поделиться

2 ответа

See Mapping a Square to a Circle. There's also a nice visualization for the mapping. You get:

xCircle = xSquare * sqrt(1 - 0.5*ySquare^2)
yCircle = ySquare * sqrt(1 - 0.5*xSquare^2)
17
ответ дан 3 December 2019 в 16:10
поделиться

Разделите каждое значение на величину, чтобы нормализовать все значения к единичному вектору, например

magn = sqrt(x * x + y * y);
newx = magn > 1.0 ? x / magn : x;
newy = magn > 1.0 ? y / magn : y;

Однако это может иметь эффект отсечения величины вместо нормализации для внутренних значений. То есть вы получите одинаковое значение для контроллера, который «полностью» сдвинут в верхний левый угол, и контроллера почти , полностью сдвинутого в том же направлении.

0
ответ дан 3 December 2019 в 16:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: