///呼叫示例:anglecalculation.cxpoint p1 = new anglecalculation.cxpoint(-112, -12);/ p2 = new anglecalculation.cxpoint(-68, -51);/ p3 = new anglecalculation.cxpoint(0, 0);///double angle = anglecalculation.analysis(p1, p2, p3, true);///
public sealed classanglecalculation
public doublex;public doubley;
}public structcxline
publiccxpoint frompoint;publiccxpoint topoint;
///角度計算主方法,p1-p2-p3為沿環方向的三個連續頂點,其中p2為角點。///
/// p1-p2-p3所在環方向,順時針為 true,逆時針為 false
public static double analysis(cxpoint p1, cxpoint p2, cxpoint p3, boolisclockwise)
else{if (angle > 180) return 180;else if (angle < 0) return 0;else returnangle;
///求取面內面外判斷點,p1-p2-p3為沿環方向的三個連續頂點,其中p2為角點。///
private static cxpoint calculationjudgepoint(cxpoint p1, cxpoint p2, cxpoint p3, double smalldis = 0.01)
{double tempx = (p1.x + p3.x) / 2;double tempy = (p1.y + p3.y) / 2;double disx = tempx -p2.x;double disy = tempy -p2.y;double val = math.sqrt(disx * disx + disy *disy);double scale = smalldis /val;return new cxpoint(p2.x + scale * disx, p2.y + scale *disy);
private static booljudgabout(cxline pline, cxpoint ppoint)
{double ax = pline.topoint.x -pline.frompoint.x;double ay = pline.topoint.y -pline.frompoint.y;double bx = ppoint.x -pline.frompoint.x;double by = ppoint.y -pline.frompoint.y;double judge = ax * by - ay *bx;if (judge > 0.0)return true;else
return false;
求任意多邊形面積(凹多邊形和凸多邊形)
遇到問題 已知多邊形的各個左邊點,要求多邊形的面積 然後我搜尋了下看到這篇文章 這個人說的不多,但是簡單明瞭 首先已知各定點的座標分別為 x1,y1 x2,y2 x3,y3 xn,yn 則該多邊形的面積公式為 s 1 2 x1 y2 x2 y1 x2 y3 x3 y2 xk yk 1 xk 1 yk...
Matlab生成多邊形,並且判斷多邊形是否相交
隨機生成若干個點,就可以生成多邊形。嚴格來說,是要判斷產生的點是否共線的,但是這樣概率太低,所以我就沒有判斷。生成的點不能直接連起來,因為點的順序有可能是錯亂的,所以首先要進行順序判斷,方法是計算角度。找到平面內某一點,計算多邊形每乙個點到這個點連線和x軸的夾角,對這個夾角進行排序,就可以得到點的順...
多邊形求面積,
這個程式很值得一博。昨天一位學地質的高中同學問我寫個程式求多邊形面積,因為他說看到excel就煩。正好前段時間在csdn上看到乙個帖子求多邊形面積,也想到了乙個演算法,於是寫了這個程式。演算法描述 乙個多邊形的面積可以由這樣兩個系列的梯形來計算,以凸多邊形舉例,在圖形上方的一系列邊和其在x軸的投影組...