| Предыдущая тема :: Следующая тема | 
	
	
		| Автор | Сообщение | 
	
		| unm 
 
 
 Зарегистрирован: 09.11.2008
 Сообщения: 27
 
 
 | 
			
				|  Добавлено: Сб 13 Июн 2009 15:51    Заголовок сообщения: Параметры ребер объекта |   |  
				| 
 |  
				| Добрый день. 
 Как получить параметры ребер объекта(левый угол, азимут, длина, правый угол). Перечитал всю документацию, так и не нашел где их взять.
 |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		| Михаил Власов 
 
  
 Зарегистрирован: 14.02.2005
 Сообщения: 580
 Откуда: ИНТЕГРО
 
 | 
			
				|  Добавлено: Пн 15 Июн 2009 10:57    Заголовок сообщения: |   |  
				| 
 |  
				| В режиме редактирования добавьте нужные столбцы. 
 
 
 
	
		
	 
		| Описание: | 
			
				| Как включить параметры ребер |  |  
		| Размер файла: | 86.6 KB |  
		| Просмотрено: | 13924 раз(а) |  
		| 
  
 
 |  
 _________________
 С уважением, Михаил Власов.
 |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		| unm 
 
 
 Зарегистрирован: 09.11.2008
 Сообщения: 27
 
 
 | 
			
				|  Добавлено: Вт 16 Июн 2009 15:17    Заголовок сообщения: |   |  
				| 
 |  
				| Да я знаю как их в Инего получить, мне КОД нужен получения. Это ж все таки топик - "Вопросы разработчиков". |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		| Алексей В. Бастриков 
 
 
 Зарегистрирован: 02.06.2008
 Сообщения: 118
 Откуда: ООО "Инфопроект", г. Екатеринбург
 
 | 
			
				|  Добавлено: Вт 16 Июн 2009 16:00    Заголовок сообщения: |   |  
				| 
 |  
				| Вычислить, исходя из координат |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		| Михаил Власов 
 
  
 Зарегистрирован: 14.02.2005
 Сообщения: 580
 Откуда: ИНТЕГРО
 
 | 
			
				|  Добавлено: Вт 16 Июн 2009 16:18    Заголовок сообщения: |   |  
				| 
 |  
				| В ИнГео используются такие формулы: 
  	  | Код: |  	  | type
 TVertex = record
 X, Y: Double;
 end;
 
 // координатная система координат
 // Правая система координат - когда ось Y направлена вверх, а ось X влево
 // (ось X совмещается с осью Y при повороте на 90 градусов против часовой стрелке)
 TCoordSysOrientation = (csoLeft, csoRigth);
 
 function GetAngle(a, b: TVertex): Double;
 begin
 Result := ArcTan2((b.y - a.y), (b.x - a.x));
 if Result < 0 then begin
 Result := Result + 2*Pi;
 end;
 end;
 
 function GetLeftAngle(prev, first, next: TVertex): Double;
 begin
 Result := GetAngle(first, next) - GetAngle(first, prev);
 end;
 
 function GetRightAngle(prev, first, next: TVertex): Double;
 begin
 Result := 2*PI - GetLeftAngle(prev, first, next);
 end;
 
 function GetDirectAngle(first, next: TVertex; aCoordSys: TCoordSysOrientation): Double;
 begin
 Result := GetAngle(first, next);
 if aCoordSys = csoLeft then begin
 Result := 2*Pi - Result;
 end;
 end;
 
 function GetEdgeLength(first, next: TVertex): Double;
 begin
 Result := Sqrt(Sqr(next.x - first.x) + Sqr(next.y - first.y))
 end;
 
 | 
 _________________
 С уважением, Михаил Власов.
 |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		| unm 
 
 
 Зарегистрирован: 09.11.2008
 Сообщения: 27
 
 
 | 
			
				|  Добавлено: Вт 16 Июн 2009 16:49    Заголовок сообщения: |   |  
				| 
 |  
				| Спасибо больщушие |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		| Алексей В. Бастриков 
 
 
 Зарегистрирован: 02.06.2008
 Сообщения: 118
 Откуда: ООО "Инфопроект", г. Екатеринбург
 
 | 
			
				|  Добавлено: Ср 22 Июл 2009 22:01    Заголовок сообщения: |   |  
				| 
 |  
				| Придумал шуточное вычисление длины ребра: function distance(x1, y1, x2, y2)
 set Contour = Application.CreateObject(0, null)
 set Part = Contour.Insert(-1)
 Part.InsertVertex -1, x1, y1, 0
 Part.InsertVertex -1, x2, y2, 0
 distance = Part.Perimeter
 end function
 
  )) |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		|  |