পাঠ ০৯ · ৫৭-এর মধ্যে · মডিউল ২
Home / Courses / Human-Computer Interaction / ফিটস'স ল ও হিকস ল

মানুষের মোটর কন্ট্রোল — ফিটস'স ল ও টার্গেট অ্যাকুইজিশন

Human motor control — Fitts's Law & target acquisition
১১ মিনিট পড়া মধ্যম · Intermediate Python কোডসহ সম্পূর্ণ বাংলায়

এই পাঠে যা শিখবেন

  • ফিটস'স ল-এর সূত্র ও এর পেছনের যুক্তি — কেন দূরত্ব ও আকার উভয়ই গুরুত্বপূর্ণ
  • একটি সত্যিকারের কোড ডেমো — চারটি ভিন্ন টার্গেটের জন্য প্রকৃত মুভমেন্ট টাইম গণনা
  • হিকস ল-এর সূত্র — চয়েস রিঅ্যাকশন টাইম কীভাবে বিকল্পের সংখ্যার সাথে বাড়ে (রৈখিকভাবে নয়, লগারিদমিকভাবে)
  • একটি দ্বিতীয় সত্যিকারের কোড ডেমো — ২, ৪, ৮, ১৬ আইটেমের মেনুর জন্য প্রকৃত রিঅ্যাকশন টাইম গণনা
  • ফিটস'স ল (পয়েন্টিং) ও হিকস ল (চয়েস) কীভাবে একসাথে একটি সম্পূর্ণ ইন্টারঅ্যাকশনের সময় ব্যাখ্যা করে

১ · ফিটস'স ল — নতুন উদাহরণ দিয়ে আবার দেখা

L01-এ আমরা ফিটস'স ল-এর মূল সূত্র দেখেছিলাম:

$$MT = a + b \cdot \log_2\left(\frac{2D}{W} + 1\right)$$

যেখানে MT হলো প্রেডিক্টেড মুভমেন্ট টাইম, D টার্গেটের দূরত্ব, W টার্গেটের আকার, এবং a, b ডিভাইস-নির্ভর ধ্রুবক (এখানেও L01-এর মতো ইলাস্ট্রেটিভ মান — a=0.1s, b=0.15s প্রতি বিট — ব্যবহার করা হয়েছে, ধারাবাহিকতার জন্য)। এবার চলুন একটি ভিন্ন প্রেক্ষাপট দেখি — একটি ডেস্কটপ অ্যাপের টুলবার আইকন, একটি দূরের মেনু আইটেম, এবং একটি ছোট চেকবক্স, কাছে ও দূরে দুই অবস্থানে।

Python
import math

a = 0.1   # সেকেন্ড -- বেস (স্টার্ট) টাইম
b = 0.15  # সেকেন্ড প্রতি বিট -- ডিভাইস-নির্ভর ধ্রুবক (ইলাস্ট্রেটিভ মান, L01-এর সাথে সামঞ্জস্যপূর্ণ)

def fitts_mt(D, W):
    ID = math.log2(2 * D / W + 1)   # Index of Difficulty (বিট-এ)
    MT = a + b * ID                  # প্রেডিক্টেড মুভমেন্ট টাইম (সেকেন্ডে)
    return ID, MT

targets = [
    ("কাছের বড় টুলবার আইকন", 60, 45),
    ("দূরের বড় মেনু আইটেম", 900, 45),
    ("কাছের ছোট চেকবক্স", 60, 12),
    ("দূরের ছোট চেকবক্স", 900, 12),
]

for name, D, W in targets:
    ID, MT = fitts_mt(D, W)
    print(f"{name:20s}  D={D:4d}px  W={W:3d}px  ->  ID={ID:.3f} bit  MT={MT*1000:.1f} ms")

    
