Каков самый простой способ асинхронно применить последовательные улучшения к объекту Graphics
в динамической настройке (и прервать оценку ненужных результатов, если входные данные изменяются во время их вычисления)?
Как Рассмотрим простой пример:
speed[r_] := Graphics@{Red, Circle[{0, 0}, r]}
qualityA[r_] := (Pause[1]; Graphics@{Red, Disk[{0, 0}, r]})
qualityB[r_] := (Pause[1]; Graphics@{Black, Circle[{0, 0}, r]})
Manipulate[Show[
ControlActive[speed[r], {qualityA[r], qualityB[r]}],
PlotRange -> {{-1, 1}, {-1, 1}}
], {{r, .5}, 0, 1}]
Как я могу последовательно оценить qualityA
и qualityB
и добавить их вывод на дисплей, когда он будет готов?
Бонусные баллы за Прервать
оценку ненужных результатов и за возможность многократного вычисления части результата, чтобы после освобождения элемента управления я увидел, например, {qualityA [r]}
, затем {qualityA [r], qualityB [r]}
и, наконец, {qualityA2 [r], qualityB [r]}
.