zoukankan      html  css  js  c++  java
  • how to determinepointinlinepolyno

    // Globals which should be set before calling this function:
        //
        // int polySides = how many corners the polygon has
        // float polyX[] = horizontal coordinates of corners
        // float polyY[] = vertical coordinates of corners
        // float x, y = point to be tested
        //
        // (Globals are used in this example for purposes of speed. Change as
        // desired.)
        //
        // The function will return YES if the point x,y is inside the polygon, or
        // NO if it is not. If the point is exactly on the edge of the polygon,
        // then the function may return YES or NO.
        //
        // Note that division by zero is avoided because the division is protected
        // by the "if" clause which surrounds it.
    
        private boolean pointInPolygon(float x, float y) {
            float[] pots = { bitmapRectF.left, bitmapRectF.top, bitmapRectF.right, bitmapRectF.top, bitmapRectF.right, bitmapRectF.bottom, bitmapRectF.left, bitmapRectF.bottom };
            matrix1.mapPoints(pots);
            float polyX[] = {pots[0],pots[2],pots[4],pots[6]};
            float polyY[] = {pots[1],pots[3],pots[5],pots[7]};
            int polySides = 4;
            int i, j = polySides - 1;
            boolean oddNodes = false;
    
            for (i = 0; i < polySides; i++) {
                if ((polyY[i] < y && polyY[j] >= y || polyY[j] < y && polyY[i] >= y)
                        && (polyX[i] <= x || polyX[j] <= x)) {
                    oddNodes ^= (polyX[i] + (y - polyY[i]) / (polyY[j] - polyY[i])
                            * (polyX[j] - polyX[i]) < x);
                }
                j = i;
            }
    
            return oddNodes;
        }
  • 相关阅读:
    看见一个希腊字母表
    剑桥的技术报告列表
    CompaqDEC的技术报告
    linux动态链接库的使用
    Vectored I/O or ScatterGather I/O
    week reference
    Cache pingpong
    [zz] References on Mutual Excuslion
    redis: event loop
    看WinForm源代码的笔记
  • 原文地址:https://www.cnblogs.com/slider/p/3056104.html
Copyright © 2011-2022 走看看