কাছের বড় টুলবার আইকনে ক্লিক করতে মাত্র ৩৮১.২ ms লাগে, কিন্তু দূরের ছোট চেকবক্সে ক্লিক করতে লাগে ১১৮৫.৮ ms — প্রায় ৩.১ গুণ বেশি সময়। লক্ষণীয়, "কাছের ছোট চেকবক্স" (৬১৮.৯ ms) এবং "দূরের বড় মেনু আইটেম" (৯০৩.৬ ms) — দুটোই মাঝামাঝি মানের, যা আবারও দেখায় আকার ও দূরত্ব উভয়ই স্বাধীনভাবে সময়ের উপর প্রভাব ফেলে, কোনোটাই অপ্রাসঙ্গিক নয়।

২ · হিকস ল — চয়েস রিঅ্যাকশন টাইম

ফিটস'স ল বলে দেয় একটি টার্গেটের দিকে শারীরিকভাবে সরে যেতে কত সময় লাগবে। কিন্তু একটি মেনু খোলার পর ব্যবহারকারী সরে যাওয়ার আগে একটি ভিন্ন কাজ করে — সে সিদ্ধান্ত নেয় কোন আইটেমটি বেছে নেবে। এই সিদ্ধান্ত-গ্রহণের সময় ব্যাখ্যা করে হিকস ল (Hick's Law, কখনো হিক-হাইম্যান ল নামেও পরিচিত):

$$RT = b \cdot \log_2(n + 1)$$

যেখানে RT প্রেডিক্টেড চয়েস রিঅ্যাকশন টাইম, n বিকল্পের সংখ্যা, এবং b একটি ইলাস্ট্রেটিভ ধ্রুবক (এখানে b=0.2s প্রতি বিট ব্যবহার করা হয়েছে)। লক্ষণীয় — এখানেও একটি লগারিদম আছে, ফিটস'স ল-এর মতোই — অর্থাৎ বিকল্পের সংখ্যা দ্বিগুণ করলে সিদ্ধান্ত-সময় দ্বিগুণ হয় না, বরং একটি স্থির পরিমাণ বাড়ে।

Python
import math

b_hick = 0.2  # সেকেন্ড প্রতি বিট -- ইলাস্ট্রেটিভ ধ্রুবক

def hick_rt(n):
    bits = math.log2(n + 1)
    RT = b_hick * bits
    return bits, RT

for n in [2, 4, 8, 16]:
    bits, RT = hick_rt(n)
    print(f"n={n:3d} আইটেম  ->  bits={bits:.3f}  RT={RT*1000:.1f} ms")

_, rt2 = hick_rt(2)
_, rt16 = hick_rt(16)
print(f"\nn=২ থেকে n=১৬ (৮ গুণ বেশি আইটেম), RT বেড়েছে {rt16/rt2:.2f} গুণ")

    
২-আইটেমের মেনুতে সিদ্ধান্ত নিতে ৩১৭.০ ms লাগে, ৪-আইটেমে ৪৬৪.৪ ms, ৮-আইটেমে ৬৩৪.০ ms, এবং ১৬-আইটেমে ৮১৭.৫ ms। আইটেম সংখ্যা ২ থেকে ১৬-এ, অর্থাৎ ৮ গুণ বাড়ানো হলেও, রিঅ্যাকশন টাইম বেড়েছে মাত্র ২.৫৮ গুণ — কারণ সম্পর্কটি লগারিদমিক, রৈখিক নয়। এটাই ব্যাখ্যা করে কেন একটি সু-সংগঠিত ১৬-আইটেমের মেনু ব্যবহারযোগ্য থাকতে পারে, যদিও "প্রতিটি আইটেম একটি নির্দিষ্ট সময় যোগ করে" ধরে নিলে ভুল ধারণা তৈরি হতো।

৩ · একসাথে ব্যবহার — একটি সম্পূর্ণ ইন্টারঅ্যাকশন

