ฉันจะไม่ให้คำตอบกับคุณฉันแน่ใจว่ามีประโยชน์หรือแม้กระทั่งถูกต้อง แต่ที่นี่จะไป:
หลังจากเล่นกับ mathematica อีกเล็กน้อย (ดูจุดสิ้นสุดของคำตอบสำหรับสมุดบันทึก / สมุดบันทึกที่เผยแพร่แล้ว) โซลูชันนี้ดูเหมือนจะถูกต้องแม้จะคิดว่าอาจไม่ดีที่สุดในแง่ของประสิทธิภาพ
ฉันเขียนสิ่งนี้ในวิชาคณิตศาสตร์ที่สอดคล้องกับปัญหาของคุณ โดยทั่วไปจะแก้สมการ / อสมการเพื่อให้ตัวแปร OA ซึ่งเป็นสิ่งที่เราต้องการที่จะหา ผลลัพธ์คือวิธีแก้ปัญหาที่เป็นไปได้ที่ OA สามารถทำได้และเงื่อนไขที่จำเป็นต้องตรวจสอบว่าแต่ละโซลูชันนั้นถูกต้องหรือไม่:
Reduce[{BPx, BPy} + t*{BVx, BVy} == {OPx, OPy} + t*OV*{Cos[OA], Sin[OA]} && t != 0 && OV != 0, {OA}]
{BPx, BPy} เป็นตำแหน่งปัจจุบันของสีน้ำเงิน
{BVx, BVy} เป็นเวกเตอร์ความเร็วสีน้ำเงิน
{OPx, OPy} เป็นตำแหน่งกระสุนของส้ม
OV เป็นบรรทัดฐานของเวกเตอร์กระสุนความเร็วสูงของส้ม (ความเร็วรวม)
OA คือมุมกระสุนของส้ม (มุมของเวกเตอร์ความเร็ว)
t คือเวลาที่กระสุนจะต้องเป็นสีน้ำเงิน
ฉันพยายามใส่ t> 0 && OV> 0 ในเงื่อนไข แต่ mathematica จะใช้ตลอดไปดังนั้นฉันจึงใช้ t! = 0 && OV! = 0 ดังนั้นวิธีแก้ปัญหาที่ฉันจะให้ที่นี่จะทำงานได้เมื่อสีน้ำเงินไม่ตรง ตำแหน่งเดียวกับสีส้มและเมื่อกระสุนของส้มเคลื่อนไหวจริงๆ (แทนที่จะหยุดนิ่ง)
ผลลัพธ์มีขนาดใหญ่: http://freetexthost.com/xzhhpr5e2w
อย่างไรก็ตามหากเราแยก OA == _ ส่วนต่างๆเราจะได้สิ่งนี้:
http://freetexthost.com/iyrhqoymfo
สิ่งเหล่านี้คือค่า OA ที่สามารถมีได้
ด้วยการวิเคราะห์เพิ่มเติมเพื่อหาวิธีแก้ปัญหาที่ต้องใช้ OV เป็นค่าลบซึ่งเราไม่ต้องการ
http://freetexthost.com/iy4wxepeb6
ดังนั้นสิ่งเหล่านี้จึงเป็นวิธีแก้ปัญหาที่เป็นไปได้ซึ่งแต่ละคนต้องการเงื่อนไขที่แตกต่างกันเพื่อให้ถูกต้อง เพื่อให้มุม OA ที่แน่นอนเป็นโซลูชันที่ถูกต้องต้องปฏิบัติตามเงื่อนไขต่อไปนี้:
Reduce[{BPx, BPy} + t*{BVx, BVy} == {OPx, OPy} + t*OV*{Cos[OA], Sin[OA]} && t != 0 && OV != 0, {t}]
เอาท์พุท:
(BVy - OV Sin[OA] != 0 && BPx == (BPy BVx + BVy OPx - BVx OPy - BPy OV Cos[OA] + OPy OV Cos[OA] - OPx OV Sin[OA])/(BVy - OV Sin[OA]) && t == (-BPy + OPy)/(BVy - OV Sin[OA]) && BPy OV - OPy OV != 0) ||
(BVy == OV Sin[OA] && BPy == OPy && BVx - OV Cos[OA] != 0 && t == (-BPx + OPx)/(BVx - OV Cos[OA]) && BPx OV - OPx OV != 0) ||
(BVy == OV Sin[OA] && BVx == OV Cos[OA] && BPy == OPy && BPx == OPx && OV t != 0)
ดังนั้นให้พิจารณาเฉพาะวิธีการแก้ปัญหาที่ตรวจสอบ (คุณไม่จำเป็นต้องตรวจสอบชิ้นส่วน t == _ พวกเขาคือคนที่ให้เวลาคุณสำหรับกระสุนที่จะยิงยานพาหนะหากเงื่อนไขอื่น ๆ ที่ถูกต้องสังเกตว่าถ้า ไม่มีผลลัพธ์เป็นค่าลบคุณไม่สามารถพิจารณา OA ที่กำหนดเป็นโซลูชันที่ถูกต้องแม้ว่าจะตรวจสอบเงื่อนไขอื่น ๆ (นี่เป็นเพราะเราใช้ t! = 0 แทน t> 0 ในการลด)
มันอาจเป็นความคิดที่ดีที่จะถามใน/math//เกี่ยวกับเรื่องนี้
แก้ไข
ฉันสนใจคำถามนี้มากขึ้นฉันจึงสร้างสมุดบันทึกแสดงความคิดเห็นพร้อมการสาธิตแบบกราฟิกของทุกสิ่งที่ฉันอธิบาย ดาวน์โหลดได้ที่นี่:
http://www.2shared.com/file/pXhYyhN1/towerBullets.html
หรือที่นี่:
http://www.2shared.com/file/W01g4sST/towerBullets.html
(นี่เป็นรุ่นที่ตีพิมพ์และคุณต้องการเพียงผู้เล่น mathematica - ซึ่งเป็นอิสระ - เพื่อดูถ้าคุณไม่มี mathematica นี่เป็นวิธีที่จะไป)
ภาพหน้าจอ: