Редактирование: Фрактал

Перейти к: навигация, поиск

Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 106: Строка 106:
 
var y_oldmin = 0;
 
var y_oldmin = 0;
 
var y_oldmax = scale;
 
var y_oldmax = scale;
var x_relativemin = 0;
 
var x_relativemax = scale;
 
var y_relativemin = 0;
 
var y_relativemax = scale;
 
 
var intermid;
 
var intermid;
 
var imageData = ctx.createImageData(w,h);
 
var imageData = ctx.createImageData(w,h);
 
var imageData2;
 
var imageData2;
 
var upd = false;
 
var upd = false;
 +
x_minim.innerHTML = x_min.toFixed(2);
 +
    y_minim.innerHTML = y_min.toFixed(2);
 +
x_maxim.innerHTML = x_max.toFixed(2);
 +
y_maxim.innerHTML = y_max.toFixed(2);
 
 
x_minim.onchange = function () {
+
// заполняем холст непрозрачными белыми пикселями
x_min = parseFloat(document.getElementById('x_minim').value);
 
z = 1/(x_max - x_min);
 
z2 = 1;
 
y_max = y_min + x_max - x_min;
 
x_relativemin = 0;
 
x_relativemax = scale;
 
y_relativemin = 0;
 
y_relativemax = scale;
 
}
 
x_maxim.onchange = function () {
 
x_max = parseFloat(document.getElementById('x_maxim').value);
 
z = 1/(x_max - x_min);
 
z2 = 1;
 
y_max = y_min + x_max - x_min;
 
x_relativemin = 0;
 
x_relativemax = scale;
 
y_relativemin = 0;
 
y_relativemax = scale;
 
}
 
y_minim.onchange = function () {
 
y_min = parseFloat(document.getElementById('y_minim').value);
 
z = 1/(x_max - x_min);
 
z2 = 1;
 
y_max = y_min + x_max - x_min;
 
x_relativemin = 0;
 
x_relativemax = scale;
 
y_relativemin = 0;
 
y_relativemax = scale;
 
}
 
 
// заполняем холст непрозрачными белыми пикселями для ускорения последующего рисования
 
 
for (i = 0; i<1000; i++) {
 
for (i = 0; i<1000; i++) {
 
for (j = 0; j<1000; j++) {
 
for (j = 0; j<1000; j++) {
Строка 171: Строка 140:
 
document.body.removeChild(link);
 
document.body.removeChild(link);
 
}
 
}
update.onclick = function () { clearcanv(); upd = true;
+
update.onclick = function () { clearcanv(); upd = true; control(); }
if ((document.getElementById('x_o') != 0 )||(document.getElementById('y_o') != 0)){
 
r = Math.floor(Math.random()*256);
 
g = Math.floor(Math.random()*256);
 
b = Math.floor(Math.random()*256);
 
RGB.push(r);
 
RGB.push(g);
 
RGB.push(b);
 
X.push(document.getElementById('x_o').value); Y.push(document.getElementById('y_o').value);
 
}
 
control();
 
}
 
 
a11.onchange = function() {
 
a11.onchange = function() {
 
a_11 = parseFloat(document.getElementById('a11').value);
 
a_11 = parseFloat(document.getElementById('a11').value);
Строка 208: Строка 166:
 
if (!zoom.checked) {
 
if (!zoom.checked) {
 
var rect = cnv.getBoundingClientRect();
 
var rect = cnv.getBoundingClientRect();
 +
console.log((event.clientX - rect.left)/scale,(event.clientY - rect.top)/scale);
 
if (z != 1) {
 
if (z != 1) {
 
z2 = x_max - x_min;
 
z2 = x_max - x_min;
Строка 223: Строка 182:
 
} else {
 
} else {
 
clearcanv ();
 
clearcanv ();
 +
some_span.innerHTML = "";
 +
z = 1;
 +
z2 = 1;
 +
RGB = [];
 +
X = [];
 +
Y = [];
 
r = Math.floor(Math.random()*256);
 
r = Math.floor(Math.random()*256);
 
g = Math.floor(Math.random()*256);
 
g = Math.floor(Math.random()*256);
 
b = Math.floor(Math.random()*256);
 
b = Math.floor(Math.random()*256);
 +
ctx.beginPath();
 +
ctx.arc(x*scale,y*scale,3,0,2*Math.PI);
 +
ctx.strokeStyle = 'blue';
 +
ctx.stroke();
 
}
 
}
 
X.push(x);
 
X.push(x);
Строка 288: Строка 257:
 
}
 
}
 
z = z*scale/(x_relativemax - x_relativemin);
 
z = z*scale/(x_relativemax - x_relativemin);
some_span.innerHTML = "Увеличение в "+z.toFixed(1)+" раз";
+
some_span.innerHTML = "Увеличение в "+z.toFixed(2)+" раз";
 
clearcanv ();
 
clearcanv ();
 
move = false;
 
move = false;
 
control();
 
control();
 
}
 
}
 
+
x_minim.innerHTML = x_min.toFixed(2);
 +
y_minim.innerHTML = y_min.toFixed(2);
 +
x_maxim.innerHTML = x_max.toFixed(2);
 +
y_maxim.innerHTML = y_max.toFixed(2);
 
}
 
}
  
