மூன்று ஹைலைட்டர் வடிவியல் என்ஜின்களை ஸ்டாம்ப்களால் ஏன் மாற்றினோம்
உண்மையான Apple Pencil தரவு, செயற்கைச் சோதனைகள் தவறவிட்ட குறைகளை வெளிப்படுத்தி, Lulucat Notes-ஐ மூன்று அவுட்லைன் என்ஜின்களிலிருந்து MaLiang ஸ்டாம்ப் மாதிரிக்குக் கொண்டு சென்றது.
Lulucat Notes ஒரு வழக்கமான ஹைலைட்டர் ரெண்டரருடன் தொடங்கியது: மாதிரி எடுக்கப்பட்ட பாதையைச் சுற்றி ஒரு வடிவியல் அவுட்லைனை உருவாக்கி, பின்னர் அந்த அவுட்லைனை ஒளிஊடுருவும் நிறத்தால் ஒருமுறை நிரப்புவது. ஒரே முறை நிரப்புவதால், ஒளிஊடுருவும் பகுதிகள் ஒன்றின் மேல் ஒன்று படியும் இடங்களில் தோன்றும் கருமையான பட்டைகள் தவிர்க்கப்படுகின்றன. அதே நேரத்தில் ஒவ்வொரு இணைப்பு, தன்னுடன் குறுக்கிடல், கேப் மற்றும் குறுகிய ஸ்ட்ரோக் ஆகியவற்றையும் ஒரே வடிவியல் சிக்கலுக்குள் கொண்டுவருகிறது.
தனிப்பயன் வடிவியலின் மூன்று தலைமுறைகள், ஒவ்வொன்றும் ஒரு வகை குறையை நீக்கி இன்னொன்றை வெளிப்படுத்தின. இப்போது நாங்கள் வெளியிடும் ரெண்டரர், Harley-xk எழுதிய MIT உரிமம் பெற்ற திறந்த மூல வரைதல் கட்டமைப்பான MaLiang அடிப்படையிலான மென்மையான வட்ட ஸ்டாம்ப்களைப் பயன்படுத்துகிறது. அவுட்லைன் தோல்விகளின் முழு வகையை அகற்றியதற்கு மாற்றாக, அதிகமாகக் கருமையடையும் தன்னுடன் குறுக்கிடல்களையும் அழுத்தத்தால் குறுகும் முனைகளையும் ஏற்றுக்கொண்டோம்.

228% zoom-ல் காணப்படும் அசல் சாதன ஸ்கிரீன்ஷாட். பல ஸ்ட்ரோக்குகளின் இரு முனைகளிலும் சிறிய கொக்கிகள் தோன்றுகின்றன.
செயற்கைக் காட்சிகளில் தோன்றாத கொக்கிகளை உண்மையான கைஎழுத்து உருவாக்கியது
எங்கள் செயற்கைக் காட்சிகள் நேர்கோடுகள், வளைவுகள், குறுகிய தட்டல்கள், பின்செலுத்தல்கள், அழுத்த மாற்றங்கள் மற்றும் கூர்மையான திருப்பங்களை உள்ளடக்கியிருந்தன; அவை அனைத்தும் சுத்தமாக ரெண்டர் செய்யப்பட்டன. உண்மையான சீனக் கைஎழுத்து, பல ஸ்ட்ரோக்குகளின் தொடக்கத்திலும் முடிவிலும் சுமார் 1–3 புள்ளிகள் நீளமுள்ள கொக்கிகளை உருவாக்கியது.
எனவே செயலியில் சேமிப்பு பொத்தானைச் சேர்த்து, 29 முழுமையான ஸ்ட்ரோக்குகளைப் பதிவுசெய்தோம். ஒவ்வொரு மாதிரியும் அதன் நிலை, ஆரம், அழுத்தம், அசிமுத், உயரக்கோணம், நேரமுத்திரை மற்றும் UIKit மதிப்பீட்டுக் கொடிகளைத் தக்கவைத்தது. இணையமில்லா ஒரு நிரல் அந்த JSON-ஐ decode செய்து, செயலி பயன்படுத்தும் அதே Stroke.swift, StrokeRenderer.swift மற்றும் HighlighterStrokeBuilder.swift கோப்புகளை compile செய்தது. அதன் வெளியீடு, கொக்குகள் உட்பட, சாதன ஸ்கிரீன்ஷாட்டுடன் ஸ்ட்ரோக்-க்கு-ஸ்ட்ரோக் பொருந்தியது.
இணையமில்லா ரெண்டரர் பதிவுசெய்யப்பட்ட உள்ளீட்டை மட்டும் கொண்டு அந்தக் குறையை மீண்டும் உருவாக்கியதால், காரணம் காட்சி நடத்தையில் அல்ல; மாதிரிகளிலும் வடிவியலிலும் இருந்தது. இப்போது ரெண்டரரில் நுழைந்த துல்லியமான மாதிரிகளைப் படிக்க முடிந்தது.
முதலில், தொடும் போதும் தூக்கும் போதும் மதிப்பிடப்பட்ட Pencil திசைநிலையை நாங்கள் காரணமாகக் கருதினோம். தரவு அதை மறுத்தது. 29 ஸ்ட்ரோக்குகளிலும், முதல் மற்றும் கடைசி எட்டு மாதிரிகளுக்குள் அசிமுத் அதிகபட்சம் 0.09 radians-ம், உயரக்கோணம் அதிகபட்சம் 0.02 radians-ம் மட்டுமே மாறின; அந்த iPad-ல் ஒவ்வொரு மதிப்பீட்டுக் கொடியும் false ஆக இருந்தது. அழுத்தமும் திசையும் கூர்மையாக மாறியபோதும் திசைநிலை நிலையாக இருந்தது.
தரவிலிருந்த தெளிவான இடைவெளியிலிருந்து அழுத்த வரம்பு கிடைத்தது
பதிவுசெய்யப்பட்ட ஒவ்வொரு ஸ்ட்ரோக்கின் கடைசி மாதிரிக்கும் அழுத்தம் 0.000 ஆக இருந்தது. எழுதும் மாதிரிகளின் அழுத்தம் 0.01 அல்லது அதற்கு மேல் இருந்தது; Pencil மேற்பரப்பை விட்டு விலகிய பின் பதிவுசெய்யப்பட்ட மாதிரிகள் 0.002 அல்லது அதற்கு கீழே இருந்தன. அந்தக் காற்றில் இருந்த மாதிரிகள் பெரும்பாலும் 2–7 புள்ளிகள் வரை தொடர்ந்தன, 0.8–9.0 புள்ளிகள் தூரம் சென்றன, மேலும் அவற்றின் திசை எழுதப்பட்ட ஸ்ட்ரோக்கிலிருந்து சுமார் 90 degrees விலகி மாறக்கூடும்.
Stroke 2 இந்தச் செயல்முறையை காட்டுகிறது. அதன் உடல் 143 முதல் 180 degrees இடையில் முடிந்தது. குறைந்த அழுத்தமுள்ள வால் பின்னர் −90 முதல் −67 degrees வரை திரும்பி மேலும் 8.5 புள்ளிகள் சென்றது. அவுட்லைன் ரெண்டரர் இறுதி காற்றில் இருந்த புள்ளியை உண்மையான endpoint ஆகக் கருதியதால், அந்தப் புள்ளி நோக்கி ஒரு குறுகிய வடிவியல் துண்டை நீட்டித்தது.
அளவிடப்பட்ட அழுத்தங்கள் எழுதும் இயக்கத்துக்கும் காற்றில் நிகழும் இயக்கத்துக்கும் இடையில் ஏறத்தாழ ஒரு வரிசை அளவு இடைவெளியை விட்டதால், அந்த இடைவெளிக்குள் cutoff-ஐ வைத்தோம்:
private static let pressureFloor: CGFloat = 0.005
இரு முனைகளிலும் உள்ள குறைந்த அழுத்த மாதிரிகள் மட்டுமே அகற்றப்படுகின்றன. ஸ்ட்ரோக்கின் நடுவில் உள்ள குறைந்த அழுத்த மாதிரி அதன் ஒரு பகுதியாகவே இருக்கும். இந்த விதி அளவிடப்பட்ட நிகழ்வு எல்லையைப் பின்பற்றி, எழுதப்பட்ட பாதையைத் திருத்தாமல் விடுகிறது.

வெட்டுவதற்கு முன், ரெண்டரர் கேப்பை காற்றில் இருந்த மாதிரிகளுடன் இணைக்கிறது. பச்சைப் புள்ளிகள் மூல மாதிரிகள்; சிவப்புக் கோடு உருவாக்கப்பட்ட அவுட்லைன்.

0.005-க்குக் கீழுள்ள மாதிரிகளை வெட்டிய பின், கேப் கடைசியாக எழுதப்பட்ட புள்ளியில் முடிகிறது. இந்த அழுத்த வரம்பு தற்போதைய ஸ்டாம்ப் ரெண்டரரிலும் தொடர்கிறது.
இந்த வரம்பு நீண்ட காற்று-இயக்கக் கொக்கிகளை அகற்றியது. 0.005-க்கு மேல் அழுத்தம் நீடித்த குறுகிய தொடுதல் இழுப்புகளும் தூக்கும் வளைவுகளும் அதிலிருந்து தப்பின, ஏனெனில் அவை எழுதப்பட்ட இயக்கம். அந்த இயக்கங்களை அவுட்லைன் மாதிரிக்குள் கையாள்வது அடுத்தடுத்த வடிவியல் சுற்றுகளுக்கு வழிவகுத்தது.
மூன்று வடிவியல் என்ஜின்கள் குறைகளை இடம் மாற்றின
முதல் தலைமுறை: ஒரு அவுட்லைன், ஒரு நிரப்பு
முதல் அழுத்த உணர்திறன் கொண்ட என்ஜின் பழக்கமான செயல்முறையைப் பின்பற்றியது. அது ஒரு மையக் கோட்டை மென்மையாக்கி, இடது மற்றும் வலது offset-களைக் கணக்கிட்டு, அவற்றை ஒரே polygon-ஆக இணைத்து, அந்த polygon-ஐ ஒருமுறை நிரப்பியது. Apple Pencil-ன் அசிமுத் மற்றும் உயரக்கோணத்தால் இயக்கப்பட்ட ellipse-ஆக nib இருந்தது; ஆகவே அதன் குறுக்குவெட்டு எழுதும் திசையுடன் மாறியது. குறுகிய தட்டல்களுக்கு தனி வடிவம் இருந்தது; தட்டையான கேப்புகள் zero-winding pockets உருவாகாமல் இருக்கச் சிறிய சமச்சீரின்மைகளைப் பயன்படுத்தின.
ஒரே நிரப்பு, ஸ்ட்ரோக்கிற்குள் opacity சேர்வதைத் தீர்த்தது; மேலும் ஒவ்வொரு திருப்பத்திலும் செல்லுபடியாகும் polygon தேவைப்பட்டது. தொடுதல் இழுப்புகள் கேப்புக்கும் உடலுக்கும் இடையில் wedge-களை உருவாக்கின. பின்செலுத்தல்கள் வெள்ளை பிறை வடிவ pockets-ஐ உருவாக்கக்கூடும். கூர்மையான திருப்பங்கள் உள் அவுட்லைனைத் தன்னுடன் குறுக்கிடச் செய்து, நிரப்பப்படாத notch-ஐ விட்டுச் செல்லக்கூடும்.
இரண்டாம் தலைமுறை: முனைகளுக்கு அருகிலுள்ள அவுட்லைனைச் சரிசெய்தல்
இரண்டாவது என்ஜின் அவுட்லைனைத் தக்கவைத்து, உள்ளூர் சரிசெய்தல்களைச் சேர்த்தது: பின்செலுத்தல் வெட்டுதல், ஆரம்பத்தில் மதிப்பிடப்பட்ட பண்புகளுக்கான damping, endpoint நேராக்கம், தற்காலிகத் திசை வெட்டுதல் மற்றும் சிறிய கேப் நீட்டிப்பு. ஒவ்வொரு patch-ம் மீண்டும் உருவாக்கப்பட்ட ஒரு குறையைச் சரிசெய்தது. அனைத்தும் சேர்ந்து, முனைகளின் நடத்தை பல thresholds மற்றும் windows-ஐச் சார்ந்ததாக மாற்றின.
உண்மையான எழுத்து பின்னர் அந்த windows-க்கு வெளியிலான நிலைகளை உருவாக்கியது. நிலையான 24-point நேராக்க window, குறுகிய ஸ்ட்ரோக்குகளில் நோக்கத்துடன் உருவாக்கப்பட்ட கொக்கிகளை அழித்தது. தகவமைவான window அந்தக் கொக்கிகளைப் பாதுகாத்தது; இருந்தும் தூக்கும் வளைவுகள் தெரியும் மூலைகளாக மாறக்கூடும். திசையை உணரும் வெட்டுதல் மேலும் தற்காலிக இயக்கத்தை அகற்றியது; அதற்குப் பதிலாக ஒரு பதிவுசெய்யப்பட்ட ஸ்ட்ரோக்கின் உண்மையான வளைந்த தொடக்கத்தில் சுமார் 2.5 புள்ளிகளைத் தள்ளிவிட வேண்டியிருந்தது.
ஒவ்வொரு patch-ம் தன் இலக்குக் குறையைச் சரிசெய்தது. ஆனால் அவற்றின் அடிப்படை மாதிரிக்கு, சத்தமுள்ள வளைந்த உள்ளீட்டிலும் செல்லுபடியாக இருக்கும் கடினமான அவுட்லைன் இன்னும் தேவைப்பட்டது.
மூன்றாம் தலைமுறை: கிளிப் செய்யப்பட்ட சதுர கேப்புகளுடன் கவரேஜ் யூனியன்
மூன்றாவது என்ஜின் ஒரே contour-ஐ உருவாக்குவதை நிறுத்தியது. ஒவ்வொரு segment-க்கும் ஒரு trapezoid-ஐயும், ஒவ்வொரு உள் மாதிரிப் புள்ளியிலும் ஒரு disc-ஐயும் grayscale mask-க்குள் வரைந்து, அவற்றின் coverage union-ஐ எடுத்தது; பின்னர் ஹைலைட்டர் நிறத்தை ஒருமுறை பயன்படுத்தியது. ரெண்டரர் polygon winding-ஐ இனி சார்ந்திருக்காததால், பின்செலுத்தல் பிறைகள், தன்னுடன் குறுக்கிடும் இடங்களின் கருமை மற்றும் zero-winding holes மறைந்தன.
யூனியன் முனைகளை வட்டமாக்கியது; எனவே இரண்டு endpoint half-plane-களுக்கு எதிராக coverage-ஐ clip செய்து சதுர கேப்புகளை மீட்டோம். அந்த clip நிலையான அழுத்தமுள்ள நேர்கோடுகளைச் சரிசெய்தது; அதே நேரத்தில் மிகவும் தீவிரமான ஒரு குறையை அறிமுகப்படுத்தியது: வளைந்த ஸ்ட்ரோக்கின் உடல் நியாயமாக endpoint half-plane-ஐக் கடக்கலாம், ஆனால் cap clip ஸ்ட்ரோக்கின் நடுப்பகுதியை அகற்றிவிடும். நேரடி உள்ளீட்டின்போது endpoint திசை தொடர்ந்து மாறியதால், clipped பகுதியும் நகர்ந்து ஸ்ட்ரோக் flicker ஆனது.

உலகளாவிய கேப் constraint வளைந்த ஸ்ட்ரோக்கின் உடலை வெட்டுகிறது.

கேப் clipping-ஐ endpoint-இலிருந்து ஒரு half-width தூரத்துக்குள் உள்ள primitives-க்கு மட்டும் கட்டுப்படுத்துவது இந்த ஸ்ட்ரோக்கை மீட்டெடுக்கிறது.
ஒரு arc-length gate கேப் clipping-ஐ உள்ளூர்மயமாக்கி, பதிவுசெய்யப்பட்ட ஒவ்வொரு வழக்கையும் சரிசெய்தது. மிகவும் தீவிரமான ஒரு செயற்கைக் கொக்கி, குறைந்த அழுத்தமுள்ள முனை clipped கேப்பைச் சந்திக்கும் இடத்தில் ஒரு சிறிய வெள்ளை notch-ஐ இன்னும் காட்டியது. மூன்றாவது என்ஜினும் மீண்டும் ஒரு வடிவியல் தோல்வியை மற்றொன்றுடன் மாற்றியிருந்தது.
MaLiang கடினமான எல்லையை அகற்றுகிறது
MaLiang, ஒரு மூடிய அவுட்லைனுக்குப் பதிலாக மீண்டும் மீண்டும் இடப்படும் texture stamps மூலம் ஸ்ட்ரோக்கை உருவாக்குகிறது. அதன் path generator, அடுத்தடுத்த மாதிரிகளின் midpoint-கள் வழியாகச் செல்லும் quadratic Bézier segments-ஐப் பயன்படுத்துகிறது; அதன் line renderer அந்தப் பாதையில் சீரான step-ல் stamps-ஐ இடுகிறது. ஸ்ட்ரோக்கின் நீளத்துக்கு ஏற்ப stamp அளவு, சுழற்சி, நிறம் மற்றும் opacity அனைத்தும் மாறலாம்.
ஒரு மென்மையான stamp-க்கு தனியான கேப், இணைப்பு அல்லது winding விதி எதுவும் இல்லை. திசையில் ஏற்படும் கூர்மையான மாற்றம் ஒன்றின் மேல் ஒன்று படியும் marks-ன் வரிசையாகவே இருக்கும். பின்செலுத்தல்கள் காலியான polygon pocket-ஐ உருவாக்க முடியாது; endpoint half-plane ஸ்ட்ரோக்கின் நடுப்பகுதியை வெட்டவும் முடியாது, ஏனெனில் இந்த மாதிரியில் endpoint clip எதுவும் இல்லை.
நாங்கள் code-ஐ அல்ல, மாதிரியையே ஏற்றுக்கொண்டோம். தற்போதைய HighlighterStrokeBuilder நான்கு செயல்பாடுகளைச் செய்கிறது:
- அழுத்தம்
0.005-க்குக் கீழுள்ள endpoint மாதிரிகளை மட்டும் அகற்றுகிறது. - midpoint quadratic Bézier segments மூலம் நிலைகளை மென்மையாக்குகிறது.
- arc length-ன் ஒவ்வொரு புள்ளியிலும் ஒரு வட்ட stamp-ஐ இடுகிறது.
- normalized pressure-இலிருந்து stamp விட்டத்தை அமைத்து, stamps-ஐ source-over alpha-வுடன் composite செய்கிறது.
Builder 686 வரிகளிலிருந்து 190 ஆகக் குறைந்தது. அசிமுத், உயரக்கோணம், அவுட்லைன் உருவாக்கம், union masks, endpoint direction windows, cap extension மற்றும் cap clipping ஆகியவை அனைத்தும் ஹைலைட்டர் பாதையிலிருந்து விலகின. உள்ளீட்டு மாதிரி அதை ஆதரிப்பதால் Pencil திசைநிலையை இன்னும் பதிவுசெய்கிறோம்; ஆனால் ஹைலைட்டர் இனி அந்த fields-ஐப் படிப்பதில்லை.
MaLiang-ன் அழுத்தச் சூத்திரத்துக்கு சாதன அளவுத்திருத்தம் தேவைப்பட்டது
MaLiang, கீழ்கண்டதற்கு இணையான ஒரு சூத்திரத்தால் stamp-ஐ அளவிடுகிறது:
இதில் force, 0 முதல் 1 வரையிலான வரம்பின் பயனுள்ள பகுதியைப் பயன்படுத்துகிறது என்று கருதப்படுகிறது. எங்கள் சாதனத் தரவு அப்படியில்லை. சுமார் 3,400 Apple Pencil மாதிரிகளில் median pressure 0.047 ஆகவும், அதிகபட்சம் 0.178 ஆகவும் இருந்தது. அந்த மதிப்புகளை நேரடியாகச் சூத்திரத்தில் செலுத்தியபோது, வழக்கமான எழுத்து nominal brush அளவைவிட மிகவும் மெல்லியதாகியது.
எனவே கவனிக்கப்பட்ட median-ஐ மையமாக வைத்து முதலில் normalize செய்து, பின்னர் exponent-ஐப் பயன்படுத்தி முடிவைக் clamp செய்கிறோம்:
இப்போது median writing pressure nominal 12-point விட்டத்துக்கு map ஆகிறது. மிகவும் இலகுவான தொடுதலும் nominal அளவின் 35%-ல் தெரியும்; அதிக அழுத்தம் 120%-ல் வளர்வதை நிறுத்துகிறது.
இந்த calibration, MaLiang-க்கு அல்ல, உள்ளீட்டு சாதனத்துக்கும் brush நடத்தைக்கும் சொந்தமானது. எங்கள் சொந்த pressure distribution-ஐ அளவிடாமல் அசல் சூத்திரத்தை நகலெடுத்திருந்தால், architecture-ஐ மட்டும் காப்பாற்றி, தவறான brush-ஐ உருவாக்கியிருப்போம்.
தெரிந்த overlap எண்ணிக்கையிலிருந்து ஒவ்வொரு stamp-ன் alpha வந்தது
ஒன்றின் மேல் ஒன்று படியும் translucent stamps-க்கு MaLiang அனுபவ அடிப்படையிலான alpha ÷ overlapping × 2.5 வெளிப்பாட்டைப் பயன்படுத்தி ஈடு செய்கிறது. எங்கள் brush-க்கு நிலையான 12-point nominal விட்டமும் 1-point stamp step-ம் இருப்பதால், அதன் centerline சுமார் 12 layers-ஐப் பெறுகிறது. எங்கள் நிலையில் overlap எண்ணிக்கை தெரிந்ததே; எனவே compensation-ஐ மதிப்பிடாமல் தீர்க்க முடியும்.
ஒரு இலக்கு ஸ்ட்ரோக் opacity
எனவே ஒரு stamp-க்கு தேவைப்படுவது

