Прошу объяснить алгоритм подсчёта площади
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Прошу объяснить алгоритм подсчёта площади

Прошу объяснить алгоритм подсчёта площади

Ответ
Поиск в этой теме
Непрочитано 21.01.2010, 03:49 #1
Прошу объяснить алгоритм подсчёта площади
Igor' Kulikov
 
горный инженер
 
Алдан
Регистрация: 24.10.2007
Сообщений: 151

Имеется макрос, написанный для Corel на VB для подсчёта площади многоугольника. в программировании сам мягко выражаясь - не силён, но при просмотре кода стало интересно как же всё таки происходит расчёт. Можно, как говориться, на пальцах объяснить какие формулы задействованы и от чего отталкивается программа при расчёте. Вот сам код:

Код:
[Выделить все]
Attribute VB_Name = "ПлощадьМногоугольника"
Option Base 1
Option Explicit
Dim sq As Double, scl As Double
Dim i As Integer, n As Integer
Dim X() As Double, Y() As Double
Dim s As Shape

Sub ПлощадьМногоугольника()
'Не применять к кривым!!!
    
    ActiveDocument.Unit = cdrMillimeter ' единицы измерения - миллиметры
    scl = 1000   'масштаб
    scl = scl / 1000    ' перевод в метры
    
    Set s = ActiveShape
    If s.Type = cdrNoShape Then
        MsgBox "Выберите ломаную!"
        Exit Sub
    End If
    If s.Type <> cdrCurveShape Then
        s.ConvertToCurves
    End If
    n = s.Curve.Nodes.Count
    ReDim X(n) As Double, Y(n) As Double
    For i = 1 To n
       X(i) = s.Curve.Nodes(i).PositionX
       Y(i) = s.Curve.Nodes(i).PositionY
    Next i
    sq = 0
    For i = 1 To n - 1
       sq = sq + (X(i) - X(i + 1)) * (Y(i) + Y(i + 1))
    Next i
    sq = sq + (X(n) - X(1)) * (Y(n) + Y(1))
    sq = Abs(0.5 * sq * scl * scl)
    
    MsgBox "Площадь фигуры:  " & Format(sq, "#0.0") & " кв.м"
    
End Sub

Последний раз редактировалось Кулик Алексей aka kpblc, 21.01.2010 в 09:30.
Просмотров: 2621
 
Непрочитано 21.01.2010, 09:34
#2
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Это не алгоритм, а формула.

А = 0.5 (X1Y2 - X2Y1 + X2Y3 - X3Y2 + ... + Xn-1Yn - XnYn-1 + XnY1 - X1Yn)

второй вариант формулы:
А = 0.5 (X1X2 - Y1Y2 + X2X3 - Y2Y3 + ... + Xn-1Xn - Yn-1Yn + XnX1 - YnY1)
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны.
/Сунь Цзы/

Последний раз редактировалось Елпанов Евгений, 21.01.2010 в 14:55.
Елпанов Евгений вне форума  
 
Автор темы   Непрочитано 21.01.2010, 11:18
#3
Igor' Kulikov

горный инженер
 
Регистрация: 24.10.2007
Алдан
Сообщений: 151


спасибо, Евгений, пора идти учить математику
Igor' Kulikov вне форума  
 
Непрочитано 21.01.2010, 14:50
#4
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


delete
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны.
/Сунь Цзы/
Елпанов Евгений вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Прошу объяснить алгоритм подсчёта площади



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP. Вставка в таблицу поля, соотвествующего площади примитива Profan Готовые программы 272 06.06.2021 23:12
Прошу объяснить почему 3D обекты теряют скругление Suf AutoCAD 12 20.03.2008 14:31