/* global var definition block */
/* begin */
var required = new Array("x1", "y1", "x2", "y2"); // перечисляем текстовые поля, которые нужно проверить
var required_show = new Array("x1", "y1", "x2", "y2"); // дублирование предыдущего массива
var delta = new Array(); // задаем массив для хранения данных о треугольниках
var triangle = new Object(); // объявляем объект для хранения данных о треугольнике
//var delta[0] = new Array(8);
var eps = new Number; // объявляем площадь
var trnumber = new Number; // вводим глобальный счетчик треугольников
// заполняем данными
triangle.id = 0; // порядковый номер треугольника, для выбора
triangle.level = 0; // уровень вложенности треугольника
triangle.x1 = 0; // абсцисса первой вершины
triangle.y1 = 0; // ордината первой вершины
triangle.x2 = 0; // абсцисса второй вершины
triangle.y2 = 0; // ордината второй вершины
triangle.x3 = 0; // абсцисса третьей вершины
triangle.y3 = 0; // ордината третьей вершины
var allpoint = new Array(); // задаем массив для хранения данных о вершинах
var objpoint = new Object(); // объявляем объект для хранения данных о вершинах
// заполняем данными
objpoint.id = 0; // порядковый номер вершины, для выбора
objpoint.x1 = 0; // абсцисса вершины
objpoint.y1 = 0; // ордината вершины
/* global var definition block */
/* end */
/* form validate block */
/* begin */
function validate(datainput) {
// регулярное выражение - шаблон чисел
//var pattern = new RegExp("[0-9]+"); - ищет цифры, работает
//var pattern = new RegExp("^[0-9]+?(.|,)?[0-9]*?$");
var pattern = new RegExp("^-??[0-9]+?(.|,)?[0-9]*?$");
var datavalue = document.inform.elements[datainput].value;
// заменяем запятую точкой
//datavalue.replace("^[0-9]+?,?[0-9]*?$", "$1.$2");
datavalue.replace("^-??[0-9]+?,?[0-9]*?$", "$1$2.$4");
// если значение не соответствует шаблону, установить значение атрибута class равным "invalid".
if (datavalue.search(pattern) == -1) {
document.inform.elements[datainput].className = "invalid";
alert('Неверно указано значение точки '+ datainput);
document.inform.elements[datainput].focus();
//return false;
} else {
document.inform.elements[datainput].className = "valid";
}
//else textfield.className = "valid";
//return true;
}
function sendform() {
var i,j;
// проверяем введенные координаты
for (j=0; j<required.length; j++) {
for (i=0; i<document.forms[0].length; i++) {
if (document.forms[0].elements[i].name == required[j] && document.forms[0].elements[i].value == "") {
alert('Пожалуйста, введите ' + required_show[j]);
document.forms[0].elements[i].focus();
document.forms[0].elements[i].className = "invalid";
return false;
}
}
}
// отдельно проверяем введенное значение площади разбиения
if (document.inform.eps.value == "") {
alert('Пожалуйста, введите значение площади разбиения');
document.inform.eps.focus();
document.inform.eps.className = "invalid";
}
//} else if (document.inform.eps.value <= 0) {
//} else if (document.inform.eps.value.search("^-") == -1) {
// alert('Значение площади должно быть положительным');
// document.inform.eps.focus();
// document.inform.eps.className = "invalid";
//}
return true;
}
/* form validate block */
/* end */
/* form auto input block */
/* begin */
function autogenerate() {
var r;
var i,j;
// сбрасываем все значения
document.inform.reset();
// обходим все поля ввода
for (i=0; i<4; i++) {
r = Math.random() * 500;
//document.inform.elements[i].value = r;
document.inform.elements[required[i]].value = r;
}
// и отдельно задаем площадь разбиения
document.inform.eps.value = '7';
}
/* form auto input block */
/* end */
/* triangle's exist check block */
/* begin */
//function triangle_exist(x1, y1, x2, y2) {
/* считаем расстояния между точками */
//var a = Math.sqrt(Math.abs(Math.pow((x1-x2),2) + Math.pow((y1-y2),2)));
//var b = Math.sqrt(Math.abs(Math.pow((x2-x3),2) + Math.pow((y2-y3),2)));
//var c = Math.sqrt(Math.abs(Math.pow((x3-x1),2) + Math.pow((y3-y1),2)));
/* Можно ли построить треугольник на этих точках? */
//if ((a + b > c) && (b + c > a) && (c + a > b)) {
// return true;
//} else {
// alert('По введенным координатам нельзя построить треугольник. Введите другие значения.');
// return false;
//}
//}
/* triangle's exist check block */
/* end */
function bar_make(x1, y1, x2, y2)
{
var x3 = new Number;
var y3 = new Number;
var x4 = new Number;
var y4 = new Number;
x4 = x2;
y4 = y2;
x2 = x4;
y2 = y1;
x3 = x1;
y3 = y4;
var bar_points = new Array(x1, y1, x2, y2, x3, y3, x4, y4);
//return x1, y1, x2, y2, x3, y3, x4, y4;
return bar_points;
}
/* epsilon input field hide block */
/* begin */
function hide_feps() {
document.inform.feps.style.display = 'none';
}
/* epsilon input field hide block */
/* end */
/* triangle build block */
/* begin */
function triangle_build() {
/* получаем введенные координаты */
var x1 = document.inform.x1.value;
var y1 = document.inform.y1.value;
var x2 = document.inform.x2.value;
var y2 = document.inform.y2.value;
// переопределяем значение площади
eps = document.inform.eps.value;
// обнуляем счетчик треугольников
trnumber = 0;
//alert('x2=' + x2);
//alert('y3=' + y3);
// проверяем на треугольник
//if (!triangle_exist(x1, y1, x2, y2, x3, y3)) {
//document.getElementById('feps').style.display = 'block';
//document.inform.feps.style.display = 'block';
//alert('Можно построить');
// строим главный треугольник
//triangle_draw(x1, y1, x2, y2, x3, y3, 'triangle000');
//return;
//}
var bar_points = new Array(8);
bar_points = bar_make(x1, y1, x2, y2);
x1 = bar_points[0];
y1 = bar_points[1];
x2 = bar_points[2];
y2 = bar_points[3];
var x3 = bar_points[4];
var y3 = bar_points[5];
var x4 = bar_points[6];
var y4 = bar_points[7];
// включаем режим ожидания
//busy('on');
// стираем предыдущие данные с массива
delta = new Array();
// очищаем список треугольников
//var objsel = document.getElementById("listoftriangles");
//objsel.options[0] = new Option("Треугольник "+ 0, "tr"+0);
// и начинаем создание треугольников
triangle_make(x1, y1, x2, y2, x3, y3, 0, 0);
//
triangle_make(x2, y2, x3, y3, x4, y4, 0, 0);
//for (var i=0; i<count; i++) {
// objsel.options[i] = new Option("Треугольник "+ i, "tr"+i);
//}
//alert('count=' + objsel.options.length);
// делаем раскрывающийся список со всеми треугольниками
triangleselect(trnumber);
// очищаем список узлов
pointselreset();
// делаем раскрывающийся список со всеми узлами
pointselect(trnumber);
// выключаем режим ожидания
//busy('off');
}
function triangle_make(x1, y1, x2, y2, x3, y3, trid, trlevel) {
trlevel++;
// временно
//var eps = 10;
// объявляем объект для хранения данных о треугольнике
triangle = new Object();
//var triangle = new Object(); // переменная задана как глобальная, не объявляем локальную
// заполняем данными
triangle.id = trid; // должна быть переменная-счетчик вместо 1
triangle.level = trlevel; // должна быть переменная-счетчик вместо 1
triangle.x1 = x1;
triangle.y1 = y1;
triangle.x2 = x2;
triangle.y2 = y2;
triangle.x3 = x3;
triangle.y3 = y3;
// задаем массив для хранения данных о треугольниках
// var delta = new Array(); // массив задан как глобальный, не переопределяем локальный массив
// вносим данные о новом треугольнике
delta[trnumber] = triangle;
//alert('trid=' + trnumber + 'trlevel=' + trlevel);
// теперь обновим id
// строим главный треугольник
triangle_draw(x1, y1, x2, y2, x3, y3, 'triangle000');
// еще 3 вершины для следующего уровня
x1 = x1 * 1;
y1 = y1 * 1;
x2 = x2 * 1;
y2 = y2 * 1;
x3 = x3 * 1;
y3 = y3 * 1;
var x4 = (x1 + x2) / 2;
var y4 = (y1 + y2) / 2;
var x5 = (x1 + x3) / 2;
var y5 = (y1 + y3) / 2;
var x6 = (x2 + x3) / 2;
var y6 = (y2 + y3) / 2;
trnumber = trnumber + 1;
//alert('x5=' + x5);
//triangle_draw(x4, y4, x5, y5, x6, y6, 'triangle000');
// проверяем на площадь
if (triangle_square(x4, y4, x5, y5, x6, y6) > eps) {
triangle_make(x1, y1, x4, y4, x5, y5, trnumber, trlevel);
triangle_make(x2, y2, x4, y4, x6, y6, trnumber, trlevel);
triangle_make(x3, y3, x5, y5, x6, y6, trnumber, trlevel);
triangle_make(x4, y4, x5, y5, x6, y6, trnumber, trlevel);
//} else {
// делаем раскрывающийся список со всеми треугольниками
//triangleselect(trnumber);
}
}
function triangle_square(x1, y1, x2, y2, x3, y3) {
var a;
var b;
var c;
var p;
var s;
// находим длины сторон
a = Math.sqrt(Math.abs(Math.pow((x1-x2),2) + Math.pow((y1-y2),2)));
b = Math.sqrt(Math.abs(Math.pow((x2-x3),2) + Math.pow((y2-y3),2)));
c = Math.sqrt(Math.abs(Math.pow((x3-x1),2) + Math.pow((y3-y1),2)));
// находим полупериметр
p = (a + b + c) / 2;
// находим площадь треугольника
s = Math.sqrt((p - a) * (p - b) * (p - c));
// возвращаем площадь
return s;
}
/* triangle build block */
/* end */
/* triangle draw block */
/* begin */
function triangle_draw(x1, y1, x2, y2, x3, y3, cvid) {
//alert('Draw!');
//id = 'triangle000';
// получаем элемент холста
var canvas = document.getElementById(cvid);
// получаем контекст
var context = canvas.getContext("2d");
// начинаем рисование
context.beginPath();
// задаем цвет линии
//context.strokeStyle = '#fff';
//context.strokeStyle = getElementById(hrcolor).style.color;
var lineclr = document.getElementById('selectcolor').value;
switch(lineclr) {
case 'black':
context.strokeStyle = '#000000';
break;
case 'white':
context.strokeStyle = '#ffffff';
break;
case 'red':
context.strokeStyle = '#ff0000';
break;
case 'blue':
context.strokeStyle = '#0000ff';
break;
case 'green':
context.strokeStyle = '#00ff00';
break;
case 'yellow':
context.strokeStyle = '#ffff00';
break;
case 'orange':
context.strokeStyle = '#ffa500';
break;
default:
context.strokeStyle = '#000000';
break;
}
// устанавливаем первую точку
context.moveTo(x1, y1);
// проводим первую сторону
context.lineTo(x2, y2);
// проводим вторую сторону
context.lineTo(x3, y3);
// проводим третью сторону
context.lineTo(x1, y1);
// обрисовываем все
context.stroke();
// заканчиваем рисование
context.closePath();
}
/* triangle draw block */
/* end */
/* canvas clear block */
/* begin */
function screen_clear() {
// получаем элемент холста
var canvas = document.getElementById('triangle000');
// получаем контекст
var context = canvas.getContext("2d");
// стираем все
context.clearRect(0, 0, 500, 500);
// задаем масштаб по умолчанию
canvasreset();
}
/* canvas clear block */
/* end */
/* accordeon block */
/* begin */
function li_toggle(li) {
switch(li) {
case 'li1':
document.getElementById('author').style.display = "block";
document.getElementById('author').className = "ulactive";
document.getElementById('tech').style.display = "none";
document.getElementById('tech').className = "ulhidden";
document.getElementById('soft').style.display = "none";
document.getElementById('soft').className = "ulhidden";
break;
case 'li2':
document.getElementById('author').style.display = "none";
document.getElementById('author').className = "ulhidden";
document.getElementById('tech').style.display = "block";
document.getElementById('tech').className = "ulactive";
document.getElementById('soft').style.display = "none";
document.getElementById('soft').className = "ulhidden";
break;
case 'li3':
document.getElementById('author').style.display = "none";
document.getElementById('author').className = "ulhidden";
document.getElementById('tech').style.display = "none";
document.getElementById('tech').className = "ulhidden";
document.getElementById('soft').style.display = "block";
document.getElementById('soft').className = "ulactive";
break;
default:
document.getElementById('author').style.display = "block";
document.getElementById('author').className = "ulactive";
document.getElementById('tech').style.display = "none";
document.getElementById('tech').className = "ulhidden";
document.getElementById('soft').style.display = "none";
document.getElementById('soft').className = "ulhidden";
break;
}
}
/* accordeon block */
/* end */
/* set line's color block */
/* begin */
function setcolor(color) {
document.getElementById('hrcolor').style.color = color;
document.getElementById('hrcolor').style.background = color;
document.getElementById('selectcolor').style.color = color;
}
/* set line's color block */
/* end */
/* view triangle's attributes block */
/* begin */
function triangleview(trid) {
// извлекаем id треугольника из полученного значения
trid = trid.substr(2);
//alert('trid=' + trid);
//alert(delta[0].id);
//alert(delta[1].id);
// temp!
/* var triangle = new Object();
// заполняем данными
triangle.id = 1; // должна быть переменная-счетчик вместо 1
triangle.level = 1; // должна быть переменная-счетчик вместо 1
triangle.x1 = 11;
triangle.y1 = 21;
triangle.x2 = 21;
triangle.y2 = 22;
triangle.x3 = 13;
triangle.y3 = 23;*/
// задаем массив для хранения данных о треугольниках
//var delta = new Array();
// вносим данные о новом треугольнике
//delta[0] = triangle;
//delta[1] = triangle;
//delta[2] = triangle;
//delta[3] = triangle;
//delta[4] = triangle;
// temp!
// заполняем форму данными о выбранном треугольнике
document.getElementById('trnomer').value = delta[trid].id;
document.getElementById('trlevel').value = delta[trid].level;
document.getElementById('trx1').value = delta[trid].x1;
document.getElementById('try1').value = delta[trid].y1;
document.getElementById('trx2').value = delta[trid].x2;
document.getElementById('try2').value = delta[trid].y2;
document.getElementById('trx3').value = delta[trid].x3;
document.getElementById('try3').value = delta[trid].y3;
// заодно и площадь посчитаем
document.getElementById('trsq').value = triangle_square(delta[trid].x1, delta[trid].y1, delta[trid].x2, delta[trid].y2, delta[trid].x3, delta[trid].y3);
//alert('id=' + delta[trid].id);
//document.getElementById('try3').value = '33';
}
/* view triangle's attributes block */
/* end */
/* canvas resize block */
/* begin */
function canvasplus() {
var canvas = document.getElementById('triangle000');
// получаем контекст
var context = canvas.getContext("2d");
// стираем все
context.scale(2, 2);
alert('work!');
/*var ww = document.getElementById('triangle000').style.width;
switch(ww) {
case '100px':
document.getElementById('triangle000').style.height = '200';
document.getElementById('triangle000').style.width = '200';
break;
case '200px':
document.getElementById('triangle000').style.height = '300';
document.getElementById('triangle000').style.width = '300';
break;
case '300px':
document.getElementById('triangle000').style.height = '400';
document.getElementById('triangle000').style.width = '400';
break;
case '400px':
document.getElementById('triangle000').style.height = '500';
document.getElementById('triangle000').style.width = '500';
break;
case '500px':
document.getElementById('triangle000').style.height = '600';
document.getElementById('triangle000').style.width = '600';
break;
case '600px':
document.getElementById('triangle000').style.height = '700';
document.getElementById('triangle000').style.width = '700';
break;
case '700px':
document.getElementById('triangle000').style.height = '800';
document.getElementById('triangle000').style.width = '800';
break;
case '800px':
document.getElementById('triangle000').style.height = '900';
document.getElementById('triangle000').style.width = '900';
break;
case '900px':
document.getElementById('triangle000').style.height = '1000';
document.getElementById('triangle000').style.width = '1000';
break;
default:
document.getElementById('triangle000').style.height = '600';
document.getElementById('triangle000').style.width = '600';
break;
}*/
}
function canvasminus() {
var ww = document.getElementById('triangle000').style.width;
switch(ww) {
case '200px':
document.getElementById('triangle000').style.height = '100';
document.getElementById('triangle000').style.width = '100';
break;
case '300px':
document.getElementById('triangle000').style.height = '200';
document.getElementById('triangle000').style.width = '200';
break;
case '400px':
document.getElementById('triangle000').style.height = '300';
document.getElementById('triangle000').style.width = '300';
break;
case '500px':
document.getElementById('triangle000').style.height = '400';
document.getElementById('triangle000').style.width = '400';
break;
case '600px':
document.getElementById('triangle000').style.height = '500';
document.getElementById('triangle000').style.width = '500';
break;
case '700px':
document.getElementById('triangle000').style.height = '600';
document.getElementById('triangle000').style.width = '600';
break;
case '800px':
document.getElementById('triangle000').style.height = '700';
document.getElementById('triangle000').style.width = '700';
break;
case '900px':
document.getElementById('triangle000').style.height = '800';
document.getElementById('triangle000').style.width = '800';
break;
case '1000px':
document.getElementById('triangle000').style.height = '900';
document.getElementById('triangle000').style.width = '900';
break;
default:
document.getElementById('triangle000').style.height = '400';
document.getElementById('triangle000').style.width = '400';
break;
}
}
function canvasreset() {
document.getElementById('triangle000').style.height = '';
document.getElementById('triangle000').style.width = '';
}
/* canvas resize block */
/* end */
/* change select triangles list block */
/* begin */
function triangleselect(count) {
var objsel = document.getElementById("listoftriangles");
for (var i=0; i<count; i++) {
objsel.options[i] = new Option("Треугольник "+ i, "tr"+i);
}
//alert('count=' + objsel.options.length);
}
function triangleselreset() {
document.getElementById("listoftriangles").options.length = 0;
}
function showtriangle() {
// получаем координаты треугольника
var x1 = document.getElementById("trx1").value;
var y1 = document.getElementById("try1").value;
var x2 = document.getElementById("trx2").value;
var y2 = document.getElementById("try2").value;
var x3 = document.getElementById("trx3").value;
var y3 = document.getElementById("try3").value;
// вызываем функцию рисования
//triangle_draw(x1, y1, x2, y2, x3, y3, cvid)
// получаем элемент холста
var canvas = document.getElementById("triangle000");
// получаем контекст
var context = canvas.getContext("2d");
// начинаем рисование
context.beginPath();
// задаем цвет линии
context.strokeStyle = '#bb00bb';
//context.strokeStyle = getElementById(hrcolor).style.color;
// устанавливаем первую точку
context.moveTo(x1, y1);
// проводим первую сторону
context.lineTo(x2, y2);
// проводим вторую сторону
context.lineTo(x3, y3);
// проводим третью сторону
context.lineTo(x1, y1);
// обрисовываем все
context.stroke();
// заканчиваем рисование
context.closePath();
}
function resettriangle() {
// получаем координаты треугольника
var x1 = document.getElementById("trx1").value;
var y1 = document.getElementById("try1").value;
var x2 = document.getElementById("trx2").value;
var y2 = document.getElementById("try2").value;
var x3 = document.getElementById("trx3").value;
var y3 = document.getElementById("try3").value;
// получаем элемент холста
var canvas = document.getElementById("triangle000");
// получаем контекст
var context = canvas.getContext("2d");
// начинаем рисование
context.beginPath();
// задаем цвет линии
var lineclr = document.getElementById('selectcolor').value;
switch(lineclr) {
case 'black':
context.strokeStyle = '#000000';
break;
case 'white':
context.strokeStyle = '#ffffff';
break;
case 'red':
context.strokeStyle = '#ff0000';
break;
case 'blue':
context.strokeStyle = '#0000ff';
break;
case 'green':
context.strokeStyle = '#00ff00';
break;
case 'yellow':
context.strokeStyle = '#ffff00';
break;
case 'orange':
context.strokeStyle = '#ffa500';
break;
default:
context.strokeStyle = '#000000';
break;
}
// устанавливаем первую точку
context.moveTo(x1, y1);
// проводим первую сторону
context.lineTo(x2, y2);
// проводим вторую сторону
context.lineTo(x3, y3);
// проводим третью сторону
context.lineTo(x1, y1);
// обрисовываем все
context.stroke();
context.stroke();
context.stroke();
context.stroke();
// заканчиваем рисование
context.closePath();
}
/* change select triangles list block */
/* end */
/* triangle's neighbor list block */
/* start */
function closerclear() {
// очищаем поле
document.getElementById('closerarea').value = '';
}
function closerfill() {
// очищаем поле
document.getElementById('closerarea').value = '';
// получаем выбранный элемент из списка треугольников
var trid = document.getElementById('listoftriangles').value;
// извлекаем оттуда порядковый номер треугольника
trid = trid.substr(2);
//alert('trid=' + trid);
// обходим весь массив полученных треугольников
for (var i=0; i<delta.length; i++) {
// проверяем уровень вложенности
if (delta[trid].level == delta[i].level) {
// проверяем на общие вершины
if (((delta[trid].x1 == delta[i].x1) && (delta[trid].y1 == delta[i].y1)) || ((delta[trid].x2 == delta[i].x2) && (delta[trid].y2 == delta[i].y2)) || ((delta[trid].x3 == delta[i].x3) && (delta[trid].y3 == delta[i].y3))) {
// добавляем новый элемент в список
document.getElementById('closerarea').value += delta[i].id;
document.getElementById('closerarea').value += '\r\n';
}
}
}
}
function closerselect() {
document.getElementById('closerarea').select();
document.getElementById('closerarea').focus();
}
/* triangle's neighbor list block */
/* end */
/* change select points list block */
/* begin */
function pointselect(count) {
var objsel = document.getElementById("listofpoints");
//alert(count);
// объявляем массив вершин
//var allpoint = new Array();
// объявляем объект-узел
//var objpoint = Object();
// задаем свойства объекта
//objpoint.id = 0;
//objpoint.x1 = 0;
//objpoint.y1 = 0;
// задаем счетчик-индекс массива
var p = 0;
//alert('p=' + p);
// задаем индикатор точки
var exist = new Boolean();
//alert('exist='+ !exist);
var j = 0;
// обходим массив треугольников
for (var i=1; i<count; i++) {
// есть ли эта точка в массиве?
// презумпция невиновности - по умолчанию нет точки
exist = false;
//for (j=i; j>0; j--) {
for (j=1; j<p; j++) {
if ((delta[i].x1 == allpoint[j].x1) && (delta[i].y1 == allpoint[j].y1)) {
// значит уже есть
exist = true;
}
}
// если точка в массиве еще не присутсвует
if (exist == false) {
objpoint = new Object();
// то записывает ее туда
allpoint[p] = objpoint;
allpoint[p].id = p;
allpoint[p].x1 = delta[i].x1;
allpoint[p].y1 = delta[i].y1;
// и прибавляем счетчик
p++;
}
// есть ли эта точка в массиве?
// презумпция невиновности - по умолчанию нет точки
exist = false;
//for (j=i; j>0; j--) {
for (j=1; j<p; j++) {
if ((delta[i].x2 == allpoint[j].x1) && (delta[i].y2 == allpoint[j].y1)) {
// значит уже есть
exist = true;
}
}
// если точка в массиве еще не присутсвует
if (exist == false) {
objpoint = new Object();
// то записывает ее туда
allpoint[p] = objpoint;
allpoint[p].id = p;
allpoint[p].x1 = delta[i].x2;
allpoint[p].y1 = delta[i].y2;
// и прибавляем счетчик
p++;
}
// есть ли эта точка в массиве?
// презумпция невиновности - по умолчанию нет точки
exist = false;
//for (j=i; j>0; j--) {
for (j=1; j<p; j++) {
if ((delta[i].x3 == allpoint[j].x1) && (delta[i].y3 == allpoint[j].y1)) {
// значит уже есть
exist = true;
}
}
// если точка в массиве еще не присутсвует
if (exist == false) {
objpoint = new Object();
// то записывает ее туда
allpoint[p] = objpoint;
allpoint[p].id = p;
allpoint[p].x1 = delta[i].x3;
allpoint[p].y1 = delta[i].y3;
// и прибавляем счетчик
p++;
}
}
// заполняем список вершин
for (var k=0; k<allpoint.length; k++) {
objsel.options[k] = new Option("Узел "+ k, "pt"+k);
}
//alert('point=' + allpoint.length);
//for (var i=0; i<count; i++) {
// objsel.options[i] = new Option("Узел "+ i, "tr"+i);
//}
//alert('count=' + objsel.options.length);
}
function pointselreset() {
document.getElementById("listofpoints").options.length = 0;
}
/* change select points list block */
/* end */
/* points's neighbor list block */
/* start */
function ptcloserclear() {
// очищаем поле
document.getElementById('ptcloserarea').value = '';
}
function ptcloserfill() {
// очищаем поле
document.getElementById('ptcloserarea').value = '';
// получаем выбранный элемент из списка вершин
var ptid = document.getElementById('listofpoints').value;
// извлекаем оттуда порядковый номер вершины
ptid = ptid.substr(2);
//alert('trid=' + trid);
// временный массив с вершинами
var ptar = new Array();
// индекс этого массива
var ptarin = new Number;
// массив не имеет ни одного элемента
ptarin = 0;
// индикатор повторений элементов в массиве
var ptdbl = new Boolean;
// обходим все полученные треугольники
for (var m=0; m<delta.length; m++) {
// проверяем первую вершину m-го треугольника
if ((allpoint[ptid].x1 == delta[m].x1) && (allpoint[ptid].y1 == delta[m].y1)) {
// находим 2 соседние вершины из этого треугольника в списке вершин
for (var n=0; n<allpoint.length; n++) {
// проверяем - эта вершина вторая или нет
if ((allpoint[n].x1 == delta[m].x2) && (allpoint[n].y1 == delta[m].y2)) {
// вершина - та, поэтому выводим ее id в список соседних вершин
//document.getElementById('ptcloserarea').value += allpoint[n].id;
//document.getElementById('ptcloserarea').value += '\r\n';
// вершина - та, теперь проверим, есть ли она уже в массиве
ptdbl = false;
for (var ct=0; ct<ptarin; ct++) {
// если она уже есть...
if (ptar[ct] == allpoint[n].id) {
// то активируем индикатор
ptdbl = true;
}
}
// добавляем вершину в массив, если ее там еще нет
if (!ptdbl) {
ptarin++;
ptar[ptarin] = allpoint[n].id;
}
}
// проверяем - эта вершина третья или нет
if ((allpoint[n].x1 == delta[m].x3) && (allpoint[n].y1 == delta[m].y3)) {
// вершина - та, поэтому выводим ее id в список соседних вершин
//document.getElementById('ptcloserarea').value += allpoint[n].id;
//document.getElementById('ptcloserarea').value += '\r\n';
// вершина - та, теперь проверим, есть ли она уже в массиве
ptdbl = false;
for (var ct=0; ct<ptarin; ct++) {
// если она уже есть...
if (ptar[ct] == allpoint[n].id) {
// то активируем индикатор
ptdbl = true;
}
}
// добавляем вершину в массив, если ее там еще нет
if (!ptdbl) {
ptarin++;
ptar[ptarin] = allpoint[n].id;
}
}
}
}
// проверяем вторую вершину m-го треугольника
if ((allpoint[ptid].x1 == delta[m].x2) && (allpoint[ptid].y1 == delta[m].y2)) {
// находим 2 соседние вершины из этого треугольника в списке вершин
for (var n=0; n<allpoint.length; n++) {
// проверяем - эта вершина первая или нет
if ((allpoint[n].x1 == delta[m].x1) && (allpoint[n].y1 == delta[m].y1)) {
// вершина - та, поэтому выводим ее id в список соседних вершин
//document.getElementById('ptcloserarea').value += allpoint[n].id;
//document.getElementById('ptcloserarea').value += '\r\n';
// вершина - та, теперь проверим, есть ли она уже в массиве
ptdbl = false;
for (var ct=0; ct<ptarin; ct++) {
// если она уже есть...
if (ptar[ct] == allpoint[n].id) {
// то активируем индикатор
ptdbl = true;
}
}
// добавляем вершину в массив, если ее там еще нет
if (!ptdbl) {
ptarin++;
ptar[ptarin] = allpoint[n].id;
}
}
// проверяем - эта вершина третья или нет
if ((allpoint[n].x1 == delta[m].x3) && (allpoint[n].y1 == delta[m].y3)) {
// вершина - та, поэтому выводим ее id в список соседних вершин
//document.getElementById('ptcloserarea').value += allpoint[n].id;
//document.getElementById('ptcloserarea').value += '\r\n';
// вершина - та, теперь проверим, есть ли она уже в массиве
ptdbl = false;
for (var ct=0; ct<ptarin; ct++) {
// если она уже есть...
if (ptar[ct] == allpoint[n].id) {
// то активируем индикатор
ptdbl = true;
}
}
// добавляем вершину в массив, если ее там еще нет
if (!ptdbl) {
ptarin++;
ptar[ptarin] = allpoint[n].id;
}
}
}
}
// проверяем третью вершину m-го треугольника
if ((allpoint[ptid].x1 == delta[m].x3) && (allpoint[ptid].y1 == delta[m].y3)) {
// находим 2 соседние вершины из этого треугольника в списке вершин
for (var n=0; n<allpoint.length; n++) {
// проверяем - эта вершина первая или нет
if ((allpoint[n].x1 == delta[m].x1) && (allpoint[n].y1 == delta[m].y1)) {
// вершина - та, поэтому выводим ее id в список соседних вершин
//document.getElementById('ptcloserarea').value += allpoint[n].id;
//document.getElementById('ptcloserarea').value += '\r\n';
// вершина - та, теперь проверим, есть ли она уже в массиве
ptdbl = false;
for (var ct=0; ct<ptarin; ct++) {
// если она уже есть...
if (ptar[ct] == allpoint[n].id) {
// то активируем индикатор
ptdbl = true;
}
}
// добавляем вершину в массив, если ее там еще нет
if (!ptdbl) {
ptarin++;
ptar[ptarin] = allpoint[n].id;
}
}
// проверяем - эта вершина вторая или нет
if ((allpoint[n].x1 == delta[m].x2) && (allpoint[n].y1 == delta[m].y2)) {
// вершина - та, поэтому выводим ее id в список соседних вершин
//document.getElementById('ptcloserarea').value += allpoint[n].id;
//document.getElementById('ptcloserarea').value += '\r\n';
// вершина - та, теперь проверим, есть ли она уже в массиве
ptdbl = false;
for (var ct=0; ct<ptarin; ct++) {
// если она уже есть...
if (ptar[ct] == allpoint[n].id) {
// то активируем индикатор
ptdbl = true;
}
}
// добавляем вершину в массив, если ее там еще нет
if (!ptdbl) {
ptarin++;
ptar[ptarin] = allpoint[n].id;
}
}
}
}
}
// теперь выводим все соседние вершины
for (var out=1; out<ptarin; out++) {
document.getElementById('ptcloserarea').value += ptar[out];
document.getElementById('ptcloserarea').value += '\r\n';
}
// обходим весь массив полученных узлов
//for (var i=0; i<allpoint.length; i++) {
// проверяем уровень вложенности
// if (allpoint[ptid].level == allpoint[i].level) {
// проверяем на общие вершины
/// if (((allpoint[ptid].x1 == allpoint[i].x1) && (allpoint[ptid].y1 == allpoint[i].y1)) || ((allpoint[ptid].x2 == allpoint[i].x2) && (allpoint[ptid].y2 == allpoint[i].y2)) || ((allpoint[ptid].x3 == allpoint[i].x3) && (allpoint[ptid].y3 == allpoint[i].y3))) {
// добавляем новый элемент в список
// document.getElementById('ptcloserarea').value += allpoint[i].id;
// document.getElementById('ptcloserarea').value += '\r\n';
// }
// }
//}
}
function ptcloserselect() {
document.getElementById('ptcloserarea').select();
document.getElementById('ptcloserarea').focus();
}
/* points's neighbor list block */
/* end */
/* view point's attributes block */
/* begin */
function pointview(ptid) {
// извлекаем id вершины из полученного значения
ptid = ptid.substr(2);
// заполняем форму данными о выбранной вершине
document.getElementById('ptnomer').value = allpoint[ptid].id;
//document.getElementById('ptlevel').value = delta[ptid].level;
document.getElementById('ptx1').value = allpoint[ptid].x1;
document.getElementById('pty1').value = allpoint[ptid].y1;
//document.getElementById('ptx2').value = delta[ptid].x2;
//document.getElementById('pty2').value = delta[ptid].y2;
//document.getElementById('ptx3').value = delta[ptid].x3;
//document.getElementById('pty3').value = delta[ptid].y3;
//alert('id=' + delta[trid].id);
//document.getElementById('try3').value = '33';
}
/* view point's attributes block */
/* end */
/* aproximy functions block */
/* start */
function aproxclear() {
// очищаем поле
document.getElementById('aproxarea').value = '';
}
function aproxselect() {
document.getElementById('aproxarea').select();
document.getElementById('aproxarea').focus();
}
function aproxfill() {
//alert('Last level = ' + delta[delta.length-1].level);
var ct = delta[delta.length-1].level;
for (var i=0; i<trnumber; i++) {
if (delta[i].level == ct) {
document.getElementById('aproxarea').value += 'a0 + a1 * ' + delta[i].x1 + ' + a2 * ' + delta[i].y1;
document.getElementById('aproxarea').value += '\r\n';
}
}
// define determs
//var d0, d1, d2, d3 = new Number;
// for all triangles
//for (var k=0; k<delta.length; k++) {
// d0 = delta[k].x2 * delta[k].x3 * delta[k].x3 +
// delta[k].x1 * delta[k].x2 * delta[k].x2 +
// delta[k].x1 * delta[k].x1 * delta[k].x3 -
// delta[k].x2 * delta[k].x1 * delta[k].x1 -
// delta[k].x3 * delta[k].x2 * delta[k].x2 -
// delta[k].x1 * delta[k].x3 * delta[k].x3;
// d1 = delta
}
/* aproximy functions block */
/* end */
/* compiz-like functions block */
/* begin */
function busy(opti) {
if (opti == 'on') {
document.getElementById('d0').style.display = 'block';
} else {
document.getElementById('d0').style.display = 'none';
}
//for (var k=0; k<80; k++) {
//document.getElementById('d0').style.opacity = k/100;
//for (var j=0; j<1000000; j++) {
// devnull = 2;
//}
//}
}
/* compiz-like functions block */
/* end */