• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            又是一個求多邊形的核的題。

            /************************************************************************* 
            Author: WHU_GCC 
            Created Time: 2007-9-13 18:07:21 
            File Name: b.cpp 
            Description:  
            ***********************************************************************
            */
             
            #include 
            <iostream> 
            #include 
            <cmath> 
            using namespace std; 
            #define out(x) (cout<<#x<<": "<<x<<endl) 
            const int maxint=0x7FFFFFFF
            typedef 
            long long int64; 
            const int64 maxint64 = 0x7FFFFFFFFFFFFFFFLL; 
            template
            <class T>void show(T a, int n){for(int i=0; i<n; ++i) cout<<a[i]<<' '; cout<<endl;} 
            template
            <class T>void show(T a, int r, int l){for(int i=0; i<r; ++i)show(a[i],l);cout<<endl;} 

            #define EPS 1e-10 
            #define MaxN 100 

            struct point 

                
            double x, y; 
            }


            struct cp 

                
            int n; 
                point p[MaxN]; 
            }


            point intersectL(
            double a1, double b1, double c1, double a2, double b2, double c2) 

                point ret; 
                ret.y 
            = (a1 * c2 - c1 * a2) / (b1 * a2 - a1 * b2); 
                
            if (fabs(a2) < EPS) 
                    ret.x 
            = -(b1 * ret.y + c1) / a1; 
                
            else 
                    ret.x 
            = -(b2 * ret.y + c2) / a2; 
                
            return ret; 
            }
             

            bool isEqual(point inpA, point inpB) 

                
            return (fabs(inpA.x - inpB.x) < EPS && fabs(inpA.y - inpB.y) < EPS); 
            }
             

            double Cross(point inpA, point inpB, point inpC) 

                
            return (inpB.x - inpA.x) * (inpC.y - inpA.y) - (inpC.x - inpA.x) * (inpB.y - inpA.y); 
            }
             

            void Get_line(point inpA, point inpB, double &a1, double &b1, double &c1) 

                a1 
            = inpB.y - inpA.y; 
                b1 
            = inpA.x - inpB.x; 
                c1 
            = inpA.y * (inpB.x - inpA.x) - inpA.x * (inpB.y - inpA.y); 
            }
             

            cp cut(point inpA, point inpB, cp incp) 

                cp ret; 
                point cross; 
                
            int i, j; 
                
            double t1, t2; 
                
            double a1, b1, c1, a2, b2, c2; 
                 
                ret.n 
            = 0
                
            for (i = 0; i < incp.n; i++
                

                    j 
            = i + 1
                    t1 
            = Cross(inpA, inpB, incp.p[i]); 
                    t2 
            = Cross(inpA, inpB, incp.p[j]); 
                    
            if (t1 < EPS && t2 < EPS) 
                    

                        ret.p[ret.n
            ++= incp.p[i]; 
                        ret.p[ret.n
            ++= incp.p[j]; 
                    }
             
                    
            else if (t1 > EPS && t2 > EPS) 
                        
            continue
                    
            else 
                    

                        Get_line(inpA, inpB, a1, b1, c1); 
                        Get_line(incp.p[i], incp.p[j], a2, b2, c2); 
                        cross 
            = intersectL(a1, b1, c1, a2, b2, c2); 
                         
                        
            if (t1 < EPS) 
                        

                            ret.p[ret.n
            ++= incp.p[i]; 
                            ret.p[ret.n
            ++= cross; 
                        }
             
                        
            else 
                        

                            ret.p[ret.n
            ++= cross; 
                            ret.p[ret.n
            ++= incp.p[j]; 
                        }
             
                    }
             
                }
             
                
            if (ret.n == 0
                    
            return ret; 
                
            for (i = 1, j = 1; i < ret.n; i++
                    
            if (!isEqual(ret.p[i - 1], ret.p[i])) 
                        ret.p[j
            ++= ret.p[i]; 
                 
                ret.n 
            = j; 
                
            if (ret.n != 1 && isEqual(ret.p[ret.n - 1], ret.p[0])) 
                    ret.n
            --
                ret.p[ret.n] 
            = ret.p[0]; 
                
            return ret; 
            }
             

            int main() 

                
            int n; 
                cp input, ret; 
                
            while (scanf("%d"&n), n != 0
                

                    input.n 
            = n; 
                    
            for (int i = 0; i < n; i++
                        scanf(
            "%lf%lf"&input.p[n - i - 1].x, &input.p[n - i - 1].y); 
                    input.p[input.n] 
            = input.p[0]; 
                     
                    ret 
            = input; 
                    
            for (int i = 0; i < input.n; i++
                        ret 
            = cut(input.p[i], input.p[i + 1], ret); 
                    
            if (ret.n >= 1
                        printf(
            "1\n"); 
                    
            else 
                        printf(
            "0\n"); 
                }
             
                
            return 0
            }
             
            posted on 2007-09-14 22:18 Felicia 閱讀(498) 評論(0)  編輯 收藏 引用 所屬分類: 計算幾何
             
            一本久久a久久精品vr综合| 久久精品国产精品青草| 久久福利青草精品资源站| 亚洲乱码日产精品a级毛片久久| 青青国产成人久久91网| 国产精品久久久久9999高清| 久久亚洲私人国产精品| 久久99精品国产自在现线小黄鸭| 午夜精品久久久久久99热| 一本一本久久A久久综合精品| 国产美女亚洲精品久久久综合| 性做久久久久久久久| 久久人人爽人人爽人人片AV高清 | 国产情侣久久久久aⅴ免费| 亚洲精品乱码久久久久久自慰| 久久午夜无码鲁丝片秋霞 | 久久久久久亚洲精品成人| 久久精品国产亚洲AV香蕉| AV无码久久久久不卡网站下载| 9久久9久久精品| 日本三级久久网| 无码任你躁久久久久久老妇| 狠狠色丁香婷婷久久综合| 麻豆AV一区二区三区久久| 7国产欧美日韩综合天堂中文久久久久 | 久久人人超碰精品CAOPOREN| 久久国产成人午夜AV影院| 久久伊人中文无码| 亚洲va中文字幕无码久久不卡| 99久久无色码中文字幕| 久久久久九九精品影院| 久久久久se色偷偷亚洲精品av| 99久久精品费精品国产一区二区 | 久久丝袜精品中文字幕| 99久久国产综合精品女同图片| 亚洲精品乱码久久久久久自慰| 国产麻豆精品久久一二三| 三级片免费观看久久| 久久99精品国产一区二区三区| 97精品国产97久久久久久免费| 国产精品美女久久久网AV|