Cum de a construi o curbă lină cu un set de puncte

  • Cum de a construi o curbă lină cu un set de puncte
  • Cum de a construi o curbă lină cu un set de puncte
Cum de a construi o curbă lină cu un set de puncte
  • iOS
  • algoritmi
  • Dezvoltarea jocurilor

Sarcina este următoarea: utilizatorul își deplasează degetul de-a lungul ecranului și o curbă netedă ar trebui să apară pe ecran după deget. De exemplu, puteți vedea cum funcționează programul pentru ipad penultimate. Există linii foarte frumoase.







Construiesc o curbă din segmentele Seyche, care sunt curbe cubice Bezier. Am încercat diferite opțiuni. În timp ce cel mai bun rezultat a fost dat în două moduri:







1) Segmentele sunt construite între fiecare pereche de puncte primite de la utilizator (între prima și a doua, apoi între a doua și a treia, etc.). Calculul punctelor lipsă matematic.

Puncte Cred că da:

Pi '= (Pi + 1-Pi-1) / a (pentru i = 2..n-1)

unde Pi este punctul primit de la utilizator, iar B1i și B2i sunt punctele căutate.


Linia de fund: curba este cu siguranta acolo, dar nu destul de buna. Nu am calculat corect punctul, sau metoda nu este cea mai bună.


2) Toate cele patru puncte pentru segment sunt luate din setul primit de la utilizator. Pentru a evita muchiile ascuțite între segmentele adiacente este deplasat de-al doilea punct al segmentului curent bazat pe poziția treilea punct al precedent (astfel încât 3 și punctul 4 al segmentului anterior, precum și laici curent 2a pe un punct de linie dreaptă).


Rezultat: nu mai bine decât în ​​primul caz.


Cum de a face ca curba să fie mai fină, ca în penultimă?

Vă sugerez să folosiți un hibrid. Ieșire: ecuația curbei, ordinea de netezime care vă convine și ecuația unei linii drepte. În apropierea punctelor de tangență se utilizează primul tip de curbă, la distanța cea de-a doua. Reglează acest proces folosind o funcție de greutate care depinde de distanța până la cel mai apropiat punct:
(1-p ®) * f1 (x) + p * * f2 (x). Dacă r este șters, rezultatul este f2 (x). Când tindeți la un punct, rezultatul este f1. În acest interval, rezumăm funcțiile. Funcția de greutate este de la 0 la 1.
Rămâne să alegeți o funcție de greutate care să combine în mod ideal netezirea în jurul punctului și corelația dintre puncte. Această abordare funcționează bine pentru anumite sarcini de cartografiere.

Răspunsul dvs. la întrebare

Conectați-vă pentru a scrie un răspuns

  • Tolyatti
  • Cu normă întreagă
  • de la 60 000 la 90 000 de ruble.
  • Moscova
  • Cu normă întreagă
  • de la 40 000 de ruble.
  • Moscova
  • Cu normă întreagă
  • de la 150 000 la 180 000 de ruble.
  • Moscova
  • Cu normă întreagă
  • de la 150 000 la 180 000 de ruble.

50000 RUR / pe proiect

50000 RUR / pe proiect

Conectați-vă la site

Pentru a pune o întrebare și pentru a primi un răspuns calificat la aceasta.







Articole similare

Trimiteți-le prietenilor: