romchik писал(а):
Здраствуйте! возникла проблема! нужно измерять площадь полей на больших уклонах....площадь на плоскости известна, но уклони большие нужно вичислить площадь конкретного многоугольника построенного по трем координатам или же конкретной 3d плокости????
Скрипт вычисляет площадь (кв.м.) помеченного треугольника
Код:
$SO=@Map.SelectedObject
$C=@Map.Object[$SO].Count
@if $C<>4 then @Break Помеченный объект не является треугольником
$Cl=@Map.Object[$SO].Closed
@if $Cl=0 then @Break Помеченный объект разомкнут
$XYZ1=@Map.Object[$SO].Point[1]
$X1=@StringPart 1 $XYZ1
$Y1=@StringPart 2 $XYZ1
$Z1=@StringPart 3 $XYZ1
$XYZ2=@Map.Object[$SO].Point[2]
$X2=@StringPart 1 $XYZ2
$Y2=@StringPart 2 $XYZ2
$Z2=@StringPart 3 $XYZ2
$XYZ3=@Map.Object[$SO].Point[3]
$X3=@StringPart 1 $XYZ3
$Y3=@StringPart 2 $XYZ3
$Z3=@StringPart 3 $XYZ3
$AX=$X2-$X1
$AY=$Y2-$Y1
$AZ=$Z2-$Z1
$BX=$X3-$X1
$BY=$Y3-$Y1
$BZ=$Z3-$Z1
$VI=$AY*$BZ-$AZ*$BY
$VJ=$AZ*$BX-$AX*$BZ
$VK=$AX*$BY-$AY*$BX
$Area3D=@Calc 0.5*(sqrt($VI*$VI+$VJ*$VJ+$VK*$VK))
@Dialog.Message $Area3D
P.S. С многоугольниками сложнее, потому как их можно по разному разбить на треугольники и соответственно результат может отличатся.