বাস্তব জীবনে বেশিরভাগ ইন্টারঅ্যাকশন — যেমন একটি মেনু থেকে একটি অপশন ক্লিক করা — আসলে দুটি ধাপে ঘটে: প্রথমে ব্যবহারকারী কোনটা বেছে নেবে সিদ্ধান্ত নেয় (হিকস ল প্রযোজ্য), তারপর সেই আইটেমের দিকে কার্সার/আঙুল সরায় (ফিটস'স ল প্রযোজ্য)। মোট সময় মোটামুটিভাবে এই দুটির যোগফল। এই কারণেই একটি মেনু ডিজাইন করার সময় শুধু আইটেম কম রাখাই (হিকস ল) যথেষ্ট নয় — প্রতিটি আইটেমও যথেষ্ট বড় ও কাছাকাছি হতে হয় (ফিটস'স ল), নাহলে একটির সুবিধা অন্যটির অসুবিধায় হারিয়ে যেতে পারে। মেগা-মেনু বা ছোট আইকনসহ কম্প্যাক্ট টুলবার ডিজাইন করার সময় ডিজাইনাররা প্রকৃতপক্ষে এই দুটি সূত্রের মধ্যে একটি ট্রেড-অফ নিয়ে কাজ করেন।

মূল কথা · Key takeaway

ফিটস'স ল ও হিকস ল একসাথে প্রমাণ করে HCI-এর একটি কেন্দ্রীয় দাবি — মানুষের আচরণ ইন্টারফেসের প্রেক্ষাপটে নিছক অনুমানযোগ্য নয়, বরং প্রকৃত গাণিতিক সূত্র দিয়ে গণনাযোগ্য। M2-এর এই পাঁচটি পাঠ (L05–L09) একসাথে দেখিয়েছে মানুষের পারসেপশন, মেমরি, মেন্টাল মডেল, ভিজ্যুয়াল গ্রুপিং ও মোটর কন্ট্রোল — প্রতিটির নিজস্ব সীমা ও নিয়ম আছে যা একজন HCI প্র্যাকটিশনারকে জানতেই হয়। এর পরের মডিউল (M3, L10 থেকে) এই ভিত্তির উপর দাঁড়িয়ে প্রকৃত ইন্টারঅ্যাকশন ডিজাইনের বাস্তব উপাদান — অ্যাফোর্ডেন্স, সিগনিফায়ার, ম্যাপিং ও ফিডব্যাক শেখাবে।

ভাবনার প্রশ্ন

প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।

প্র ০১ একটি ডিজাইনার একটি ২০-আইটেমের ফ্ল্যাট মেনুকে ৪টি সাব-মেনুতে ভাগ করে দিয়েছেন, প্রতিটিতে ৫টি করে আইটেম। হিকস ল অনুযায়ী এটি কি সবসময় দ্রুততর হবে?

