Ключ не столько в точности c необработанных чисел JavaScript чисел (хотя это, конечно, имеет свои последствия), а в том, как работает базовый c тест Мандельброта, в частности, пороговая итерация подсчитывает. Чтобы вычислить, находится ли точка на комплексной плоскости в наборе или вне набора, вы повторяете формулу (которую я точно не помню и не хочу смотреть вверх) для точки снова и снова, пока точка не станет очевидной. расходится (формула «ускользает» от начала комплексной плоскости на много) или не выходит до достижения порога итерации.
Порог итерации при рендеринге представления множества, которое покрывает большую его часть вокруг начала комплексной плоскости (около 2 единиц во всех направлениях от начала координат) может составлять всего 500, чтобы получить довольно хороший рендеринг всего набора при разумном увеличении на современном компьютере. Однако при увеличении масштаба порог итерации должен увеличиваться обратно пропорционально размеру «окна» на комплексной плоскости. Если это не так, значит, тест «побега» не работает с достаточной точностью для выделения мелких деталей при более высоком увеличении.
Формула, которую я использовал в своей реализации JavaScript, -
maxIterations = 400 * Math.log(1/dz0)
, где dz0
- (произвольно) ширина окна на плоскости. При увеличении масштаба изображения набора (ну, «края» набора, где все интересно), dz0
становится довольно маленьким, поэтому порог итерации достигает тысяч.
Итерация счетчик, конечно, для точек, которые «ускользают» (то есть точек, которые не являются частью набора Мандельброта), может использоваться как своего рода измерение «расстояния». Точка, которая ускользает в течение нескольких итераций, явно не «близка» к множеству, тогда как точка, которая ускользает только после 2000 итераций, намного ближе. Это качество расстояния можно использовать по-разному в визуализациях, либо для предоставления значения цвета (общее), либо, возможно, для значения оси Z, если набор визуализируется как 3D-вид (с набором как своего рода «меза» в в трех измерениях и границами в виде вертикального «обрыва» по бокам).