﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-lzmagic-随笔分类-图论</title><link>http://www.cppblog.com/lzmagic/category/8564.html</link><description>1/4桶水荡漾</description><language>zh-cn</language><lastBuildDate>Mon, 03 Nov 2008 07:39:26 GMT</lastBuildDate><pubDate>Mon, 03 Nov 2008 07:39:26 GMT</pubDate><ttl>60</ttl><item><title>[转]多边形求面积公式</title><link>http://www.cppblog.com/lzmagic/archive/2008/11/03/65806.html</link><dc:creator>lzmagic</dc:creator><author>lzmagic</author><pubDate>Mon, 03 Nov 2008 01:48:00 GMT</pubDate><guid>http://www.cppblog.com/lzmagic/archive/2008/11/03/65806.html</guid><wfw:comment>http://www.cppblog.com/lzmagic/comments/65806.html</wfw:comment><comments>http://www.cppblog.com/lzmagic/archive/2008/11/03/65806.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/lzmagic/comments/commentRss/65806.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lzmagic/services/trackbacks/65806.html</trackback:ping><description><![CDATA[<p>我们都知道已知A(x1,y1)、B(x2,y2)、C(x3,y3)三点的面积公式为<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |x1&nbsp;&nbsp; x2&nbsp;&nbsp; x3|<br>S(A,B,C) = |y1&nbsp;&nbsp; y2&nbsp;&nbsp; y3| * 0.5 = <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |1&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp; 1 |<br>[(x1-x3)*(y2-y3) - (x2-x3)*(y1-y3)]*0.5 </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; (当三点为逆时针时为正，顺时针则为负的) </p>
<p>&nbsp;</p>
<p>对多边形A1A2A3、、、An(顺或逆时针都可以)，设平面上有任意的一点P，则有：<br>&nbsp;&nbsp; S(A1,A2,A3，、、、,An)<br>&nbsp;&nbsp; = abs(S(P,A1,A2) + S(P,A2,A3)+、、、+S(P,An,A1))</p>
<p><br>P是可以取任意的一点，用(0，0)时就是下面的了：</p>
<p><br>&nbsp;&nbsp;&nbsp; 设点顺序 (x1 y1) (x2 y2)&nbsp;&nbsp;&nbsp; ... (xn yn)<br>则面积等于<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |x1&nbsp;&nbsp; y1 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |x2&nbsp;&nbsp; y2|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |xn&nbsp;&nbsp; yn|<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.5 * abs( |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | +&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | + ...... +&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |x2&nbsp;&nbsp; y2 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |x3&nbsp;&nbsp; y3|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |x1&nbsp;&nbsp; y1|</p>
<p><br>其中<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |x1&nbsp;&nbsp; y1|<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |=x1*y2-y1*x2<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |x2&nbsp;&nbsp; y2|<br>因此面积公式展开为:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |x1&nbsp;&nbsp;&nbsp; y1|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |x2&nbsp;&nbsp;&nbsp;&nbsp; y2|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |xn&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yn|<br>=0.5*abs(|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; + |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |+&#8230;&#8230;+ |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |x2&nbsp;&nbsp;&nbsp; y2|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |x3&nbsp;&nbsp;&nbsp;&nbsp; y3|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |x1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; y1|<br>(此算法适用于凸和凹多边形但并不适用于当多边形有边相交的情况） <br></p>
<img src ="http://www.cppblog.com/lzmagic/aggbug/65806.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lzmagic/" target="_blank">lzmagic</a> 2008-11-03 09:48 <a href="http://www.cppblog.com/lzmagic/archive/2008/11/03/65806.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>最小生成树－Prim算法</title><link>http://www.cppblog.com/lzmagic/archive/2008/05/10/49397.html</link><dc:creator>lzmagic</dc:creator><author>lzmagic</author><pubDate>Sat, 10 May 2008 01:38:00 GMT</pubDate><guid>http://www.cppblog.com/lzmagic/archive/2008/05/10/49397.html</guid><wfw:comment>http://www.cppblog.com/lzmagic/comments/49397.html</wfw:comment><comments>http://www.cppblog.com/lzmagic/archive/2008/05/10/49397.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/lzmagic/comments/commentRss/49397.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lzmagic/services/trackbacks/49397.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;1/**//*&nbsp;(MST:&nbsp;minimum&nbsp;spanning&nbsp;tree)&nbsp;&nbsp;2&nbsp;*&nbsp;描述:&nbsp;设G&nbsp;=&nbsp;(V,&nbsp;E)是无向图，求最小生成树T(U,&nbsp;E')。&nbsp;&nbsp;3&nbsp;*&nbsp;&nbsp;4&nbsp;*&nbsp;...&nbsp;&nbsp;<a href='http://www.cppblog.com/lzmagic/archive/2008/05/10/49397.html'>阅读全文</a><img src ="http://www.cppblog.com/lzmagic/aggbug/49397.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lzmagic/" target="_blank">lzmagic</a> 2008-05-10 09:38 <a href="http://www.cppblog.com/lzmagic/archive/2008/05/10/49397.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>