判斷多邊行對稱

2021-07-11 17:41:35 字數 1016 閱讀 1476

其實這題也是一樣的:

題目意思也很好懂,就是處理如何判斷多邊行是否對稱。

先找出所有點的中點,然後一共有2×n個點,依次檢查是否關於xy的連線對稱

如果存在對稱軸,必定是點i和點i+n連成的直線,然後分別驗證兩邊對稱的點

到點i和點i+n的距離是否相等

/*

判斷n邊形是否是軸對稱圖形:

n邊形的n個頂點再加上n條邊的中點,共2*n個頂點。

如果存在對稱軸,必定是點i和點i+n連成的直線,然後分別驗證兩邊對稱的點

到點i和點i+n的距離是否相等

*/#include#includeusing namespace std;

#define maxn 20000

#define eps 1e-5

struct node

node[2*maxn+10];

int n,m;

bool flag;//用來標註是否是軸對稱圖形

double dis(int i,int j)//求node[i]和node[j]的距離

bool check(int i,int j,int x,int y)//檢查node[i]和node[j]是否關於xy對稱

//對稱則dis(i,x)==dis(j,x)&&dis(i,y)==dis(j,y);

void ff(int x,int y)//判斷node[x]和node[y]組成的直線是不是對稱軸

if(check(i,j,x,y)==false) return;

}

} int main()

node[m+1]=node[1];

for(i=2;i<=m;i+=2)

flag=false;

for(i=1;i<=n;i++)

if(flag) printf("yes\n");

else printf("no\n");

}return 0;

}

判斷對稱矩陣

我在 題目判斷對稱矩陣.雙重for迴圈第乙個for沒加括號導致錯誤,加上後就可以了。輸入乙個n維矩陣,判斷是否對稱。輸入第一行包括乙個數 n 1 n 100 表示矩陣的維數。接下來的n行,每行包括n個數,表示n n矩陣的元素。可能有多組測試資料,對於每組資料,輸出 yes 表示矩陣為對稱矩陣。輸出 ...

多邊形判斷模板

include include define maxn 1000 define offset 10000 define eps 1e 8 define zero x x 0?x x define sign x x eps?1 x eps?2 0 struct point struct line do...

多邊形判斷點內外

在圖形學中判斷乙個點是否在多邊形內,若多邊形不是自相交的,那麼可以簡單的判斷這個點在多邊形內部還是外部 若多邊形是自相交的,那麼就需要根據非零環繞數規則和奇 偶規則判斷。判斷多邊形是否是自相交的 多邊形在平面內除頂點外還有其他公共點 內 外測試 不自交的多邊形 多邊形僅在頂點處連線,而在平面內沒有其...