ERLEDIGT
JA
JA
ANTWORTEN
3
3
ZUGRIFFE
1219
1219
EMPFEHLEN
-
17.01.09 12:47 #1
- Registriert seit
- Mar 2007
- Beiträge
- 4
Liebe Community,
ich benötige eure Hilfe bei einer Mathematik Facharbeit, in der ich ein Programm entwickeln muss. Mein Thema lautet "Splines und Bezierkurven bei TrueType ähnlichen Schriften".
kurze Einführung in die Problematik:
Buchstaben bei heutigen Rechnern, werden ja nicht mehr nach dem Bausteinprinzip also pixel für pixel aufeinander aufgebaut sondern werden durch Berechnung von Randfunktionen bestimmt, was beim Zoomen zum Beispiel nicht für unscharfe Buchstaben sorgt. Mein Programm soll nun (für den Anfang) einen solchen Buchstaben zeichnen. Dies soll er so leisten:
http://img165.imageshack.us/img165/1...zierdo8.th.jpg
Die Funktion soll durch zwei Punkt (hier A und C) laufen und durch einen (oder mehrere) Punkte abgelenkt werden. (hier ein Punkt B). Dafür werden imaginäre Strecken zwischen allen nebeneinander liegenden Punkten gedacht, und Punkte auf diesen Strecken definiert die durch einen Parameter 0<t<1 auf dieser Strecke sich von einem bis zum anderen Punkt bewegen. Von diesen Punkten werden wieder die Mittelwerte genommen, und wieder, und wieder, bis nurnoch ein Punkt übrigbleibt. der nun eine Spur vom ersten bis zum letzten Punkt beschreibt welche die Funktion ist.
Mein Problem:
Bei der Übersetzung des Problems in ein Programm weiß ich nicht, wie ich diese Mittelwertberechnung durchführen kann. Ich habe mir überlegt ob man eine Art Rekursion für die Berechnungen heranführen kann. Weiß allerdings nicht genau wie. Habe mich nun schon eine weile daran probiert, doch kriege nichts vernünftiges hin.
HILFE!!
Geändert von LegionsRevenge (17.01.09 um 12:53 Uhr)
-
26.01.09 09:57 #2
- Registriert seit
- Mar 2004
- Beiträge
- 441
Wenn du das evtl. noch einmal anders erklären/umschreiben könntest, dann kann ich evtl. helfen. Aber so wie es da steht, kann ich mit den Informationen nichts anfangen. Evtl. stehe ich einfach nur auf dem Schlauch.
Ein Source deinerseits, was du bislang zusammen gebastelt hast, könnte auch zum Problemverständnis beitragen.
-
26.01.09 17:12 #3
- Registriert seit
- Mar 2007
- Beiträge
- 4
Danke für wenigstens die Reaktion, dass es nich gereicht hat

function TForm1.faltungx(i:integer;var xKoord: array of double;var zKoord: array of double; t:double): double;
begin
// Von 1 bis Länge des Arrays - 1 (damit ich nurnoch
// zwei Werte übrig habe um den letzten Punkt zu berechnen
for i:= 1 to n-1 do
begin
//Das soll der Algorithmus sein mit dem er den Punkt berechnet
//So ganz habe ich auch nicht verstanden, wie das funktionieren soll,
//Das Programm soll wohl ein array (hier zKoord) durchrechnen bis n-1
zKoord[i]:= t*xKoord[i] + (1-t)*xKoord[i-1];
end;
result:=zKoord[i];
//und das solange, bis nurnoch zwei Werte übrig sind
if i=2 then
begin
result:=xKoord[1]
end
else
//und wenn nicht, soll die Funktion sich selbst nochmal aufrufen mit
//dem gerade berechneten Array, welches ja nun einen Wert weniger haben soll
faltungx(i,zKoord,xKoord,t);
end;
man muss sich das so vorstellen, dass ein punkt auf einer strecke zwischen zwei punkten berechnet wird dieser weiterhin durch eine strecke verbunden is auf der ein weiterer punkt liegt und so weiter...auf Wikipedia gibt es einige gute Darstellungen dieses Problems unter "Bezierkurve"
-
29.01.09 10:25 #4
- Registriert seit
- Mar 2004
- Beiträge
- 441
Ich habe mir das jetzt mal ein wenig angeschaut. Mit dem Sourcefragment, das du gepostet hast, habe ich ein paar Probleme.
Nummer 1:
Da n nicht definiert ist, kann das natürlich nicht funktionieren. Meintest du evtl.Code :1
for i:= 1 to n-1 do
?Code :1
for i := 1 to high(xKoord) -1 do
Nummer 2:
Du weist zwar Result den Wert deiner Berechnung zu... aber was machst du dann damit? Weder xKoord noch zKoord werden verändert.Code :1 2 3 4 5 6 7 8 9 10
result:=zKoord[i]; //und das solange, bis nurnoch zwei Werte übrig sind if i=2 then begin result:=xKoord[1] end else //und wenn nicht, soll die Funktion sich selbst nochmal aufrufen mit //dem gerade berechneten Array, welches ja nun einen Wert weniger haben soll faltungx(i,zKoord,xKoord,t);
Fehlt da evtl. noch ein Schritt?
Wo verringerst du die Anzahl von xKoord oder zKoord?
Der erneute rekursive Aufruf von faltung() kann nichts bringen, da kein Ende des Algorithmus erreicht wird, da xKoord und zKoord in der Größe unverändert bleiben.
Ähnliche Themen
-
Benötige Hilfe
Von APoCx im Forum Javascript & AjaxAntworten: 1Letzter Beitrag: 10.11.08, 14:53 -
Benötige Hilfe !
Von Bown im Forum Relationale DatenbanksystemeAntworten: 5Letzter Beitrag: 05.02.05, 16:47 -
Benötige Hilfe (am besten viel hilfe)
Von DaAspi im Forum Videoschnitt, Videotechnik & -produktionAntworten: 1Letzter Beitrag: 02.09.04, 11:23 -
Benötige Hilfe zu IIS
Von gio im Forum Hosting & WebserverAntworten: 5Letzter Beitrag: 19.02.04, 00:12 -
Benötige Hilfe!
Von Extremniki im Forum PHPAntworten: 3Letzter Beitrag: 25.05.02, 14:03





Zitieren
Login





