×
解除綁定,重新設定系統帳號的密碼
您的系統帳號 ID:
您的系統帳號:
您的帳號暱稱:
設定新密碼:
設定新密碼:
×
請輸入要加入的「課程代碼」
請向開設課程的使用者索取「課程代碼」
分類題庫
解題動態
排行榜
討論區
競賽區
登入
註冊
發表新討論
#18160: 用斜率計算忽略掉的事
rmp4joxj6
(盧邊談話)
學校 : 中原大學
編號 : 97841
×
傳送站內訊息
傳給:
主題:
內容:
來源 : [27.247.230.6]
最後登入時間 :
2020-10-20 18:00:03
c113.
00378 - Intersecting Lines
--
UVa
378
| From: [119.77.170.142] | 發表日期 : 2019-06-21 14:31
通常用斜率來判定 相交,平行,疊合
m1=(y1-y2)/(x1-x2) , m2=(y3-y4)/(x3-x4) , m3=(y1-y4)/(x1-x4);
if(m1==m2&&m1==m3){
printf("LINE\n");
}else if(m1==m2){
printf("NONE\n");
}else{
x=(-m1*x1+y1+m2*x3-y3)/(m2-m1);
y=(-m1*m2*x1+m1*m2*x3+m2*y1-m1*y3)/(m2-m1);
}
但是有時候用斜率計算會遇到
水平
或
垂直
的情況,也就是計算斜率時有可能分母或分子為0,所以要多加幾個判斷式
if( (m1==m2&&m1==m3) ||
(x1==x2&&x1==x3&&x1==x4)
||
(y1==y2&&y1==y3&&y1==y4)
){
printf("LINE\n");
}else if( (m1==m2) ||
(x1==x2&&x3==x4)
||
(y1==y2&&y3==y4)
){
printf("NONE\n");
}else{
if( x1==x2 && y3==y4 ){
x=x1,y=y3;
}else if( x3==x4 && y1==y2 ){
x=x3,y=y1;
}
else{
x=(-m1*x1+y1+m2*x3-y3)/(m2-m1);
y=(-m1*m2*x1+m1*m2*x3+m2*y1-m1*y3)/(m2-m1);
}
printf("POINT %.2lf %.2lf\n",x,y);
}
#18977: Re:用斜率計算忽略掉的事
froghackervirus@gmail.com
(Cow Frog)
學校 : 不指定學校
編號 : 99277
×
傳送站內訊息
傳給:
主題:
內容:
來源 : [210.71.78.241]
最後登入時間 :
2019-12-23 15:08:51
c113.
00378 - Intersecting Lines
--
UVa
378
| From: [123.194.159.172] | 發表日期 : 2019-08-20 21:09
依個人理解,斜率分母為零時應該不用特別處理吧。在下拙見,請多指教。
ZeroJudge Forum