Matematică în proiectare

Unii au văzut ce se întâmplă dacă introduceți parola greșită pe Mac pentru a vă conecta la sistem. În loc să afișezi fereastra modală cu ajutorul butonului OK, el doar trântește fereastra puțin spre stânga și spre dreapta, ca și cum ar fi întors capul. Pe lângă faptul că este distractiv, nu forțează utilizatorul să apese pe butonul OK.







Sarcina: de a face același lucru în E2 (pentru a verifica parola fără reîncărcarea paginii, nu este o problemă, vom face doar animație).

Mulți designeri și chiar programatori prieteni atât de rău cu fizica și matematica, că, atunci când doriți să adăugați un element de masă (de ex., E. Inerția), sau pentru implementarea unei ferestre credibile spasmul, acestea nu sunt în măsură să se gândească la nimic. Acest lucru este trist. Mi-a luat un minut pentru a veni cu formula, 5 mai - pentru a face munca script-ul, și apoi un alt 5 pentru a ridica factorii de succes.

Oscilațiile sunt asociate în mod natural cu un sinus, dar avem nevoie ca ele să se estompeze treptat. Primul lucru care mi-a avut loc a fost multiplicarea sinusoidului cu o hiperbola: (1 / x) × sin x.

Bineînțeles, nu ne mișcăm deloc capul, dar va fi o primăvară plăcută.

Limita de sin x / x la zero este egal cu una, care este cu siguranță mai bine decât infinit, dar încă mai doresc să fie la punctul 0, valoarea a fost zero, sau la începutul ferestrei apare brusc o sută (de exemplu) pixeli la dreapta decât a fost înainte de începerea animație. Avem nevoie de o hiperbolă la zero pentru a avea o valoare finită, apoi înmulțirea cu păcatul 0 egală cu zero va da zero. Să ne mișcăm ușor hyperbola spre stânga, astfel încât punctul său de rupere să părăsească în zona negativă care nu ne interesează: [1 / (x + 1)] × sin x.

Ca și în creșterea hiperbola x se apropie de zero, dar niciodată, ezitare noastră ajunge, în ciuda atenuarea va continua pe termen nelimitat. Puteți, desigur, să-i oprească atunci când acestea sunt mai puțin de un pixel, dar este mult mai ușor să ușor mai scăzut hiperbola că ea încă a ajuns la zero după un timp: [1 / (x + 1) - 0,01] × sin x.

Pentru a face mai clară, să ne uităm la hiperbolă însăși, fără sinus (1 / (x + 1) - 0,01):







Schimbările 1 spre stânga și 0.01 mai mici sunt luate de chel; după ce scenariul este deja scris, vă puteți angaja în creșterea realismului prin schimbarea acestor numere și amestecarea tuturor coeficienților.

Formula finală, luând în considerare redresarea fiecărei 0,01 s, am obținut acest lucru: [1 / (x 1,25 / 20 + 0,5) - 0,05] × sin (x / 2) × 25.

Creșterea la o putere de 1,25 a fost necesară pentru a îndoi ușor hiperbolul, care dispare prea repede (ai putea să-l muți chiar mai mult spre stânga, dar mi-a plăcut mai mult).

Un designer care nu cunoaște matematica este de două ori mai sărac decât un designer care o cunoaște. Bineînțeles, locul matematicii poate fi pus aici în orice alt subiect - literatură, istorie, limba rusă, limba engleză, biologie, geografie, programare, fizică, chimie. Apropo, știu că cea mai mare parte a articolelor enumerate este extrem de gravă.

Va fi minunat dacă cititorii își împărtășesc exemplele despre modul în care cunoașterea unui obiect le-a ajutat să facă un design mai bun.

Exact aceeași problemă a fost rezolvată astfel:
%% procedură THeadShaker.ShakeHead (AControl: TControl);
var
InitialLeft: Integer;
I: Integer;
TempShakesCount: Integer;
începe
dacă este Atribuit (AControl) atunci
începe
InitialLeft: = AControl.Left;

pentru I: = 0 pentru ShakesCount - 1
începe
AControl.Left: = InitialLeft + ShakeMaxAmplitudinea - I * ShakeFading;
Application.ProcessMessages;
Somn (DelayTime);

AControl.Left: = InitialLeft - ShakeMaxAmplitude + I * ShakeFading;
Application.ProcessMessages;
Somn (DelayTime);
se încheie;
AControl.Left: = InitialLeft;
se încheie;
sfarsit; %%

cote:
%%
ShakesCount: = 8;
ShakeMaxAmplitude: = 20;
ShakeFading: = 3;
DelayTime: = 40;
%%
(Codul Delphi)

Tremurând plăcut, îmi place. Nu știu adevărul, în măsura în care implementarea mea este similară cu cea a lui Makovsky, pentru că am văzut acest efect când l-am plesnit pentru 5 minute în marketingul media.

Dacă doriți o leagăn elastic - este mai bine să utilizați formula corectă (a se vedea nr. 4). Atenuarea fizică a curentului arc / pendul / electric în circuit este exponențială. Sin (x) * Exp (-x / 6) este ceea ce aveți nevoie, iar la zero acest lucru este zero, nu pentru că noi conducem, ci pentru că este așa în natură)

Vreau mai mult comportament uman.
Unele întâmplări în amplitudinea reacției, claritatea "mișcării capului" în primul moment și direcția de schimbare arbitrară.
Cumva))

Înțeleg că atunci este încălcată stereotipul obișnuit al reacției - reacția la aceeași acțiune a utilizatorului devine diferită, dar nu în măsura în care este introdusă în disonanță cognitivă. ))
Cu toate acestea, există pericolul ca o persoană să vrea să introducă parole incorecte pentru a observa reacția. )))

pentru o perioadă scurtă de timp, a fost posibil să se creeze o gamă de abateri și să se elimine calculele din interiorul scenariului. În general, pentru arcuri F = -k / x. Dar scuturarea capului este mai bine nu prin legea primavara.

Consiliere mai corectă va da multiplicatori.







Articole similare

Trimiteți-le prietenilor: