Vågformer i Borland C++ Builder?

Elektronik- och mekanikrelaterad mjukvara/litteratur. (T.ex schema-CAD, simulering, böcker, manualer mm. OS-problem hör inte hit!)
Virror
Inlägg: 1025
Blev medlem: 28 april 2004, 11:03:14
Ort: Göteborg
Kontakt:

Vågformer i Borland C++ Builder?

Inlägg av Virror »

Någon som har använt Borland C++ builder eller bara är bra på att koda? Skulle behöva lite hjälp med hur man skapar grafiska vågformer med hjälp av en tabell mätvärden? Inte så snyggt att bara sätta ut en pixel för varje mätvärde....
Användarvisningsbild
strombom
Inlägg: 3305
Blev medlem: 27 maj 2003, 10:50:20
Ort: Västra Götaland
Kontakt:

Inlägg av strombom »

rita linjer mellan punkterna istället ?

/Johan
Användarvisningsbild
Icecap
Inlägg: 26612
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Jag använder BCB6.

Skapa en tom form och använd "Canvas->LineTo(...)" t.ex.

Först ska man såklart placera pennen på ett startpunkt med "Canvas->moveTo(...)".
Virror
Inlägg: 1025
Blev medlem: 28 april 2004, 11:03:14
Ort: Göteborg
Kontakt:

Inlägg av Virror »

Ok, tackar för svaren, lär bli "rita mellan punkter" varianten eftersom det funkar bra och är enklast.
Användarvisningsbild
babbage
Inlägg: 654
Blev medlem: 10 november 2004, 11:33:17
Ort: N-tälje

Inlägg av babbage »

Det här är ett vanligt problem som går under samlingsnamnet "interpolering", att "fylla ut"/gissa/"snygga till" hur det ser ut mellan punkterna. Lämpliga metoder att söka efter är t.ex. "spline", "trigonometriska polynom", "polynominterpolation". Metoden att rita linjer mellan punkterna kallas "linjär interpolation" och är den enklaste, det kan bli lite kantigt men det kan kanske ändå vara bättre än med splines som ger "snyggare" kurvformer. Med linjär interpolation ser man lätt att det just är linjär interpolation. Med splines kan man förledas att tro att de interpolerade värdena är sanna trots att det bara är matematiskt uträknade.

Ett närliggande problem är om man vet att punkternas placering kan beskrivas teoretiskt med en matematisk funktion, då kan man göra kurvanpassning med t.ex. "minsta kvadratmetoden". Med kurvanpassning är det dock inte säkert att den resulterande kurvformen går precis igenom de ursprungliga punkterna.
Virror
Inlägg: 1025
Blev medlem: 28 april 2004, 11:03:14
Ort: Göteborg
Kontakt:

Inlägg av Virror »

Tanken är att det är ett logg program som ska rita upp valt tidsintervall som en oscilloskopsbild ungefär, så det kan bli lite hur som hellst, men det borde funka bra med linjär bara man har gott om mätvärden.
Användarvisningsbild
baron3d
EF Sponsor
Inlägg: 1352
Blev medlem: 1 oktober 2005, 23:58:43
Ort: Torestorp

Inlägg av baron3d »

Varför inte kubisk interpolering.
Användarvisningsbild
chille
Inlägg: 2469
Blev medlem: 25 juni 2003, 20:54:41
Ort: Stockholm
Kontakt:

Inlägg av chille »

Hjälp! Man blir ju förvirrad när man hör alla svenska namn på olika typer av interpolering. Visste knappt att det existerade översättningar. :oops:

Jag har en hel del färdig kod för interpolering, dock vet jag inte om jag har allt som C-kod, eller om det är andra språk. Använde nämligen PHP för att prova lite olika algoritmer och mecka med dom tills jag fick fram önskat resultat.
Virror
Inlägg: 1025
Blev medlem: 28 april 2004, 11:03:14
Ort: Göteborg
Kontakt:

Inlägg av Virror »

Skulle räcka gott och väl bara med en algoritm beskrivning i påhittad pseudokod. :)
Användarvisningsbild
chille
Inlägg: 2469
Blev medlem: 25 juni 2003, 20:54:41
Ort: Stockholm
Kontakt:

Inlägg av chille »

Jo, men de där algoritmerna är ju jobbiga, så de beskriver man inte i pseudokod.

Ta en titt här, finns en hel del algoritmer.

Allt är ju bara matematiska formler., så det behövs ingen pseudo-kod.
Mackan
Inlägg: 210
Blev medlem: 1 mars 2006, 21:20:39
Ort: Fjärdhundra/Enköping
Kontakt:

Inlägg av Mackan »

Jag gjorde ett liknande program i BC-Builder för några år sedan och då använde jag de färdiga funktionerna som finns för att hantera charts. Det blev väldigt bra resultat och mycket likt excel grafer. Dessutom finns det trevliga funktioner för att hantera 3d-grafer och tex.animerade zoom-funktioner. Jag gjorde ett litet oscilloscop-hack som samlade värden via en ad som jag anslöt på parallellporten.

/Markus
Skriv svar