uomoserio
01-03-2014, 16:42
Ciao, avrei bisogno di un aiuto circa un problema che forse è più matematico che di programmazione....spero che possiate aiutarmi a capire.
La premessa: ho una serie di punti (di cui conosco le coordinate) in un grafico cartesiano e dovrei collegarli non con linee rette, ma bensì tramite una curva spline bicubica o di Bezier che passi per i punti stessi.
Dispongo già di una funzione PHP di disegno su file PDF che genera una curva di Bezier fra due punti (la chiamo semicurva, poi capirete il motivo), accettando come input le coordinate dei due punti estremi della semicurva e le coordinate dei due punti di controllo (quello iniziale e quello finale). :fagiano:
Il problema, per me, è proprio quello di calcolare le coordinate dei punti di controllo, in modo tale che la successione delle semicurve costituiscano un'unica curva di Bezier fluida che passa per i punti stessi. :muro:
Alcuni dettagli da tenere conto sono:
- Il primo punto e l'ultimo punto della serie non possono avere il punto di controllo.
- Il secondo punto di controllo di ogni semicurva deve essere collineare al primo punto di controllo della semicurva successiva, per far sì che la curva finale risultante sia fluida.
Ho trovato molte fonti in rete riguardo l'interpolazione (o approssimazione) di curve con spline bicubiche o Bezier, ma non essendo io un matematico non riesco a capirci quasi nulla. :mc:
Inoltre tutto il materiale che ho trovato spiega, dal punto di vista matematico, come calcolare tutti i punti interpolati per generare la curva di Bezier, mentre io ho già una funzione di disegno che si occupa di fare questo e mi serve soltanto calcolare le coordinate dei punti di controllo di ogni semicurva.
Quancuno riesce a spiegarmi come ottengo questo calcolo oppure può segnalarmi qualche fonte dove trovare del codice che esegua questa operazione? Anche se non è codice PHP non importa, posso trasportarlo.
Grazie a chiunque sappia darmi una mano :)
La premessa: ho una serie di punti (di cui conosco le coordinate) in un grafico cartesiano e dovrei collegarli non con linee rette, ma bensì tramite una curva spline bicubica o di Bezier che passi per i punti stessi.
Dispongo già di una funzione PHP di disegno su file PDF che genera una curva di Bezier fra due punti (la chiamo semicurva, poi capirete il motivo), accettando come input le coordinate dei due punti estremi della semicurva e le coordinate dei due punti di controllo (quello iniziale e quello finale). :fagiano:
Il problema, per me, è proprio quello di calcolare le coordinate dei punti di controllo, in modo tale che la successione delle semicurve costituiscano un'unica curva di Bezier fluida che passa per i punti stessi. :muro:
Alcuni dettagli da tenere conto sono:
- Il primo punto e l'ultimo punto della serie non possono avere il punto di controllo.
- Il secondo punto di controllo di ogni semicurva deve essere collineare al primo punto di controllo della semicurva successiva, per far sì che la curva finale risultante sia fluida.
Ho trovato molte fonti in rete riguardo l'interpolazione (o approssimazione) di curve con spline bicubiche o Bezier, ma non essendo io un matematico non riesco a capirci quasi nulla. :mc:
Inoltre tutto il materiale che ho trovato spiega, dal punto di vista matematico, come calcolare tutti i punti interpolati per generare la curva di Bezier, mentre io ho già una funzione di disegno che si occupa di fare questo e mi serve soltanto calcolare le coordinate dei punti di controllo di ogni semicurva.
Quancuno riesce a spiegarmi come ottengo questo calcolo oppure può segnalarmi qualche fonte dove trovare del codice che esegua questa operazione? Anche se non è codice PHP non importa, posso trasportarlo.
Grazie a chiunque sappia darmi una mano :)