主要判斷球體和矩形邊沿最短舉例,
申明類:
///
/// 球的資訊
///
public
class
ball
set}
///
/// 位置
///
public
point addr
set}
///
/// 執行方向
///
public
point dir
set}
///
/// 速度
///
public
point speed
set}
}///
///矩形的資訊
///
public
class
rect
set}
///
/// 高
///
public
int height
set}
///
/// 狀態 0不存在 1 需要敲擊一次才能消除 2 需要敲擊2次才能小區 99:不能消除
///
public
int stat
set}
///
/// 位址
///
public
point addr
set}
}
計算距離
///
/// 獲取距離最近的點
///
///
private
double
check_leng
(rect p,
ball b)
else
else
if(b.addr.y >= p.addr.y + p.height /
2+ b.radius)
//圓心位於的上邊沿
else
//圓心位於矩形內
return min_y;
}elseif(
(b.addr.y >= p.addr.y - p.height /
2+ b.radius)
&&(b.addr.y <= p.addr.y + p.height /
2- b.radius)
)//位於矩形x軸方向區域類
else
if(b.addr.x >= p.addr.x + p.width /
2+ b.radius)
//圓心位於矩形的右邊沿
else
//圓心位於矩形內
return min_x;
}elseif(
(b.addr.x <= p.addr.x - p.width /
2+ b.radius)
&&(b.addr.y <= p.addr.y - p.height /
2+ b.radius)
)//第四象域
else
if(b.addr.y > n)
if(min_4 !=-1
)else}}
else
else}}
return min_4;
}elseif(
(b.addr.x > p.addr.x + p.width /
2- b.radius)
&&(b.addr.y <= p.addr.y - p.height /
2+b.radius)
)//第三象域
else
if(b.addr.y > n)
//double mint_t = math.sqrt(math.pow(p.addr.x + p.width / 2 - x, 2) + math.pow(p.addr.y - p.height / 2 - y, 2));
if(min_3 !=-1
)else
if(mint_t < min_3)
}else
else
min_3 = mint_t;}}
return min_3;
}elseif(
(b.addr.x > p.addr.x + p.width /
2- b.radius)
&&(b.addr.y > p.addr.y + p.height /
2- b.radius)
)//第二象域
else
if(b.addr.y < n)
if(min_2 !=-1
)else}}
else
else}}
return min_2;
}elseif(
(b.addr.x <= p.addr.x - p.width /
2+ b.radius)
&&(b.addr.y > p.addr.y + p.height /
2- b.radius)
)//第一象域
else
if(b.addr.y < n)
if(min_1 !=-1
)else}}
else
else}}
return min_1;
}return-98
;}}
如何判斷乙個點在矩形內
最近在做遊戲伺服器中技能模組,往往要掃瞄乙個區域,判斷npc是不是在我這個區域內,在的話就發傷害。就需要實現一下,對於乙個點是否在矩形內的判斷。只需要判斷該點是否在上下兩條邊和左右兩條邊之間就行,判斷乙個點是否在兩條線段之間夾著,就轉化成,判斷乙個點是否在某條線段的一邊上,就可以利用叉乘的方向性,來...
使用OpenGL動態管線和C 完成乙個球體
終於寫出乙個球體,索引陣列還是有一些bug,太累了,過幾天再調然後添紋理吧。網上的球沒有乙個能用 不是固定管線就是 出錯要不就是不完整 這個 拷貝下來可以直接用。加油吧少年,前路遙遙人生有期。額。部落格之前所有專案都是空專案。球體實現了旋轉。效果截圖 glint statcky 60 橫向向切成多少...
關於判斷乙個矩形能否容下兩個圓
給定兩個圓和乙個矩形,判斷兩個圓能否放入矩形內。其中,a,b,r1,r2都是浮點數。考慮兩個圓能夠放入的乙個最基本的必要條件是 半徑大的圓放進去後,半徑小的圓還可以放進去。也就是滿足 min a,b max r1,r2 2 接下來就分析能否放入的臨界點,設想右側短邊是乙個可以滑動的擋板,從右向左滑動...