Строка 336: Строка 308:
 
x = X[m];
 
x = X[m];
 
y = Y[m];
 
y = Y[m];
x_s.innerHTML = x; y_s.innerHTML = y;
 
 
r = Number(RGB[m*3]);
 
r = Number(RGB[m*3]);
 
g = Number(RGB[m*3+1]);
 
g = Number(RGB[m*3+1]);
Строка 347: Строка 318:
 
}
 
}
 
} else {
 
} else {
x_s.innerHTML = x; y_s.innerHTML = y;
 
 
for (j = 0;j<=N; j++){
 
for (j = 0;j<=N; j++){
 
coord();
 
coord();
Строка 354: Строка 324:
 
}
 
}
 
ctx.putImageData(imageData,0,0);
 
ctx.putImageData(imageData,0,0);
document.getElementById('x_minim').value = x_min;
+
document.getElementById('y_minim').value = y_min;
 
document.getElementById('x_maxim').value = x_max;
 
 
}
 
}
  
Строка 368: Строка 336:
 
z2 = 1;
 
z2 = 1;
 
x_min = 0; y_min = 0; x_max = 1; y_max = 1; x_oldmin = 0; y_oldmin = 0; x_oldmax = scale; y_oldmax = scale;
 
x_min = 0; y_min = 0; x_max = 1; y_max = 1; x_oldmin = 0; y_oldmin = 0; x_oldmax = scale; y_oldmax = scale;
if (N_exp == 1) {X.push(0.46); Y.push(0.63); X.push(0.613); Y.push(0.582); a_11 = 1; a_12 = 1;     a_21 = -0.9; a_22 = 1; }  
+
if (N_exp == 1) {x = 0.31; y = 0.32;  a_11 = 1; a_12 = 0.5;     a_21 = -0.5; a_22 = 1; }
if (N_exp == 2) {X.push(0.31); Y.push(0.32); a_11 = 1; a_12 = 0.5;     a_21 = -0.5; a_22 = 1; }
+
if (N_exp == 2) {x = 0.46; y = 0.63; a_11 = 1; a_12 = 1;     a_21 = -0.9; a_22 = 1; }  
if (N_exp == 3) {X.push(0.69); Y.push(0.23); a_11 = 1;  a_12 = 0.1296;     a_21 = -0.1296; a_22 = 1; }
+
if (N_exp == 3) {x = 1/4; y = 1/4; a_11 = 1;     a_12 = 0.01; a_21 = 0.01; a_22 = -1; } 
if (N_exp == 4) {X.push(0.15); Y.push(0.63); a_11 = -0.9899924966004454;  a_12 = 0.1411200080598672;     a_21 = -0.1411200080598672; a_22 = -0.9899924966004454; }
+
if (N_exp == 4) {x = 1/2; y = 1/2; a_11 = 1;     a_12 = 0.32; a_21 = 0.32; a_22 = -1; }
 +
if (N_exp == 5) {x = 1/2; y = 1/2; a_11 = 0.9;   a_12 = 0.1;     a_21 = -0.1; a_22 = 1.2; }
 +
if (N_exp == 6) {x = 1/4; y = 1/4; a_11 = Math.cos(angle); a_12 = Math.sin(angle); a_21 = -a_12; a_22 = a_11; }
 +
if (N_exp == 7) {x = 1/2; y = 1/2; a_11 = 1;  a_12 = 1.5;     a_21 = 0.01; a_22 = -1; }
 +
if (N_exp == 8) {x = 1/2; y = 1/2; a_11 = 1;  a_12 = 0.1296;     a_21 = -0.1296; a_22 = 1; }
 +
if (N_exp == 9) {x = 1/4; y = 1/4; a_11 = -0.05;  a_12 = -0.95;   a_21 = 1.1; a_22 = 0.65; }
 
if (N_exp) {
 
if (N_exp) {
 
 
 
a11.value = a_11;
 
a11.value = a_11;
a12.value = a_12;  
+
a12.value = a_12;    X.push(x); Y.push(y);
 
a21.value = a_21;   
 
a21.value = a_21;   
 
a22.value = a_22;
 
a22.value = a_22;
upd = true;
 
}
 
numberof = X.length;
 
for (m=0; m<numberof; m++) {
 
r = Math.floor(Math.random()*256);
 
g = Math.floor(Math.random()*256);
 
b = Math.floor(Math.random()*256);
 
RGB.push(r);
 
RGB.push(g);
 
RGB.push(b);
 
 
}
 
}
 +
r = Math.floor(Math.random()*256);
 +
g = Math.floor(Math.random()*256);
 +
b = Math.floor(Math.random()*256);
 +
RGB.push(r);
 +
RGB.push(g);
 +
RGB.push(b);
 
}
 
}
 
num.onchange = function() { set_exp(document.getElementById('num').value); control();}
 
num.onchange = function() { set_exp(document.getElementById('num').value); control();}
Строка 401: Строка 370:
 
<meta charset="UTF-8">
 
<meta charset="UTF-8">
 
<title> Fractals </title>
 
<title> Fractals </title>
<script src = 'Fractals25_kopia24_01_21.js'>
+
<script src = 'Fractals25_kopia17_11_20.js'>
 
  </script>
 
  </script>
 
</head>
 
</head>
Строка 407: Строка 376:
 
<p align = 'left'><canvas id = 'cnv' width = 1000 height = 1000 style='border: 1px solid black;'></canvas></p>
 
<p align = 'left'><canvas id = 'cnv' width = 1000 height = 1000 style='border: 1px solid black;'></canvas></p>
 
<span id=some_span></span>
 
<span id=some_span></span>
<br><b>Рассматриваемая область: x_min = <input type = 'text' id = 'x_minim' style = "width:70px;height:10px" value ='0'>, x_max = <input type = 'text' style = "width:70px;height:10px" id = 'x_maxim' value ='1'>, y_min = <input type = 'text' style = "width:70px;height:10px" id = 'y_minim' value = '0'>  x_0 = <span id='x_s'></span>, y_0 = <span id='y_s'></span>
+
<br><b>Рассматриваемая область: x_min = <span id =x_minim></span> , y_min = <span id =y_minim></span>, x_max = <span id=x_maxim></span>, y_max = <span id=y_maxim></span>
<br><b>Задайте начальную точку численно (затем: Обновить рисунок): x_0 = <input type = 'text' id = 'x_o' style = "width:70px;height:10px" value = '0'>, y_0 = <input type = 'text' id = 'y_o' style = "width:70px;height:10px" value = '0'>
 
 
<br><b>(*) Задайте коэффициенты:</b>
 
