Здравствуйте господа! Я пишу программу по нахождению площади заданного пользователем многоугольника. Есть 2 способа (вернее рассматриваются 2 способа, на самом деле их наверное больше). Так вот первый способ: расчет по формуле ½*(∑(Xi+Xi+1)*(Yi-Yi+1)) i принимает значения от 1 до N-1 (N - количесво вершин многоугольника) Xn = X0 вобщем не в этом суть, метод довольно хороший и точный, но есть у него один существенный недостаток: порядок обхода должен строго соблюдаться, если пользователь задал многоугольник, а потом между какими-нибудь вершинами решил добавить ещё парочку, данный метод отлетает сразу... о точном значении можно сразу забыть
. Есть второй способ: отрисованный многоугольник проверяется 2-мя циклами (строки-столбцы) и если встречает
не белый пиксель увеличивает счетчик на еденицу:
- Код: Выделить всё
...
If GetPixel(hdc, X, Y)<>White Then s=s+1
...
Этот способ лишен недостатков первого, но имеет свои
Точность в этом методе страдает. Пока рисуются прямые линии (имеется ввиду
НЕ наклонные) всё хорошо, но каждая наклонная линия дает погрешность, при чем когда фигура большая и довольно сложная (много линий) погрешность получается нехилая. А вот и вопрос: как можно повысить точность данного метода
P.S. А может быть у кого-нибудь есть соображения о том, как ещё можно расчитать площадь многоугольника?