মানুষের মোটর কন্ট্রোল — ফিটস'স ল ও টার্গেট অ্যাকুইজিশন
এই পাঠে যা শিখবেন
- ফিটস'স ল-এর সূত্র ও এর পেছনের যুক্তি — কেন দূরত্ব ও আকার উভয়ই গুরুত্বপূর্ণ
- একটি সত্যিকারের কোড ডেমো — চারটি ভিন্ন টার্গেটের জন্য প্রকৃত মুভমেন্ট টাইম গণনা
- হিকস ল-এর সূত্র — চয়েস রিঅ্যাকশন টাইম কীভাবে বিকল্পের সংখ্যার সাথে বাড়ে (রৈখিকভাবে নয়, লগারিদমিকভাবে)
- একটি দ্বিতীয় সত্যিকারের কোড ডেমো — ২, ৪, ৮, ১৬ আইটেমের মেনুর জন্য প্রকৃত রিঅ্যাকশন টাইম গণনা
- ফিটস'স ল (পয়েন্টিং) ও হিকস ল (চয়েস) কীভাবে একসাথে একটি সম্পূর্ণ ইন্টারঅ্যাকশনের সময় ব্যাখ্যা করে
১ · ফিটস'স ল — নতুন উদাহরণ দিয়ে আবার দেখা
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 প্রতি বিট — ব্যবহার করা হয়েছে, ধারাবাহিকতার জন্য)। এবার
চলুন একটি ভিন্ন প্রেক্ষাপট দেখি — একটি ডেস্কটপ অ্যাপের টুলবার আইকন, একটি দূরের মেনু আইটেম, এবং একটি ছোট
চেকবক্স, কাছে ও দূরে দুই অবস্থানে।
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")
২ · হিকস ল — চয়েস রিঅ্যাকশন টাইম
ফিটস'স ল বলে দেয় একটি টার্গেটের দিকে শারীরিকভাবে সরে যেতে কত সময় লাগবে। কিন্তু একটি মেনু খোলার পর ব্যবহারকারী সরে যাওয়ার আগে একটি ভিন্ন কাজ করে — সে সিদ্ধান্ত নেয় কোন আইটেমটি বেছে নেবে। এই সিদ্ধান্ত-গ্রহণের সময় ব্যাখ্যা করে হিকস ল (Hick's Law, কখনো হিক-হাইম্যান ল নামেও পরিচিত):
$$RT = b \cdot \log_2(n + 1)$$
যেখানে RT প্রেডিক্টেড চয়েস রিঅ্যাকশন টাইম, n বিকল্পের সংখ্যা, এবং b
একটি ইলাস্ট্রেটিভ ধ্রুবক (এখানে b=0.2s প্রতি বিট ব্যবহার করা হয়েছে)। লক্ষণীয় — এখানেও একটি
লগারিদম আছে, ফিটস'স ল-এর মতোই — অর্থাৎ বিকল্পের সংখ্যা দ্বিগুণ করলে সিদ্ধান্ত-সময় দ্বিগুণ হয় না, বরং একটি
স্থির পরিমাণ বাড়ে।
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} গুণ")
৩ · একসাথে ব্যবহার — একটি সম্পূর্ণ ইন্টারঅ্যাকশন
বাস্তব জীবনে বেশিরভাগ ইন্টারঅ্যাকশন — যেমন একটি মেনু থেকে একটি অপশন ক্লিক করা — আসলে দুটি ধাপে ঘটে: প্রথমে ব্যবহারকারী কোনটা বেছে নেবে সিদ্ধান্ত নেয় (হিকস ল প্রযোজ্য), তারপর সেই আইটেমের দিকে কার্সার/আঙুল সরায় (ফিটস'স ল প্রযোজ্য)। মোট সময় মোটামুটিভাবে এই দুটির যোগফল। এই কারণেই একটি মেনু ডিজাইন করার সময় শুধু আইটেম কম রাখাই (হিকস ল) যথেষ্ট নয় — প্রতিটি আইটেমও যথেষ্ট বড় ও কাছাকাছি হতে হয় (ফিটস'স ল), নাহলে একটির সুবিধা অন্যটির অসুবিধায় হারিয়ে যেতে পারে। মেগা-মেনু বা ছোট আইকনসহ কম্প্যাক্ট টুলবার ডিজাইন করার সময় ডিজাইনাররা প্রকৃতপক্ষে এই দুটি সূত্রের মধ্যে একটি ট্রেড-অফ নিয়ে কাজ করেন।
ফিটস'স ল ও হিকস ল একসাথে প্রমাণ করে HCI-এর একটি কেন্দ্রীয় দাবি — মানুষের আচরণ ইন্টারফেসের প্রেক্ষাপটে নিছক অনুমানযোগ্য নয়, বরং প্রকৃত গাণিতিক সূত্র দিয়ে গণনাযোগ্য। M2-এর এই পাঁচটি পাঠ (L05–L09) একসাথে দেখিয়েছে মানুষের পারসেপশন, মেমরি, মেন্টাল মডেল, ভিজ্যুয়াল গ্রুপিং ও মোটর কন্ট্রোল — প্রতিটির নিজস্ব সীমা ও নিয়ম আছে যা একজন HCI প্র্যাকটিশনারকে জানতেই হয়। এর পরের মডিউল (M3, L10 থেকে) এই ভিত্তির উপর দাঁড়িয়ে প্রকৃত ইন্টারঅ্যাকশন ডিজাইনের বাস্তব উপাদান — অ্যাফোর্ডেন্স, সিগনিফায়ার, ম্যাপিং ও ফিডব্যাক শেখাবে।
ভাবনার প্রশ্ন
প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।
প্র ০১ একটি ডিজাইনার একটি ২০-আইটেমের ফ্ল্যাট মেনুকে ৪টি সাব-মেনুতে ভাগ করে দিয়েছেন, প্রতিটিতে ৫টি করে আইটেম। হিকস ল অনুযায়ী এটি কি সবসময় দ্রুততর হবে?
না, সবসময় নয় — হিকস ল একটি একক সিদ্ধান্তের জন্য প্রযোজ্য। ২০ আইটেমকে ৪ ধাপে ভাগ করলে ব্যবহারকারীকে একাধিকবার (প্রথমে সাব-মেনু বাছাই, তারপর তার ভেতরের আইটেম বাছাই) সিদ্ধান্ত নিতে হয় — প্রতিটি ধাপের RT ছোট হলেও, মোট সময় (একাধিক ধাপের RT + প্রতিটি ধাপের ফিটস'স-ল মুভমেন্ট টাইম) কখনো কখনো একটি একক, ভালোভাবে সংগঠিত ২০-আইটেমের তালিকার (যেখানে গেস্টাল্ট গ্রুপিং ব্যবহার করে স্ক্যানিং সহজ করা হয়েছে) চেয়ে বেশিও হতে পারে। সঠিক উত্তর নির্ভর করে নেভিগেশনের গভীরতা ও প্রতিটি ধাপের নকশার উপর।
প্র ০২ একটি ভিডিও গেমের "কুইক-অ্যাকশন" বাটন (যেমন জাম্প) সবসময় স্ক্রিনের একই কোণে, বড় আকারে রাখা হয়। ফিটস'স ল-এর আলোকে এই সিদ্ধান্তের যুক্তি কী?
একটি ঘন ঘন ব্যবহৃত, সময়-সংবেদনশীল বাটন (যেমন জাম্প, যা প্রায়ই স্প্লিট-সেকেন্ডে চাপতে হয়) ছোট বা অসামঞ্জস্যপূর্ণ জায়গায় রাখলে ফিটস'স ল অনুযায়ী মুভমেন্ট টাইম বাড়ে ও ভুল চাপার সম্ভাবনাও বাড়ে — গেমপ্লেতে যা গুরুতর সমস্যা তৈরি করতে পারে। বড় আকার (কম ID) ও স্থির অবস্থান (খেলোয়াড়ের মাসল মেমরি তৈরি হতে দেয়, প্রতিবার নতুন করে খোঁজার দরকার হয় না) — দুটোই মিলে সিলেকশন টাইম ন্যূনতম রাখে।
প্র ০৩ একটি ভয়েস অ্যাসিস্ট্যান্ট ব্যবহারকারীকে "আপনি কি ১০টি বিকল্পের মধ্যে থেকে একটি রেস্তোরাঁ বেছে নিতে চান?" জিজ্ঞাসা করে সবগুলো একসাথে পড়ে শোনায়। হিকস ল-এর নীতি এখানে কীভাবে প্রাসঙ্গিক, যদিও এটি ভিজ্যুয়াল ইন্টারফেস নয়?
হিকস ল-এর অন্তর্নিহিত নীতি — "বিকল্পের সংখ্যা বাড়লে সিদ্ধান্ত-গ্রহণের জ্ঞানীয় খরচ বাড়ে" — যেকোনো মোডালিটিতে প্রযোজ্য, শুধু ভিজ্যুয়াল/পয়েন্টিং ইন্টারফেসে নয়। ভয়েসে এটি আরও তীব্র, কারণ শ্রোতা একসাথে সবগুলো বিকল্প দেখতে পায় না (M2/L06-এর ওয়ার্কিং মেমরি সীমার সাথেও সরাসরি সম্পর্কিত) — তাকে সবগুলো মনে রাখতে হয় সিদ্ধান্ত নেওয়ার আগ পর্যন্ত। এই কারণেই ভালো ভয়েস UI ডিজাইন সাধারণত একসাথে ৩-৪টির বেশি বিকল্প উপস্থাপন করে না (M9/M42-এ ভয়েস ইন্টারফেস নিয়ে আরও বিস্তারিত)।
অনুশীলন
-
পরীক্ষা করুন: উপরের প্রথম কোড সেলে
("দূরের ছোট চেকবক্স", 900, 12)-কে("দূরের ছোট চেকবক্স", 450, 12)-এ পরিবর্তন করে (দূরত্ব অর্ধেক) Run চাপুন। MT কতটা কমেছে, এবং এটি কি ঠিক অর্ধেক কমেছে?D=450, W=12-তে ID=6.248 bit এবং MT≈1037.2 ms — মূল ৯০০px দূরত্বের মান (১১৮৫.৮ ms)-এর চেয়ে কম, কিন্তু ঠিক অর্ধেক (৫৯২.৯ ms) নয়। যেহেতু সম্পর্কটি লগারিদমিক, দূরত্ব অর্ধেক করলে সময় অর্ধেক হয় না — এটি ফিটস'স ল ও হিকস ল উভয়ের একটি সাধারণ, গুরুত্বপূর্ণ বৈশিষ্ট্য।
-
পরীক্ষা করুন: উপরের দ্বিতীয় কোড সেলে
[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-এ আপনার পরবর্তী পদক্ষেপ
- কোর্সের সম্পূর্ণ সিলেবাস দেখুন ৫৭টি পাঠ কগনিটিভ সাইকোলজি, ইন্টারঅ্যাকশন ডিজাইন, ইউজেবিলিটি হিউরিস্টিক্স, ইউজার রিসার্চ, প্রোটোটাইপিং, ইভালুয়েশন মেথড, ভিজ্যুয়াল ডিজাইন, অ্যাক্সেসিবিলিটি ও ক্যাপস্টোন।
- পরবর্তী পাঠ — অ্যাফোর্ডেন্স ও সিগনিফায়ার L10 মডিউল ৩-এর শুরু — একটি বাটন কেন "বাটনের মতো দেখতে হয়" এবং একটি দরজার হাতল কীভাবে নিজেই বলে দেয় এটি ঠেলতে হবে নাকি টানতে হবে।
- সব Courses দেখুন ABCL TECH C, C++, Python, Java, JavaScript, DSA, Machine Learning, Deep Learning, System Design, Cybersecurity, Cloud Computing & DevOps, এবং আরও অনেক কোর্স — সব এক জায়গায়।