<br><b>(*) Задайте коэффициенты:</b>
&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&hairsp;<label><input type='text' style = "width:50px;height:15px"  id='a11' value='1' ><b>A_11</b></label>  
+
&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&hairsp;<label><input type='text' id='a11' value='1' ><b>A_11</b></label>  
&hairsp;<label><input type='text' style = "width:50px;height:15px" id='a12' value='1' ><b>A_12</b></label>
+
<label><input type='text' id='a12' value='1' ><b>A_12</b></label>
 
<br><b>(*) Включить очистку холста после клика? </b>
 
<br><b>(*) Включить очистку холста после клика? </b>
 
<label><input type = 'radio' name = 'clear_rect' value = 'yes'><b>Да</b></label>
 
<label><input type = 'radio' name = 'clear_rect' value = 'yes'><b>Да</b></label>
 
<label><input type = 'radio' name = 'clear_rect' value = 'no' checked><b>Нет</b></label>
 
<label><input type = 'radio' name = 'clear_rect' value = 'no' checked><b>Нет</b></label>
&hairsp;<label><input type='text' style = "width:50px;height:15px"  id='a21' value='1' ><b>A_21</b></label>
+
&emsp;&emsp;&hairsp;&hairsp;<label><input type='text' id='a21' value='1' ><b>A_21</b></label>
<label><input type='text' style = "width:50px;height:15px"  id='a22' value='1' ><b>A_22</b></label>
+
<label><input type='text' id='a22' value='1' ><b>A_22</b></label>
 
</br>
 
</br>
 
&emsp;&emsp;&hairsp;&hairsp;<label><b>Режим <I>ZOOM'а</I><input type = 'checkbox' id = 'zoom_check'></b></label>
 
&emsp;&emsp;&hairsp;&hairsp;<label><b>Режим <I>ZOOM'а</I><input type = 'checkbox' id = 'zoom_check'></b></label>
 
&emsp;&emsp;&hairsp;&hairsp;<label><input type='text' id='number_it' value ='200000'><b>&hairsp;&hairsp;&hairsp;Количество итераций</b></label>
 
&emsp;&emsp;&hairsp;&hairsp;<label><input type='text' id='number_it' value ='200000'><b>&hairsp;&hairsp;&hairsp;Количество итераций</b></label>
 
<br><b> Выберите номер эксперимента:</b>
 
<br><b> Выберите номер эксперимента:</b>
<input type='number' size='1' id = 'num' min='1' max='4' value='0' step='1'>
+
<input type='number' size='1' id = 'num' min='1' max='9' value='0' step='1'>
 
<br><b> <input type='button' id='downloadimg'  value='Сохранить рисунок'>
 
<br><b> <input type='button' id='downloadimg'  value='Сохранить рисунок'>
 
<input type = 'button' style="width:200px;height:40px" id = 'refresh' value = 'Обновить рисунок'></b></br>
 
<input type = 'button' style="width:200px;height:40px" id = 'refresh' value = 'Обновить рисунок'></b></br>
Вам запрещено изменять защиту статьи. Edit Создать редактором

Обратите внимание, что все добавления и изменения текста статьи рассматриваются как выпущенные на условиях лицензии Public Domain (см. Department of Theoretical and Applied Mechanics:Авторские права). Если вы не хотите, чтобы ваши тексты свободно распространялись и редактировались любым желающим, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого.
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ МАТЕРИАЛЫ, ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ!

To protect the wiki against automated edit spam, we kindly ask you to solve the following CAPTCHA:

Отменить | Справка по редактированию  (в новом окне)
Источник — «http://tm.spbstu.ru/Фрактал»