2013-04-17 16 views
5

Sto cercando di capire come disegnare una linea elastica/elastica tra due punti in openGL/Cocos2d su iPhone. Qualcosa di simileEsiste una tecnica comune per disegnare una linea "elastica"

enter image description here

Dove Get "band" più sottile come la linea si allunga. iOS utilizza la stessa tecnica che sto puntando su Mail.app, pull per aggiornare.

Prima di tutto, esiste un nome per questo genere di cose?

Il mio primo pensiero è stato quello di tracciare un punto sul raggio dei cerchi iniziale e finale in base all'angolo tra i due, e tracciare una curva di bezier quadratica utilizzando la distanza/2 come punto di controllo. Ma non sono un mago della matematica, quindi sto cercando di capire come posizionare il punto di controllo che regolerà lo spessore del percorso.

Ma un problema più grande è che ho bisogno di riempire la forma con un colore, e questo non sembra possibile con le curve di Bezier OpenGL per quanto posso dire poiché le curve non sembrano far parte di un forma che può essere riempita.

Così ho cercato di usare una spline creata usando un array di punti, ma questo apre un nuovo mondo di dolore matematico come dovrei capire dove sono tutti i punti lungo il bordo del percorso.

Quindi prima di scendere in quella tana del coniglio, mi chiedo se c'è qualcosa di più semplice a cui sto trascurando, o se qualcuno può indicarmi la tecnica più efficace.

+0

Solo un pensiero: non penso che abbiate bisogno di splines/bezier qui. Osserva la curvatura, sembra una piccola parte di un cerchio molto grande, che attraversa la parte superiore e inferiore di ogni cerchio del punto finale. Quindi forse puoi trovare un modo per "eliminare" la parte spremuta con cerchi. Più i due punti finali sono distanziati, minore è il raggio dei cerchi del francobollo. – LearnCocos2D

+0

Cheers, anche se guardando più da vicino la cosa blob di iOS "pull to refresh" di default, non sta sicuramente usando questo approccio. Ma cercherò di dare qualche suggerimento al tuo suggerimento. – gargantuan

+0

Hai trovato un nome per questa cosa? –

risposta

2

io non sono sicuro di una tecnica di "comune" che la gente usa, oltre calcolando matematicamente, ma questo progetto, SlimeyRefresh, è un buon esempio di come per ottenere questo risultato.

Problemi correlati