কম্পিউটার

দুটি গোলক পরীক্ষা করার প্রোগ্রামটি পাইথনে 3D স্পেসে ত্বরান্বিত বা না করে মিলিত হতে পারে


ধরুন দুটি গোলক আছে যার ব্যাসার্ধের মান হল r1 এবং r2। তারা (x1, y1, z1) এবং (x2, y2, z2) স্থানাঙ্কে রয়েছে। এবং তাদের ত্বরণ মান দেওয়া হয়েছে যেমন (ax1, ay1, az1) এবং (ax2, ay2, az2)। আমাদের পরীক্ষা করতে হবে যে এই দুটি গোলক 3D স্পেসে মিলিত হবে কিনা যদি তারা প্রদত্ত ত্বরণের সাথে চলে যায় বা না।

সুতরাং, যদি ইনপুটটি হয় r1 =1 r2 =2 pos1 =(0, 0, 0) acc1 =(100,0,0) pos2 =(4, 0, 0) acc2 =(0,0,0), তাহলে আউটপুট হবে True, কারণ দ্বিতীয় গোলকের কোনো ত্বরণ নেই, তাই এটি নড়বে না, কিন্তু প্রথমটি x দিক থেকে সরে যাবে তাই তাদের সংঘর্ষ হবে।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • px :=pos1[0] - pos2[0]
  • py :=pos1[1] - pos2[1]
  • pz :=pos1[2] - pos2[2]
  • ax :=acc1[0] - acc2[0]
  • ay :=acc1[1] - acc2[1]
  • az :=acc1[2] - acc2[2]
  • da :=ax * ax + ay * ay + az * az
  • dp :=px * px + py * py + pz * pz
  • co :=ax * px + ay * py + az * pz
  • x :=0.0
  • যদি da 0 এর মত না হয়, তাহলে
    • x :=- co/da
  • x :=সর্বাধিক x, 0
  • dis :=এর বর্গমূল (da * x * x + 2 * co * x + dp)
  • যদি dis −=r1 + r2 হয়, তাহলে
    • সত্য ফেরান
  • অন্যথায় মিথ্যা ফেরত দিন

উদাহরণ

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

def solve(r1, r2, pos1, acc1, pos2, acc2):
   px, py, pz = pos1[0] - pos2[0], pos1[1] - pos2[1], pos1[2] - pos2[2]
   ax, ay, az = acc1[0] - acc2[0], acc1[1] - acc2[1], acc1[2] - acc2[2]
   da = (ax * ax + ay * ay + az * az)
   dp = (px * px + py * py + pz * pz)
   co = (ax * px + ay * py + az * pz)

   x = 0.0
   if da != 0:
      x = - co / da
   x = max(x, 0)
   dis = (da * x * x + 2 * co * x + dp) ** 0.5
   if dis <= r1 + r2:
      return True
   else:
      return False

r1 = 1
r2 = 2
pos1 = (0, 0, 0)
acc1 = (100,0,0)
pos2 = (4, 0, 0)
acc2 = (0,0,0)
print(solve(r1, r2, pos1, acc1, pos2, acc2))

ইনপুট

1, 2, (0, 0, 0), (100,0,0), (4, 0, 0), (0,0,0)

আউটপুট

False

  1. পাইথনে নোড অদলবদল করে দুটি গাছ তৈরি করা যায় কিনা তা পরীক্ষা করার জন্য প্রোগ্রাম

  2. আমরা পাইথনে বাম বা ডানদিকের অবস্থানে পৌঁছাতে পারি কিনা তা পরীক্ষা করার জন্য প্রোগ্রাম

  3. পাইথনে দুটি আয়তক্ষেত্রাকার ওভারল্যাপ বা না পরীক্ষা করার জন্য প্রোগ্রাম

  4. একটি স্ট্রিং এর দুটি অংশ প্যালিনড্রোম কিনা তা পরীক্ষা করার প্রোগ্রাম পাইথনে নেই