[推薦] 2D矩形碰撞演算法 |
|
axsoft
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:681 回覆:1056 積分:969 註冊:2002-03-13 發送簡訊給我 |
範例一.
資料來源:精彩C++ BUILDER程式設計一書 void check_side() {
int x;
x=psides[1] - (p_locy -p_radius); //檢查是否飛到上邊線
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
if (x>=0)
{
p_locy=p_locy + x;
p_y= -p_y;
}
x=p_sides[0] - (p_locx -p_radius);//檢查是否飛到左邊線
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
if (x>=0){
p_locx=p_locx + x;
p_x= -p_x;
}
x=(p_lock + p_radius) - p_sides[2];//檢查是否飛到右邊線
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
if(x>=0) {
p_locx=p_locx - x;
p_x= -p_x;
}
} 範例二. 作者:冷眼 資料來源: http://programmer.eforum2000.net/pc2020v5/forum/ShowSameTitle.asp?board_pc2020=cb&index=9&id=3496&mode=&type_pc2020=sametitleLevel-2# bool checkRect(Point v,LPRECT rect)
{
if( v.x > rect->left && v.x < rect->right &&
v.y > rect->top && v.y < rect->bottom)
rectuen ture;
return false;
}
將球的rect 四點代入
(center->x-r,center->y-r)
(center->x-r,center->y+r)
(center->x+r,center->y-r)
(center->x+r,center->y+r) 就可得知是否碰撞結果...... 時間就是金錢
<< 發問前請先找找舊文章 >>
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |