Adım adım: test düzeneği (Şekil 6)
examples/test-rig/ nasıl tasarlandı. Bu şekil, cam bir düğmenin dokunuşa nasıl tepki verdiğini anlatan bir "Stretch" bölümü içindir: bir basış onu şişirir, çekmek parmağa doğru eğilmesini sağlar (ne kadar çekerseniz o kadar az esner) ve bırakmak onu dinlenme noktasını bir kez geçecek şekilde yaylandırarak geri getirir.
1. Doğruluk
Davranış kütüphane kaynağından saf bir modele, rig.ts'e kopyalandı:
- Dinlenme boyutu 120 × 32'dir (
HALF = [60, 16]). - Bir basış onu %8 şişirir; her kenarda en fazla 6 px.
- Eğilme bir lastik banttır:
give · (1 − 1/(1 + 0.55·d/give)),give= 14 px. - Üç yay vardır: basış 700/32, tutuş 540/40 ve bırakış 320/16 (sertlik/sönüm olarak).
- Kapsül eğilme yönünde en fazla %8 uzar ve enine incelir.
step(member, held, pull, dt) onu ilerletir ve poseOf(member) şekli döndürür. Okuma değeri, aria metni, açıklamadaki sayılar ve hareket eden her parça bu tek modelden okur.
2. Nesne
"Bir test düzeneği." Gerçek bir laboratuvar bir düğmeyi yaylı bir fikstürde tutar ve bir prob ile bir komparatörle ölçer. Her parça bir anlam taşır:
- Cam kapsül konunun kendisidir. Tutulurken aydınlatılır ve şekli her karede pozdan yeniden kurulur.
- İki kılavuz mil üzerinde, dört helezon yaylı bir kızak, camın esnek olduğunu ve geri döndüğünü gösterir. Yaylar o eğildikçe sıkışır ve uzar.
- Arkasındaki bir raydaki parmak probu işaretçidir. Basmak için iner, sonra çekmek için ray boyunca kayar. Raydaki bir cetvel ve bir sürgü ne kadar çektiğini gösterir.
- Pistonu kızağa değen bir komparatör eğimi okur. İbresi her turda 20 px döner ve
givenoktasında bir işaret vardır. - Ayaklar üzerindeki bir taban plakası, cetvelli ve sıfır işaretli dört çubuklu bir çerçeveyi, vidaları, bir etiket plakasını, bir zemin ızgarasını ve miller için delikleri taşır.
3. Parça listesi (53 katı)
| Grup | Parçalar |
|---|---|
| Taban | plaka, 4 ayak (flanş ve ayak), oluk, halkalı 4 köşe vidası, vidalı ve çizgili etiket plakası |
| Ray | ayaklar üzerinde 2 direk, cetvelli kiriş (her 5'te küçük, her 25'te büyük çentik), 2 son durak, vidalar, bir sürgü |
| Prob | blok, tırtıllı başparmak topuzu, işaretçi, gösterge çizgisi, kol, kapaklı gövde, bilezik, dikişler, kilit vidası, gövde mili, bilezik, ped |
| Çerçeve | vidalı arka, sol, sağ ve ön çubuklar, ızgaralı zemin, mil delikleri ve uçları, sıfır işaretli çentikler |
| Mekanizma | 2 mil, 4 bobin (arka ve ön olarak bölünmüş), oturma çizgili kızak plakası, 4 burç, perçinler, bir temas bloğu, bilezikli bir piston çubuğu |
| Saat | vidalı ayak, kovan, kelepçe, kulak, disk, tırtıllı bant, bezel ve kadran halkaları, çentikler, give işaretleri, kurma kolu, bir "px" kazıması, ibre |
| Konu | cam kapsül (dolgu, gölgeler, üst yüz, kıvrım, pah, iç kenar, parlaklık, kenar) ve noktalı dinlenme çizgisi |
4. Kamera ve yerleşim (view.ts)
- Kamera. Azimut 57°; böylece çerçevenin uzun ön yüzü izleyiciye bakar. viewBox 600 × 340'tır ve 34'lük bir boşlukla tabana ve rayın üstüne sığdırılır.
- Yerleşim. Düzenek orijin etrafına yerleştirilir. Cam kızak üstünde (0, 0)'da ortalanır, miller x boyunca y = ±18'de uzanır, saat x = 131'de durur ve ray arkada y = −66, z = 50'de yer alır.
- Yardımcılar.
at(point)bir noktayı izdüşürür veshift(x, z)şeyleri x ve z boyunca taşır.
5. Geometri (geometry.ts, pose.ts)
geometry.tsher statik parçayı bir kez hesaplar:slabOfüzerine birsolid(plan, z, h, steps, bevel)sarmalayıcısı, bircylinder,knurl,sideArc,faceRingve cetvel yardımcıları.pose.ts'te yalnızca değişeni yeniden kuranframeOf(pose, …)vardır: kapsülün yolları, 4 bobin, kızak ve prob dönüşümleri, ibre ve çekiş teli.
6. Ressamın sırası (live.tsx)
- Taban.
- Sürgü ve prob bloğuyla birlikte ray.
- Arka çerçeve çubukları.
- Arka bobin yarıları.
- Miller.
- Sol bobinler.
- Kızak.
- Cam.
- Dinlenme çizgisi.
- Çekiş teli.
- Sağ-arka bobinler.
- Piston.
- Sağ-ön bobinler.
- Ön çerçeve çubukları.
- İbreli saat.
- Parmak.
- Kol.
Kızak onların içinde durabilsin diye çerçeve ve yaylar bölünür.
7. Canlı davranış (live.tsx)
- Tek döngü. Senaryolu turu ya da kullanıcının elini okur, parmağı (τ 0.09 s) ve kalkışı yumuşatır, yay modelini ilerletir, sonra değişen her özniteliği ref'ler üzerinden yazar ve okuma değerini söyler.
- Boşta tur. Görünür olduktan 1.4 s sonra başlar ve her 7.6 s'de bir döner: dinlenme, basış, 80 çekiş, bırakış, oturma. Üzerine gelme, odak ya da basışta durur ve son girdiden 3.6 s sonra devam eder.
- İşaretçi. Üzerine gelmek parmağı ray boyunca taşır; basıp sürüklemek basar ve çeker.
- Klavye. Boşluk basar ya da bırakır, oklar hareket ettirir ve çeker (daha büyük adımlar için Shift), Home ve End uçlara gider, Escape bırakır.
- Erişilebilirlik.
role="slider"ve "Basılı: 129.6 × 34.6 piksel, çekme 80.0 px, eğim 10.6 px" gibi biraria-valuetext. - Azaltılmış hareket. Yaylar kritik sönümlü hale gelir: cam yine şişer ama hiç eğilmez ya da sekmez.
8. Kart
- Köşeler. "Şekil 6" · "Bas ve çek" · ipucu "Basın, sonra çekin ← →" · okuma "120.0 × 32.0 · eğim 0.0 px".
- Lejant anahtarları. Tutulurken cam (kabarık) · dinlendiği yer (noktalı) · çekiş: bastığım yerden parmağa (kenar).
- Açıklama. Düzeneği ve gerçek sayıları belirtir.