না, সবসময় নয় — হিকস ল একটি একক সিদ্ধান্তের জন্য প্রযোজ্য। ২০ আইটেমকে ৪ ধাপে ভাগ করলে ব্যবহারকারীকে একাধিকবার (প্রথমে সাব-মেনু বাছাই, তারপর তার ভেতরের আইটেম বাছাই) সিদ্ধান্ত নিতে হয় — প্রতিটি ধাপের RT ছোট হলেও, মোট সময় (একাধিক ধাপের RT + প্রতিটি ধাপের ফিটস'স-ল মুভমেন্ট টাইম) কখনো কখনো একটি একক, ভালোভাবে সংগঠিত ২০-আইটেমের তালিকার (যেখানে গেস্টাল্ট গ্রুপিং ব্যবহার করে স্ক্যানিং সহজ করা হয়েছে) চেয়ে বেশিও হতে পারে। সঠিক উত্তর নির্ভর করে নেভিগেশনের গভীরতা ও প্রতিটি ধাপের নকশার উপর।

প্র ০২ একটি ভিডিও গেমের "কুইক-অ্যাকশন" বাটন (যেমন জাম্প) সবসময় স্ক্রিনের একই কোণে, বড় আকারে রাখা হয়। ফিটস'স ল-এর আলোকে এই সিদ্ধান্তের যুক্তি কী?

একটি ঘন ঘন ব্যবহৃত, সময়-সংবেদনশীল বাটন (যেমন জাম্প, যা প্রায়ই স্প্লিট-সেকেন্ডে চাপতে হয়) ছোট বা অসামঞ্জস্যপূর্ণ জায়গায় রাখলে ফিটস'স ল অনুযায়ী মুভমেন্ট টাইম বাড়ে ও ভুল চাপার সম্ভাবনাও বাড়ে — গেমপ্লেতে যা গুরুতর সমস্যা তৈরি করতে পারে। বড় আকার (কম ID) ও স্থির অবস্থান (খেলোয়াড়ের মাসল মেমরি তৈরি হতে দেয়, প্রতিবার নতুন করে খোঁজার দরকার হয় না) — দুটোই মিলে সিলেকশন টাইম ন্যূনতম রাখে।

প্র ০৩ একটি ভয়েস অ্যাসিস্ট্যান্ট ব্যবহারকারীকে "আপনি কি ১০টি বিকল্পের মধ্যে থেকে একটি রেস্তোরাঁ বেছে নিতে চান?" জিজ্ঞাসা করে সবগুলো একসাথে পড়ে শোনায়। হিকস ল-এর নীতি এখানে কীভাবে প্রাসঙ্গিক, যদিও এটি ভিজ্যুয়াল ইন্টারফেস নয়?

হিকস ল-এর অন্তর্নিহিত নীতি — "বিকল্পের সংখ্যা বাড়লে সিদ্ধান্ত-গ্রহণের জ্ঞানীয় খরচ বাড়ে" — যেকোনো মোডালিটিতে প্রযোজ্য, শুধু ভিজ্যুয়াল/পয়েন্টিং ইন্টারফেসে নয়। ভয়েসে এটি আরও তীব্র, কারণ শ্রোতা একসাথে সবগুলো বিকল্প দেখতে পায় না (M2/L06-এর ওয়ার্কিং মেমরি সীমার সাথেও সরাসরি সম্পর্কিত) — তাকে সবগুলো মনে রাখতে হয় সিদ্ধান্ত নেওয়ার আগ পর্যন্ত। এই কারণেই ভালো ভয়েস UI ডিজাইন সাধারণত একসাথে ৩-৪টির বেশি বিকল্প উপস্থাপন করে না (M9/M42-এ ভয়েস ইন্টারফেস নিয়ে আরও বিস্তারিত)।

অনুশীলন

  1. পরীক্ষা করুন: উপরের প্রথম কোড সেলে ("দূরের ছোট চেকবক্স", 900, 12)-কে ("দূরের ছোট চেকবক্স", 450, 12)-এ পরিবর্তন করে (দূরত্ব অর্ধেক) Run চাপুন। MT কতটা কমেছে, এবং এটি কি ঠিক অর্ধেক কমেছে?

    D=450, W=12-তে ID=6.248 bit এবং MT≈1037.2 ms — মূল ৯০০px দূরত্বের মান (১১৮৫.৮ ms)-এর চেয়ে কম, কিন্তু ঠিক অর্ধেক (৫৯২.৯ ms) নয়। যেহেতু সম্পর্কটি লগারিদমিক, দূরত্ব অর্ধেক করলে সময় অর্ধেক হয় না — এটি ফিটস'স ল ও হিকস ল উভয়ের একটি সাধারণ, গুরুত্বপূর্ণ বৈশিষ্ট্য।

  2. পরীক্ষা করুন: উপরের দ্বিতীয় কোড সেলে [2, 4, 8, 16] তালিকায় 32 যোগ করুন এবং Run চাপুন। n=16 থেকে n=32-এ RT কতটা বাড়ে, এবং এটি কি n=8 থেকে n=16-এর বৃদ্ধির (১৮৩.৫ ms) কাছাকাছি, নাকি অনেক ভিন্ন?

    n=32-তে bits=log2(33)≈5.044, RT≈1008.9 ms — n=16 (৮১৭.৫ ms) থেকে বৃদ্ধি ≈১৯১.৪ ms, যা n=8 থেকে n=16-এর বৃদ্ধির (১৮৩.৫ ms) খুব কাছাকাছি। এটাই লগারিদমিক সম্পর্কের একটি সুন্দর বৈশিষ্ট্য — প্রতিটি "দ্বিগুণ" করায় প্রায় একই পরিমাণ সময় যোগ হয়, আইটেম সংখ্যা যতই বড় হোক না কেন।

আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ

আগের পাঠ
ভিজ্যুয়াল পারসেপশন — UI-এর জন্য গেস্টাল্ট প্রিন্সিপল