Citat:
Ursprungligen postat av thus
hmm juste ja. Nej grejen är att jag försöker slå ihjäl lite tid genom att skapa ett simpelt ritprogram där jag tänkte lägga in ett verktyg liknande pen tool i illustrator.
Efter lite mysigt googlande hittade jag denna funktion för beizer-kurvor:
P(t) = (1-t)^3P0 + 3(1-t)^2tP1 + 3(1-t)t^2P2 + t^3P3 vilket (förhoppningsvis) är allt jag behöver.
Beizer-kurvorna täcker bara två punkter, den andra och tredje termen är så kallade control points. Dessutom är de bara avsedda för 0<=t<=1. EulerBoys lösning med lagrages metod är bra.Ett annat tillvägagångssätt, som kallas newton devided difference, kommer ge exakt samma polynom, fast beräkningarna är lite snabbare. Orsaken till att det ger samma polynom är att det bara finns ett enda polynom av graden n-1eller mindre som interpolerar n punkter i planet. Om vi kallar de 3 punkterna (x_0,y_0), (x_1,y_1), (x_2,y_2) så börjar man att ställa upp:
x_0 | y_0
x_1 | y_1
x_2 | y_2
i nästa steg beräknar man (y_1 - y_0) / (x_1 - x_0) som vi kan kalla a och skriver
x_0 | y_0
x_1 | y_1 | a
x_2 | y_2 | b
där b beräknats på samma sätt fast med (y_2 - y_1) / (x_2 - x_1)
slutligen beräknas c i
x_0 | y_0
x_1 | y_1 | a
x_2 | y_2 | b |c
som (b-a) / (x_2 - x_0).
Polynomet kan sedan skrivas som y_0 + a(x-x_0) + b(x-x_0)(x-x_1)
Två andra fördelar med divided difference över lagrange: kan enkelt lägga till punkter (i lagrange måste allting räknas om), och bättre condition number for systemmatrisen vid datorlösning (i lagrange utgör den en vandemonde matris).
EDIT: såg nu att du ska göra något ritverktyg (ingen erfarenhet av illustrator dock) och då är det bezier-kurvor som brukar användas. Man anger två startpunkter och 2 kontrollpunkter. Första kontrollpunkten är kopplad till startpunkten och påverkar hur kurvan beter sig när den lämnar startpunkten. Om man ser det som en vektor från P_0 till P_1 så avgör riktningen på vektorn kurvans initiala lutning, och längden på vektorn hur länge kurvan följer den riktningen innan den börjar vika av och påverkas av den andra kontrollpunkten som bestämmer hur kurvan ska bete sig när den går mot slutpunkten.