ไม่มีวิธี XNA ที่ทำการทดสอบแบบหกเหลี่ยม
บทความนี้จะอธิบายวิธีการเขียนฟังก์ชั่นที่ทำการทดสอบและให้ฟังก์ชัน:
วิธีการตรวจสอบว่าจุดนั้นอยู่ในรูปหกเหลี่ยมหรือไม่
นี่คือบทสรุปจากบทความนั้น:
และฟังก์ชั่นที่ทำการทดสอบจะเป็นดังนี้:
- ทดสอบกล่องขอบรอบหกเหลี่ยมก่อนถ้ามันไม่ตัดกัน
- เปลี่ยนจุดให้เป็นจตุภาคท้องถิ่นดังที่แสดงไว้ด้านบน
- ทำการ
isInside
ทดสอบต่อไปนี้สำหรับ Quadrant ท้องถิ่น
public function isInside(pos:Vec2Const):Boolean
{
const q2x:Number = Math.abs(pos.x - _center.x);
const q2y:Number = Math.abs(pos.y - _center.y);
if (q2x > _hori || q2y > _vert*2)
return false;
return 2 * _vert * _hori - _vert * q2x - _hori * q2y >= 0;
}
ดูบทความสำหรับรายละเอียดทั้งหมด
นี่คือแหล่งข้อมูลที่เกี่ยวข้องที่เป็นประโยชน์อื่น ๆ :