
- Код: Выделить всё
...
If GetPixel(hdc, X, Y)<>White Then s=s+1
...
Этот способ лишен недостатков первого, но имеет свои


P.S. А может быть у кого-нибудь есть соображения о том, как ещё можно расчитать площадь многоугольника?
...
If GetPixel(hdc, X, Y)<>White Then s=s+1
...
tyomitch писал(а):Ещё раз, какие исходные данные? Только координаты вершин?
tyomitch писал(а):Никакой метод тебе в этом случае не поможет.
tyomitch писал(а):Если у тебя есть только координаты вершин, то ты не знаешь, что за фигура имелась в виду.
XairOn писал(а):tyomitch писал(а):Если у тебя есть только координаты вершин, то ты не знаешь, что за фигура имелась в виду.
Да, но если есть порядок в котором они заданы, можно однозначно определить фигуру. А что ещё нужно по-твоему?
alibek писал(а):А почему бы не разбить фигуру на треугольники и не посчитать площади этих треугольников? Единственный момент, на который надо будет обрадить внимание -- если многоугольник не выпуклый, то надо будет вычитать "внутренние" треугольники.
XairOn писал(а):Да пересчет пикселей - это бред, на точность можно не расчитывать. Вот идея с треугольниками у меня давно в голове крутилась, только я вот не могу сообразить по каким критерям определять из какой вершины в какую, строить эти треугольники. Сдаётся мне: этот процесс сопровождается особо крупными дозами геммороя
tyomitch писал(а):Хочешь геморроя с треугольниками -- выбор твой.
tyomitch писал(а):Хорошо. Тогда предельно конкретный вопрос:
если у тебя уже есть список вершин в порядке обхода, то что тебе мешает просто воспользоваться теми формулами?
XairOn писал(а):2 tyomitch, мешает мне вот что: метод имеет свои недостатки, например вычисляется площадь замкнутой ломаной без самопересечений, а если вдруг самопересечения будут, что тогда делать? Кстати тут резонный вопрос, а триангуляция возможна для замкнутой ломанной с самопересечениями???
XairOn писал(а):tyomitch писал(а):Хорошо. Тогда предельно конкретный вопрос:
если у тебя уже есть список вершин в порядке обхода, то что тебе мешает просто воспользоваться теми формулами?
Если пользователь добавил вершины и нарушил порядок обхода, метод отлетает.
tyomitch писал(а):Например, нетривиальный вопрос -- что для такой самопересекающейся кривой будет "внутрь", и что "наружа". Что именно ты собрался триангулировать?
tyomitch писал(а):если порядок обхода нарушен, и ты не можешь его восстановить, то ты не можешь определить площадь фигуры никаким способом
XairOn писал(а):Ты в этом почему так уверен? Ты это твёрдо знаешь и при желании сможешь доказать или это тебе так кажется просто?
tyomitch писал(а):XairOn писал(а):Ты в этом почему так уверен? Ты это твёрдо знаешь и при желании сможешь доказать или это тебе так кажется просто?
Ох уж эти сказочки, ох уж эти сказочники
http://users.isnet.ru/tyomitch/Sample01.png
Отмечены вершины многоугольника. Найди его площадь.
Потом посмотри на Sample02.png и Sample03.png
Сейчас этот форум просматривают: AhrefsBot, Yandex-бот и гости: 6