Darstellung von einem Messgitter |
14.08.2004, 19:23 | Toxman | Auf diesen Beitrag antworten » | |||||||||||||||||||
Darstellung von einem Messgitter Als Info-Projekt sollen wir ein Messgitter von Höhenlinien grafisch darstellen, dh. ich soll die Fläche zwischen 4 Messpunkten so mit Farbe ausfüllen, dass ich an der Farbe eines Pixels erkennen kann, wie hoch es etwa ist. (bei dem angehängten Bild hat der linke untere Punkt die höhe 250 und die restlichen Höhe=0) Ich hab schon was implementiert (siehe zweites Bild) nur hab ich da diese Linie, die nicht so gut aussieht. Die Idee dahinter war eine Art Ebenendarstellung per Vektoraddition. Hat jemand schon mal so was gemacht oder eine Idee wie man so was machen kann? |
|||||||||||||||||||||
14.08.2004, 19:25 | Toxman | Auf diesen Beitrag antworten » | |||||||||||||||||||
hier das zweite Bild |
|||||||||||||||||||||
14.08.2004, 19:46 | kurellajunior | Auf diesen Beitrag antworten » | |||||||||||||||||||
Ja, so etwas habe ich schon gemacht. Jedoch fehlt bei Dir die Angabe wie die Höhen abfallen (Funktion wäre cool). Wenn wir von x- und y- Ausdehnung reden, ist es am einfachsten, wenn Du für jede der beiden eine gleichmäßige Vorschrift hättest (im einfachsten Fall linear). Auch sollte der Farbübergang (RGB, Farbkreis, etc. klar sein) Ich versuch mal aus dem Stand Pseudojava der Einfachheit halber in Graustufen:
Ansatz klar? (Bild[0][n-1] - Bild[0][0].farbe)/n*i sollte natürlich in einer eigenen Funktion stehen, die diese vier Parameter bekommt und dem jeweiligen Farbmodell angepasst ist. Idealerweise ist das ein Funktion von Bild selbst... Wo die Linie herkommt ist mir ohne Kenntnis des Algorithmusses nicht klar . EDIT: Doch, die Linie kommt zustande, weil du den Abfall nicht über die ganze Breite/Höhe hast, sondern erst von der Diagonale aus. Das hängt wie gesagt von der Funktion ab, mit der du die Steigung beschreibst. Wenn noch Fragen sind einfach los. |
|||||||||||||||||||||
15.08.2004, 15:16 | Toxman | Auf diesen Beitrag antworten » | |||||||||||||||||||
Meine Funktion sieht so aus: [Delphi Language (Pascal)]
Ich gehe von einer lineraren Funktion aus. Die Unterscheidung in links unter und rechts oben nutze ich weil ich das Quadrat in zwei Dreiecke zerlege um dann eine Ebenengleichung aufstellen kann. Danke für deinen Code. :] Ich hab leider keine Kenntnisse in Java und hab ein paar Probleme bei
Hast du mit diesem Algorhytmus schon mal ein Bild mit den von mit benutzten Eckhöhen gezeichnet? THXbyTOX |
|||||||||||||||||||||
15.08.2004, 17:21 | kurellajunior | Auf diesen Beitrag antworten » | |||||||||||||||||||
Hi, mir fallen zwei logische Fehler auf:
Durch die Aufteilung in zwei Dreiecke entsteht die von Dir beobachtete Linie, da Du zwei Dreiecke aneinander "pappst".
Der Plan ist, dass Du zu erst Zwei Seitenkanten berechnest, also zum Beispiel alle Punkte von AB und CD. Bei Deinem Beispiel also A=250. Heißt bei linearem Abfall von A nach B die dazwischen liegenden Punkte berechnen. Da ist Deine Methode über den Anstieg völlig korrekt. Bei CD sind alle Punkte=0, trotzdem per Formel, falls mal andere Höhen kommen. Jetzt nimmst du alle Pixellinien zwischen AB und CD, rechnest jeweils den Anstieg zwischen der Höhe des unteren Punktes und der des oberen Punktes und berechnest die Zwischenpunkte wie zuvor. Das riecht nach einer Funktion. Meine TP-Zeit ist lange her, ich versuchs mal in etwa zu erläutern
Leider nein. Wenn ich die Funktionsvorschrift finde, deren partieller Anstieg in x- und y- Richtung inear ist, kannst Du die ja mal in einen 3D-Funktionsplotter eingeben, kann ich aber nicht versprechen . |
|||||||||||||||||||||
15.08.2004, 19:22 | Toxman | Auf diesen Beitrag antworten » | |||||||||||||||||||
zu den Fehlern: 1) Ich hatte erst ein Dreieck, dass ich math. korrekt benannt hatte und hab dann noch eine Ecke hinzugefügt. Danach wollte ich nicht alles umschreiben und hab so eine etwas komische Benennung erzielt. 2) Wie du schon selbst gesehen hast (Durch die Aufteilung in zwei Dreiecke entsteht die von Dir beobachtete Linie, da Du zwei Dreiecke aneinander "pappst". ) baue ich das Quadrat aus 2 Dreiecken, denen ich jeweils eine Ebenengleichung zudenke. Dadurch kann ich so ein 'Quadrat mit Falte' darstellen. Danke schon mal. Ich war vorhin skaten und hatte da eine neue Idee zur Einteilung des Quadrats, die ich erstmal versuche umzusetzen. :] TOX |
|||||||||||||||||||||
Anzeige | |||||||||||||||||||||
|
|
Verwandte Themen
Die Beliebtesten » |
Die Größten » |
Die Neuesten » |
|