| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Nov 2006
Beiträge: 3
| Schnittstelle für 2D-Skalarfeld
Hallo, Ich schreibe ein Projekt, in dem ich Bilder (2D-Skalarfelder aus verschiewdenen Komponenten) voneinander subtrahiere und andere Dinge damit mache. ////////////////////////////////////////////////////////////////////////////////////// Ich habe mir schon vor langer Zeit eine Komponente KA zur Darstellung eines Grauwertbildes von einem 2D-Skalarfeld gemacht. Diese Komponente KA bringt mir einen Typ für das Skalarfeld TA mit (aber dynamisch undimensioniert). Code: //+++++++++++++++++++++++++
// in Komponente A
type
TA = array of array of single;
TKA = Class(...);
procedure XYZ(F:TA)
....
var
A : TA;
//+++++++++++++++++++++++ Diesen Typ verwende ich auch zum Erzeugen von Instanzen im Hauptprogramm, und dimensioniere dort auch diese. Code: //++++++++++++++++++++++
// im Hauptprogramm
uses KA;
type
AB : TA;
implementation
SetLength(AB,512,512);
KA1.XYZ(AB)
....
//+++++++++++++++++++++ Bislang habe ich im Hauptprogramm die Dimension dieses 2D-Skalarfeldes an die besagte Komponente, zwecks Dimensionierung dort, weitergegeben. Nun habe ich aber auch eine 2. Komponente KB, die etwas anderes macht als die erstgenannte Komponente KA. Auch diese Komponente liefert ein dynamisches 2D-Skalarfeld TB. Code: //++++++++++++++++++++
// in Komponente B
type
TB = array of array of single;
TKB = Class(...);
procedure XYZ(F:TB)
.....
var
B : TB;
....
//++++++++++++++++++ Im Hauptprogramm sollen nun die Skalarfelder der beiden Komponenten KA und KB zusammen passen. Code: //++++++++++++++++++
// im Hauptprogramm
uses KA, KB;
type
AB : TA;
implementation
SetLength(AB,512,512); //Wunsch: diese Dimens. sollte auch in den Komponenten
//gelten!
KA1.XYZ(AB);
KB1.XYZ(AB);
....
//++++++++++++++++ Natürlich geht das so nicht, wie ich es eben geschrieben habe, es ist nur zur Problemveranschaulichung. Das Ganze riecht meiner naiven Vorstellung nach Programmierung auf eine Schnittstelle und nach Polymorphie, wo ich nicht Bescheid weiß. Ich könnte mir vorstellen, daß ich irgend etwas abstraktes, was über all diesen Dingen steht, erzeugen muß. ///////////////////////////////////////////////////////// Ja, wenn mir jemand helfen kann wäre schön. Vielen Dank und ein schönes Fest E. B. Geändert von EccoBravo (20-12-2006 um 10:03 Uhr) |
| | |
| | #2 (permalink) |
| Nagelneuer User Registriert seit: Dec 2005
Beiträge: 924
|
Dafür gibt es viele verschiedene Möglichkeiten. Die einfachste wäre wohl, in beiden Fällen TA (oder TB) zu benutzen, ist das nicht möglich? Wenn du sagst, die verschiedenen Instanzen sollen zusammen passen, was genau meinst du damit? mfg h
__________________ The fact that you've got "Replica" written on the side of your gun and the fact that I've got "Desert Eagle written on the side of mine ... :D |
| | |
| | #3 (permalink) | |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.898
|
Hm, ich verstehe nicht so ganz genau, wo das Problem liegt... aber ich verstehe deine Modellierung auch net so ganz. Auch Pseudocode möchte anschaulich geschrieben werden. Ich kann dir leider nicht mehr anbieten, als eine Skizzerung meines Verständnisses des Problems und eine Sammlung von Klassen anbieten, um dir meine Gedanken zu veranschaulichen. Das Skalarfeld ist laut Definition eine Funktion, die jedem Punkt eines Raumes eine reelle Zahl (Skalar) zuordnet. Ich schätze mal, du hast die Vektoren und willst die Skalare dynamisch generieren? Damit haben wir schon zwei Klassen, die wir modellieren können. Den Skalar kann man auch als Klasse modellieren oder als diskreten Wert einer Funktion auf den Vektoren zurückgeben. Das Ergebnis ist dasselbe, nur die Modellierung ist ein wenig anders. So, die ersten Klassen kann man also schon modellieren: Code:
Code:
Code:
Das sind nur die göbsten Funktionen und Eigenschaften, die die Klassen mitbringen sollen. Nicht berücksichtigen konnte ich, woher die Skalare kommen. Auch werden Divergenz, Rotation Richtungsableitung ect nicht berücksichtigt. Wie du die im Endeffekt in dein Programm integrierst, bleibt dir überlassen. Wenn du nun weitere spezialisierte Skalarfelder brauchst, wobei ich nciht beurteilen kann ob das der Fall ist, würde ich diese von ScalarField erben lassen: Code:
Wenn deine Skizzierung etwas leichter zu lesen wäre, könnte ich vielleicht auch besseren Input geben. Aber es fehlen irgendwie Informationen. Zitat:
Wenn ein Scalarfeld beispielsweise ein anderes Scalarfeld addieren oder subtrahieren können soll, kannst du die Funktionalität in eine extra Klasse schreiben oder sie als Funktionaliät der Klasse ScalarField [nach meinem Code] implentieren, was vernünftig ist, da ein Scalarfeld dieses offenbar an Funktionalität zu Verfügung stellen muss. | |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |