Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
unm
Зарегистрирован: 09.11.2008 Сообщения: 27
|
Добавлено: Сб 13 Июн 2009 15:51 Заголовок сообщения: Параметры ребер объекта |
|
|
Добрый день.
Как получить параметры ребер объекта(левый угол, азимут, длина, правый угол). Перечитал всю документацию, так и не нашел где их взять.
|
|
Вернуться к началу |
|
 |
Михаил Власов

Зарегистрирован: 14.02.2005 Сообщения: 580 Откуда: ИНТЕГРО
|
Добавлено: Пн 15 Июн 2009 10:57 Заголовок сообщения: |
|
|
В режиме редактирования добавьте нужные столбцы.
Описание: |
Как включить параметры ребер |
|
Размер файла: |
86.6 KB |
Просмотрено: |
13267 раз(а) |

|
_________________ С уважением, Михаил Власов. |
|
Вернуться к началу |
|
 |
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
))
|
|
Вернуться к началу |
|
 |
|