பதிவுசெய்யப்பட்ட சாதனப் பாதைகளை இறுதி ரெண்டரர் மீண்டும் இயக்குகிறது. கொக்கிகள், சாய்வான வெட்டுகள் மற்றும் வெள்ளைப் pockets எதுவும் இல்லை.
நாங்கள் ஏற்றுக்கொண்ட இரண்டு செலவுகள்
தன்னுடன் குறுக்கிடல்கள் அதிகம் கருமையாகின்றன. source-over composition ஒவ்வொரு stamp-ஐயும் கணக்கில் கொள்கிறது; அதே பகுதியில் முந்தைய சுற்றில் இடப்பட்ட stamps-களும் இதில் அடங்கும். கவரேஜ்-யூனியன் என்ஜின் இதைத் தவிர்த்திருந்தது. இருந்தாலும், குறுக்கிடல் கணிக்கக்கூடியதாகவும் ஸ்ட்ரோக்கின் வடிவத்தை அப்படியே வைத்திருப்பதாகவும் இருப்பதால், இந்த அதிகப்படியான கருமையை ஏற்றுக்கொண்டோம்.
அழுத்தத்துடன் முனைகள் குறுகுகின்றன. உண்மையான தூக்கும் இயக்கத்தில் அழுத்தம் குறைவதால் stamp விட்டமும் குறைகிறது; ஆகவே ஸ்ட்ரோக் முழு அகல சதுர கேப்பில் முடிவதற்குப் பதிலாக மெலிகிறது. மூன்று வடிவியல் என்ஜின்களிலும் அந்தச் சதுர கேப்பை ஒரு தேவையாகக் கருதினோம். அதை விட்டுவிட்டதால், மேலே பார்த்த பல தோல்விகளுக்குப் பின்னால் இருந்த clipping மற்றும் endpoint machinery அகன்றது; எனவே குறுகும் முனையை ஏற்றுக்கொண்டோம்.
எனவே நாங்கள் வெளியிடும் மாதிரி, அதற்கு முன் இருந்தவற்றைவிடக் குறைவானவற்றையே செய்கிறது. அது அளவிடப்பட்ட எழுத்து நிகழ்வைப் பாதுகாக்கிறது, சாதன அளவுத்திருத்தத்துக்குப் பிறகு அழுத்தத்துக்கு பதிலளிக்கிறது, மேலும் உலகளவில் செல்லுபடியாகும் அவுட்லைன் தேவையில்லாமல் வளைந்த மற்றும் தன்னுடன் குறுக்கிடும் பாதைகளை ரெண்டர் செய்கிறது. செதுக்குக் கத்தி வடிவ nib, முற்றிலும் சதுர கேப், மற்றும் மூல மாதிரிகளுக்கு இடையிலான துல்லியமான polyline ஆகியவை அதற்காக நாங்கள் விட்டுக்கொடுத்த அம்சங்கள்.
இந்த ஆய்வில் கிடைத்த முடிவுகளில், அழுத்த வரம்புதான் பிற திட்டங்களுக்கு மிகவும் நேரடியாகக் கொண்டு செல்லக்கூடியது. 0.005 என்ற மதிப்பு உண்மையான உள்ளீட்டில் இருந்த இரண்டு குழுக்களுக்கிடையிலான இடைவெளியிலிருந்து வந்தது: எழுதுதல் 0.01 மற்றும் அதற்கு மேல், காற்றில் கண்காணித்தல் 0.002 மற்றும் அதற்கு கீழ். அதே பதிவுசெய்யப்பட்ட ஸ்ட்ரோக்குகள் ஒவ்வொரு வடிவியல் சரிசெய்தலும் எங்கு தோல்வியடைந்தது என்பதையும் காட்டின; அதுவே ஸ்டாம்ப் மாதிரிக்கு மாற்றவும், அது சுமக்கும் இரண்டு செலவுகளை வரையறுக்கவும் வழிவகுத்தது.