tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
3
ZUGRIFFE
1219
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    LegionsRevenge LegionsRevenge ist offline Grünschnabel
    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)
     

  2. #2
    Registriert seit
    Mar 2004
    Beiträge
    441
    Zitat Zitat von LegionsRevenge Beitrag anzeigen
    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.
    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.
     

  3. #3
    LegionsRevenge LegionsRevenge ist offline Grünschnabel
    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"
     

  4. #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:
    Code :
    1
    
    for i:= 1 to n-1 do
    Da n nicht definiert ist, kann das natürlich nicht funktionieren. Meintest du evtl.
    Code :
    1
    
    for i := 1 to high(xKoord) -1 do
    ?

    Nummer 2:
    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);
    Du weist zwar Result den Wert deiner Berechnung zu... aber was machst du dann damit? Weder xKoord noch zKoord werden verändert.
    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

  1. Benötige Hilfe
    Von APoCx im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 10.11.08, 14:53
  2. Benötige Hilfe !
    Von Bown im Forum Relationale Datenbanksysteme
    Antworten: 5
    Letzter Beitrag: 05.02.05, 16:47
  3. Benötige Hilfe (am besten viel hilfe)
    Von DaAspi im Forum Videoschnitt, Videotechnik & -produktion
    Antworten: 1
    Letzter Beitrag: 02.09.04, 11:23
  4. Benötige Hilfe zu IIS
    Von gio im Forum Hosting & Webserver
    Antworten: 5
    Letzter Beitrag: 19.02.04, 00:12
  5. Benötige Hilfe!
    Von Extremniki im Forum PHP
    Antworten: 3
    Letzter Beitrag: 25.05.02, 14:03