/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Spline smoothing
Fra : Rune Simonsen


Dato : 31-01-03 19:31

Hej...

Jeg skal bruge en metode der tager n* stk. koordinater(verticer) i et
3-dim. koordnatsystem og giver 1000 koordinater igen, som
repræsenterer den samme linie, blot som "blød" linie.

Jeg bruger pt. Beziér interpolation, og det virker da også, men er
ikke rigtig tilfreds, da den resulterende kurve ikke går gennem
kontrolpunkterne, men blot "nær" dem.

Jeg tror jeg har implementeret algoritmen rigtigt, men er ikke sikker.
Anyone? (Koden står i bunden af indlægget).

Hvilken algoritme kan jeg bruge i stedet? Den skal selvfølgelig være
så simpel som muligt at implementere, men gerne virke lidt bedre end
Beziér. Jeg har ledt på nettet, men kan ikke rigtig overskue hvad jeg
kan bruge og jeg kan kun finde meget lidt konkret info om de
forskellige algoritmer. evnt. links er mere end velkomne.

Min funktion ser pt. sådan ud - lader man så t variere mellem 0 og 1
1000 gange kommer de ønskede punkter ud.

På forhånd mange tak for hjælpen!

function nPointBez(arr : Array of Vertex; t : Double):vertex;
var
k,n : Integer;
s : Double;
resultvertex : Vertex;
begin
ResultVertex := Vertex.create(0,0,0,0,0,0,0,0);
n := length(arr)-1;
for k := 0 to n do
begin
s := (fakultet(n))/(fakultet(k)*fakultet(n-k));
ResultVertex :=
VertexAdd(VertexScale((Power(1-t,n-k)),VertexScale((Power(t,k)),VertexScale(s,arr[k]))),ResultVertex);
end;
result := resultVertex;
end;

hvor de brugte metoder er defineret således:
function VertexScale(r:Double;a:Vertex):Vertex;
function VertexAdd(a,b:vertex): Vertex;

*hvor 5<n<100

--

Rune Simonsen

 
 
Rune Simonsen (01-02-2003)
Kommentar
Fra : Rune Simonsen


Dato : 01-02-03 01:45

On Fri, 31 Jan 2003 19:30:33 +0100, Rune Simonsen <rrs@nospam.dk>
wrote:

> Jeg bruger pt. Beziér interpolation,[...]

Har fundet frem til at det vist nok ser meget fornuftigt ud at
implementere en Catmull-Rom spline. Jeg har desværre ikke tid til at
gøre det nu, så hvis nogle af Jer har en bedre ide må I gerne råbe
højt.

--

Rune Simonsen

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste