/**
класс objModeling.js
моделирование
==============================================================================================
функции класса: 
build() - сборка всех функций для построения  
toolbar() - интерфейс панели управления
returnvalue() - установка основных переменных W,D,S
middlecordinat() - определение центральных координат канвы для рисования аммонитов
ammonite_main() - сборка массива точек для построения аммонита
ammonite_draw() - рисование аммонита
redraw_ammonite() - перерисовка аммонита
==============================================================================================
(c) Mychko Eduard, 2015, Moscow, Russia, eduard.mychko@gmail.com
==============================================================================================
*/
var objModeling = {
	/*--------------------------------------------------------------переменные--------------------------------------------------------------*/
	'canvas' : '#content-modeling-canvas', /* DIV канва для SVG */
 	'boxWidth' : 0,  /* ширина канвы */
	'boxHeight' : 0, /* высота канвы */
	'svg' : false, /* канва, по умолчанию ее нет */
	'mainVar' : {'W' : 0, 'D' :  0, 'S' : 0}, /* основные переменные W,D,S */
	'ammonite_arr' : 0,  /* набор координат для построения аммонита */
	 
	/*--------------------------------------------------------------сборка--------------------------------------------------------------*/
	build: function(){
		this.boxWidth = (objD3.svgsize(this.canvas,'width'))+15; /* задаем ширину канвы */
		this.boxHeight =  objD3.svgsize(this.canvas,'height'); /* задаем высота канвы */
		this.svg = objD3.generateSvg(this.canvas,this.boxWidth,this.boxHeight,[20,20,20,20]);  /*создаем канву (где рисовать, ширина, длина, отступы)*/
		objD3.makeGrid(this.svg,this.boxWidth,this.boxHeight,30,-20);
		this.toolbar(); /* панель управления */
		this.setValueTypeSections();
		this.returnvalue(); /* устанавливаем переменные W,D,S */
		this.ammonite_main();  /* массив точек для генерации аммонита   */
		this.ammonite_draw(); /* рисуем аммонита */
		return false;
 	},
	
	/*-----------------------------------------------------установка основных переменных W,D,S--------------------------------------------*/
	returnvalue: function(){
		this.mainVar.W = (Number($("#valueW").val()))/100;
		this.mainVar.D = (Number($("#valueD").val()))/100;
		this.mainVar.S = (Number($("#valueS").val()))/100;
		return false;
	},
	
	
	setValueTypeSections: function(){
		$("body").on("click", "input[name='typesections']", function() {
			var data = $(this).parent("label").attr("data");
			var jsonData = jQuery.parseJSON(data);
			//console.log(jsonData);
			$('#centerUst').val(jsonData.cY);
			$('#topWeight').val(jsonData.tX);
			$('#botWeight').val(jsonData.bX);
				objModeling.redraw_ammonite();
		});
	},
	
	/*--------------------------------------------------------функции тулбара--------------------------------------------------------------*/
	toolbar: function(){
		/* интерфейс управления */
		$("body").on("input", ".content-modeling .content-toolbar-range", function() {
			/* если это слайдеры W,D,S, то делим значение на 100 */
			var value  = $(this).val();
			
			if ($(this).attr('id') == 'valueW' || $(this).attr('id') == 'valueD' || $(this).attr('id') == 'valueS') value = value/100; 
			
			/* для частоты и высоты ребер */
			if ($(this).attr('id') == 'valueFreqRibs'){
				/* если мы изменяем частоту ребер не выбрав их высоту - предупреждение*/
				if ($('#valueConvexRibs').val()==100) objHelpers.popup(AVG.lang[AVG.language]['error_convex_ribs'],"warning"); 
				 /* если нет ребер */
				if ($(this).val()==1) var text = AVG.lang[AVG.language]['none'];
				/* если частые*/
				if ($(this).val()>1 && $(this).val()<=3) var text = AVG.lang[AVG.language]['often']; 
				/* если редкие */
				if ($(this).val()>3) var text = AVG.lang[AVG.language]['rarely']; 
 				$(this).next('span').html(text);
			}else if ($(this).attr('id') == 'valueConvexRibs'){
				var text = ((Math.round((value/$('#valueR').val())*100))/100)+" "+AVG.lang[AVG.language]['radius'];
				$(this).next('span').html(text);
			}else{
				$(this).next('span').html(value);
			}
			objModeling.redraw_ammonite(); /* перерисовываем аммонита */
		});

		
		/* перерисовываем аммонита при нажатии на любой чекбокс*/
		$("body").on("click", ".content-modeling input[type=radio], .content-modeling input[type=checkbox]", function() {
			objModeling.redraw_ammonite();
		});
		return false;
	},
	
	/*------------------------------------определение центральных координат канвы для рисования аммонитов----------------------------------------*/
	middlecordinat: function(){
		/* средние координаты */
		var xMid = this.boxWidth/2; /* центр X  */
		var yMid = this.boxHeight/2; /* центр Y  */
		/* для центров аммонитов  */
		var xAmmLeft = xMid/2;
		var xAmmRight = xMid+(xMid/2);
		var objCoord = {'xMid': xMid, 'yMid': yMid, 'xAmmLeft': xAmmLeft, 'xAmmRight': xAmmRight};
		return objCoord;
	},
	
	/*------------------------------------------------------перерисовывание аммонита----------------------------------------------------------*/
	redraw_ammonite: function(svg){
		objD3.remove(this.svg,".ammonite_exo");
		objD3.remove(this.svg,".ammonite_endo");
		this.returnvalue(); /* установка основных переменных W,D,S */
		this.ammonite_main(); /* собираем массив координат аммонитов */
		this.ammonite_draw(); /* рисуем аммонитов*/
		return false;
	},
	
	/*----------------------------------------------------рисование аммонита и линий-------------------------------------------------------------*/
	ammonite_draw: function(){
		var lineFunction = d3.svg.line()
                        .x(function(d) { return d.x; })
                        .y(function(d) { return d.y; })
                        .interpolate("basis-closed");	
		
		var ammonite = this.ammonite_arr[0].reverse();

		
		var lineFunction2 = d3.svg.line()
                        .x(function(d) { return d.x; })
                        .y(function(d) { return d.y; })
                        .interpolate("linear");
 
		
		this.svg.append("path")
                            .attr("d", lineFunction(ammonite))
							.attr("class","ammonite_exo");				
	
	
	
		this.svg.append("path")
                            .attr("d", lineFunction2(this.ammonite_arr[1]))
							.attr("class","ammonite_endo");
							
		objD3.remove(this.svg,".lineX"); /* очистка от линий */
		
		/* строим линии по важным точкам */
 		if($("#modeling-toolbar-axis").prop("checked")){
			var ip  = this.ammonite_arr[2][0]; /* массив с координатами важных точек*/
			console.log(this.middlecordinat().yMid);
 			var al = []; /* массив для линий */
			al.push([{x: -20, y: this.middlecordinat().yMid},{x: this.boxWidth+20, y: this.middlecordinat().yMid}]); // линия через пупок
			al.push([{x: -20, y: ip.uR.y}, {x: this.boxWidth+20, y: ip.uR.y}]); // линия через uR
			al.push([{x: -20, y: ip.R.y}, {x: this.boxWidth+20, y: ip.R.y}]); // линия через R
			al.push([{x: -20, y: ip.r_min.y}, {x: this.boxWidth+20, y: ip.r_min.y}]); // линия через r
			al.push([{x: -20, y: ip.uR2.y}, {x: this.boxWidth+20, y: ip.uR2.y}]); // линия через второй оборот
			/* рисуем линии */
			for (var index = 0; index < al.length; ++index) {
				this.svg.append("path")
					.attr("d", lineFunction2(al[index]))
					.attr("class","lineX");
			}
		}
		return false;
  
	},
	
	/*-------------------------------получить значения массива точек линий спирали аммонита----------------------------------------------------------*/
	getmathspiral: function(R,func,Phi,w,ppi,mnoj){
			if 	(func=='sin') 	var result = (((R * (Math.sin(Phi)*100) * Math.pow(w, ((-1*Phi) / (2 * ppi))))/100)*2)*mnoj;
			if 	(func=='cos') 	var result = (((R * (Math.cos(Phi)*100) * Math.pow(w, ((-1*Phi) / (2 * ppi))))/100)*2)*mnoj;
			return result;
	},
		
	/*-------------------------------------------------расчеты аммонита-----------------------------------------------------------------*/
	ammonite_main: function(W,D,S){
		/* переменные */
		var coordinate = objModeling.middlecordinat();
		//console.log(coordinate);
		var ppi = 3.141592654;
		var w = this.mainVar.W;
		var d = this.mainVar.D;
		var S = this.mainVar.S;
		var R0 = $("#valueR").val();
 		var yDeviat = coordinate.yMid;
		var xDeviat = coordinate.xAmmLeft;
		d3.selectAll(".second").remove(); // очистка
		d3.selectAll(".ust").remove(); // очистка
		var appertura = $('input[name=option_appertura]:checked').val();
 		var IMX = R0 * d;
		var PHImax = (6.2832) * Math.log((200 * R0 * (1 - d)) / R0) / Math.log(w);
 		var n = ((PHImax * 180) / 3.1416 + 1)/5;
		var Phi = (ppi / 36) + (ppi);
		var ammonite_arr = []; // главный массив точек
		ammonite_arr[0] = [];
		ammonite_arr[1] = [];
		ammonite_arr[2] = [];
		var edge_points = []; // массив точек краев внешней линии
		var edge_points_2 = []; // массив точек краев внутренней линии
		var OX = []; /* X внешней линии */
		var OY = [];
		var OX_0 = [];  /* X истинной внешней линии */
		var OY_0 = [];		
		var OX_c = [];  /* X истинной центральной линии */
		var OY_c = [];
		var ix = []; /* X внутренней линии */
		var iy = [];
		var freqRibs = $("#valueFreqRibs").val(); // частота ребер
		var convexRibsVal = ($("#valueConvexRibs").val())/100; // высота ребе
		var n_outer = n;
	 
		/* показывать ли все обороты или скрывать их под устьем */
		if($("#modeling-toolbar-viewAllLineAmm").prop("checked")==false){
			if (R0 * Math.pow(w,(-1.25)) > IMX * Math.pow(w,(-0.25))) {
				var n_outer =  73; /* примерное число, в котором происходит соприкосание Ur и устья */
 			}
			else {
				var n_outer = n;
 			}
		}
		
		/*================================= формируем внешнюю линию ===============================*/
		
		for(var j=1; j <=n_outer; j++){
			if (j%freqRibs)	var convexRibs = 1; /* если нет ребер множитель = 1 */
			else			var convexRibs = convexRibsVal; /* если есть ребра */

			OX[j] = this.getmathspiral(R0,"sin",Phi,w,ppi,convexRibs); /* точки по X */
			OY[j] = this.getmathspiral(R0,"cos",Phi,w,ppi,convexRibs); /* точки по Y */
			
			/*формирование значения истинных точек, необходимо для раковины в профиль*/ 
		 	OX_0[j] = this.getmathspiral(R0,"sin",Phi,w,ppi,1); /* точки по X */
			OY_0[j] = this.getmathspiral(R0,"cos",Phi,w,ppi,1); /* точки по Y */
			
			var u_cY = (R0*$('#centerUst').val())/100; 
			/*формирование значения истинных точек, необходимо для раковины в профиль*/ 
		 	//OX_c[j] = this.getmathspiral(u_cY,"sin",Phi,w,ppi,1); /* точки по X */
			//OY_c[j] = this.getmathspiral(u_cY,"cos",Phi,w,ppi,1); /* точки по Y */
			
			
			/*если есть совпадение*/
			if (Math.round(((OX_0[j]+yDeviat)*10))==(yDeviat*10))  edge_points.push(OY_0[j]+yDeviat); /* формируем массив точек краев по игрику */
			Phi = Phi + (3.1416 / 36); /* меняем по спирали Phi */
			
			ammonite_arr[0].push({'x':OX[j]+xDeviat,'y':OY[j]+yDeviat}); /* добавляем в массив */
			//ammonite_arr[1].push({'x':OX_c[j]+xDeviat,'y':OY_c[j]+yDeviat}); /* добавляем в массив */
		}
		 
		
		
		//objD3.drawcircle(this.svg,ammonite_arr[0][0].x,ammonite_arr[0][0].y);	   
		
		//objD3.drawcircle(this.svg,ammonite_arr[0][ammonite_arr[0].length-1].x,ammonite_arr[0][ammonite_arr[0].length-1].y);	   
		
		// console.log(ammonite_arr[0].length);
		
		/*================================= формируем внутреннюю линию ===============================*/		 
		if($("#modeling-toolbar-viewAllLineAmm").prop("checked")==false){ /* если показывать все обороты то начальная точка должна идти не из пупка */
			Phi = (n * (ppi / 36) + (ppi))- (3.1416 / 36);
			if (Phi < ((ppi / 2) + (ppi / 36)))	  Phi = (ppi / 2) + (ppi / 36);
		}
				
 		for(var m=1; m <= n; m++){
			ix[m] = this.getmathspiral(IMX,"sin",Phi,w,ppi,1);
			iy[m] = this.getmathspiral(IMX,"cos",Phi,w,ppi,1);
			if (Phi < (ppi / 2))  break; 
			
			/*если есть совпадение*/
			if (Math.round(((ix[m]+yDeviat)*10))==(yDeviat*10)) edge_points_2.push(iy[m]+yDeviat);  /* формируем массив точек краев по игрику */
			Phi = Phi - (3.1416 / 36); /* меняем по спирали Phi */
			ammonite_arr[0].push({'x':ix[m]+xDeviat,'y':iy[m]+yDeviat}); /* добавляем в массив */
		}
		

		/*================================= вычисляем важные точки ===============================*/
		// вычисляем длину между крайними точками
		// начальные точки
		var lx1 = ix[ix.length-1]+xDeviat; // начальная  X
		var ly1 = iy[iy.length-1]+yDeviat;	// начальная  Y
		var lx2 = OX[1]+xDeviat; //конечная  X
		var ly2 = OY[1]+yDeviat; //конечная  Y
		var ust = Math.sqrt(Math.pow((lx1-lx2),2) + Math.pow((ly1 - ly2),2)); // длина прямой
			
 
		var s = {'x':OX[1]+xDeviat,'y':OY[1]+yDeviat};
 		ammonite_arr[0].push(s);	

	 
		// находим нижний край аммонита извращенным методом
		var yr = Math.max.apply(Math, edge_points); // второй оборот 
		var uR2 =  Math.min.apply(Math, edge_points); // низ раковины
		 
		// массив важных точек
		var importantpoints = {
			'uR' : {'x': xDeviat, 'y': ly1},
			'R' : {'x': xDeviat, 'y': ly2},
			'U' : {'x': xDeviat, 'y': yDeviat},
			'r_min' : {'x': xDeviat, 'y': yr},
			'uR2' : {'x': xDeviat, 'y': uR2},
		};
	 
	//objD3.drawcircle(this.svg,importantpoints.uR2.x,importantpoints.uR2.y);
	
	
	// -------------------------------------------раковина в профиль ----------------------------------------------------------------------------
	/*******************************************************************************************************************
	**************************************** собираем универсальную модель *********************************************
	********************************************************************************************************************
	
	l - left; r - right; c - center; b - bottom; t - top; s - sub; r2 - верхний оборот; u - устье; r - нижний оборот  
	
	*********************************************************************************************************************
		                                  || u_t = R  ||                                          || r2_t = uR2  ||
			   u_l_t--R--u_r_t            || u_l_t    ||		  r2_l_t-uR2-r2_r_t	              || r2_l_t      ||
			 / 				   \          || u_r_t    ||		  /				\                 || r2_r_t      ||
			/					\         || u_l_s_t  ||		 /				 \                || r2_l_b_t    ||
		   /					 \        || u_r_s_t  ||  	 r2_l_b_t			r2_r_b_t          || r2_r_b_t    ||
		u_l_s_t					u_r_s_t	  || u_l_c	  ||	  	\	 В. ОБОРОТ     /              || r2_l_c_t    ||
		/ 						   \      || u_r_c    ||	 	 \				  /               || r2_r_c_t    ||
	   /							\     || u_l_s_b  ||   		r2_l_c_t	 r2_r_c_t             ||             ||
	  /								 \    || u_r_s_b  ||	       \			/                 ||             ||
	u_l_c		    УСТЬЕ   		u_r_c || u_l_b    ||==================================================================
	  \								 /    || u_r_b    ||                                          || 		     ||
	   \							/     || u_b = uR ||		r_l_c_t			  r_r_c_t 		  || r_l_c_t     ||
		\						   /      ||          ||	  	 /		Н. ОБОРОТ  	 \            || r_r_c_t     ||
		u_l_s_b					u_r_s_b   ||          ||	    /					  \           || r_l_s_b     ||
		    \					/         ||          ||	  r_l_s_b				r_r_s_b       || r_r_s_b     ||
			 \				   /          ||          ||		 \					  /           || r_l_b       ||
			  u_l_b---uR--u_r_b	          ||          ||		  \					 /            || r_r_b       ||
	                                      ||          ||		  r_l_b---r_min--r_r_b            || r_b = r_min ||
	                                      ||          ||                                          ||             ||
	**********************************************************************************************************************/
	/***/
	var Rx = coordinate.xAmmRight; /* X - верхний край устья */
	var Ry = ly2; /* Y - верхний край устья */
	var Ury = ly1; /* Y - нижний край устья */
	var Urx = coordinate.xAmmRight; /* X - нижний край устья */
	var b = Math.sqrt(Math.pow(xDeviat-xDeviat,2)+Math.pow(ly1-ly2,2)); /* высота устья */
	var a = b/S; /* ширина устья */
	var u_l_cY = (b*$('#centerUst').val())/100; /* y координата центра расширения устья*/
	
	
	
	var u_w_t_x = ((a/2)*$('#topWeight').val())/100; /* x координата верха расширения*/
	var u_w_b_x = ((a/2)*$('#botWeight').val())/100; /* x координата верха расширения*/
	var rMin = yr;
	
	var temp_top_y_r =  Math.max.apply(Math, edge_points_2); // y верха второго оборота раковины снизу
	if (temp_top_y_r!='Infinity') var r_t = temp_top_y_r;
	else						  var r_t = "30";
	
	var b_r = Math.sqrt(Math.pow(xDeviat-xDeviat,2)+Math.pow(rMin-r_t,2)); /* высота нижнего оборота */
 	var r_l_cY = (b_r*$('#centerUst').val())/100; /* y координата центра расширения устья*/
	
	
	
	var temp_b_y_r =  Math.min.apply(Math, edge_points_2); // y верха второго оборота раковины снизу
	if (temp_b_y_r!='Infinity') var r2_b = temp_b_y_r;
	else						  var r2_b = "30";
	
	var b2_r = Math.sqrt(Math.pow(xDeviat-xDeviat,2)+Math.pow(uR2-r2_b,2)); /* высота верхнего оборота */
 	var r2_l_cY = (b2_r*$('#centerUst').val())/100;  
	
	
	
	var a2 = b_r/S; /* ширина устья */
	var r_w_b_x = ((a2/2)*$('#botWeight').val())/100; /* x координата верха расширения*/
	
	// console.log(b);
	// console.log(b_r);
	
	
	/**
	РАЗМЕРНОСТИ (знаменатель) ДЛЯ УМЕНЬШЕНИЯ ТОЛЩИНЫ ОБОРОТОВ (MAX):UST->R->R2:(MIN)
	*/
	var nR2 = 4;
	var nR = 2;
	
	
	var curvesProfileAmm = { 
				'r' : [
					/*------------начало R2----верхний оборот-------------*/		
					  	/* r2_l_b_t	*/	{			
											'x' : Rx - ((a/2)/nR2), 			
											'y' : uR2 +  r2_l_cY 	
					 					},	
					 	/* r2_l_t */	 {
											'x' : Rx - (u_w_t_x/nR2), 	/* X-левое верхнего расширения + %от слайдера, деленный на размерноть сужения */
											'y' : uR2+5 				/* по Y всегда по верхей части устья*/
										},
					 	/* r2_t */  	{
											'x' : Rx, 					/* X центр верхнего оборота */
											'y' : uR2 					/* Y центр верхнего оборота */
					 					},
					 	/* r2_r_t' */	{
											'x' : Rx + (u_w_t_x/nR2), 	/* X-правое верхнего расширения + %от слайдера, деленный на размерноть сужения */
											'y' : uR2+5  				/* по Y всегда по Y верхей части устья + 5 */
										},	
					 	/* r2_r_b_t	*/	{			
											'x' : Rx + ((a/2)/nR2), 			
											'y' : uR2 +  r2_l_cY 	
										},	
					/*------------конец R2---верхний оборот-------------*/		
					
	
					/*------------R-------------*/
					 	/*r_r_c_t' :  {
					 					'x' :  Rx + (u_w_b_x/nR),
					 					'y' :  r_t
					 					},	*/
					 	/*r_r_s_b	:*/	{			
					 					'x' : Rx + ((a/2)/nR), 			
					 					'y' :  rMin - r_l_cY
					 					},				
 					 	/*'r_r_b' : */{
					 					'x' : Rx + (u_w_t_x/nR),
					 					'y' : rMin-10		
					 					},	
					 						
					 	/*'r_b' : */	{			
					 					'x' : Rx, 			
					 					'y' : rMin			
					 					},	
					 	/*'r_l_b' : */{
					 					'x' : Rx - (u_w_t_x/nR),
					 					'y' : rMin-10		
					 					},
					 					
					 	/*r_l_s_b	:*/	{			
					 					'x' : Rx - ((a/2)/nR), 			
					 					'y' :  rMin - r_l_cY	
					 					},
					 	/*'r_l_c_t' :  {
					 					'x' :  Rx - (u_w_b_x/nR),
					 					'y' :  r_t
					 					},*/
						
									
				
				],
				
				'ust' : [
						/*'u_t' :*/ {
									'x' : Rx, 
									'y' : Ry
									},
						/*'u_l_t' :*/ 	{ 
									'x' : Rx - u_w_t_x, 	/* */
									'y' : Ry+10 	/* по Y всегда по верхей части устья*/
									},
						/*'u_l_s_t' :*/ //{
									//'x' :  Rx - (a/1.4), 	/* диапазон min = u_l_c.x+N; max = u_l_t.y+N */
									//'y' :  Ry + (u_l_cY/2), 	/* диапазон min = u_l_t.y; max = u_l_c.y */
									//},
						/*'u_l_c' :*/ 	{
									'x' : Rx - (a/2), /*  половина от ширины устья */
									'y' : Ry + u_l_cY /* процент от высоты устья b (0-100%), 50% - половина по умолчанию */
									},
						/*'u_l_s_b' : {'x' : , 'y' : },
						'u_l_b' : */	{
									'x' : Rx - u_w_b_x, 
									'y' : Ury-10
									},
						/*'u_b' : */	{
									'x' : Urx,
									'y' : Ury
									} ,
						/*'u_r_b' : */
									{
									'x' : Rx + u_w_b_x, 
									'y' : Ury-10
									},
						/*'u_r_s_b' : {'x' : , 'y' : },*/
						/*'u_r_c' :*/ 	{
									'x' :  Rx + (a/2), /*  половина от ширины устья */ 
									'y' :  Ry + u_l_cY /* процент от высоты устья b (0-100%), 50% - половина по умолчанию */
									},
						/*'u_r_s_t' : {'x' : , 'y' : },
						'u_r_t' :*/ {
									'x' : Rx + u_w_t_x, 	/* */
									'y' : Ry+10	/* по Y всегда по верхей части устья*/
									},
						
					],
					'turnover_line_left' : [
									{
										'x' : Rx - ((a/2)/nR), 			
											'y' :  rMin - r_l_cY
									},
									{
									'x' : Rx - (a/2),
									'y' : Ry + u_l_cY
									},
									{
									'x' :  Rx + (a/2),  
									'y' :  Ry + u_l_cY 
									},
									{
										'x' : Rx + ((a/2)/nR), 			
											'y' :  rMin - r_l_cY
									},
					],
					
		};
	

	
	
	
	var lineFunction = d3.svg.line()
                        .x(function(d) { return d.x; })
                        .y(function(d) { return d.y; })
                        .interpolate("cardinal-closed");	
						
	var lineFunction_linear = d3.svg.line()
                        .x(function(d) { return d.x; })
                        .y(function(d) { return d.y; })
                        .interpolate("linear");
  
 
 
 
	  var turnover_line_left = this.svg.append("path")
                            .attr("d", lineFunction_linear(curvesProfileAmm.turnover_line_left))
                            .attr("stroke", "blue")
                            .attr("stroke-width", 1)
							.attr("class","ust")
                            .attr("fill", "white");
 
						
	var ustAmmon = this.svg.append("path")
                            .attr("d", lineFunction(curvesProfileAmm.ust))
                            .attr("stroke", "blue")
                            .attr("stroke-width", 1)
							.attr("class","ust")
                            .attr("fill", "white");						
	
	var r_Ammon = this.svg.append("path")
                            .attr("d", lineFunction(curvesProfileAmm.r))
                            .attr("stroke", "blue")
                            .attr("stroke-width", 1)
							.attr("class","ust")
                            .attr("fill", "white");
 
	
		
	
	 
	/*показываем круги важных точек на аммоните  сбоку*/
	//for (var index = 0; index < edge_points.length; ++index) {
 		 //objD3.drawcircle(this.svg,xDeviat,edge_points[index]);	   
	//}
	
	//for (var index = 0; index < edge_points_2.length; ++index) {
 		// objD3.drawcircle(this.svg,xDeviat,edge_points_2[index]);	   
	//}
	
	/*показываем круги важных точек на аммоните в профиль, оборота*/
	//for (var index = 0; index < turnover_line.length; ++index) {
 		 // objD3.drawcircle(this.svg,turnover_line[index].x,turnover_line[index].y);	   
	//}	
	
	/*показываем круги важных точек на аммоните в профиль, устье*/
//	for (var index = 0; index < ust_line.length; ++index) {
 		// objD3.drawcircle(this.svg,ust_line[index].x,ust_line[index].y);	   
	//}
	
	
	ammonite_arr[2].push(importantpoints);
	//console.log( ammonite_arr[2]);
			this.ammonite_arr = ammonite_arr;
		return false;	
	},
	
	
}




