IOsetTransformation

Top  Previous  Next

Aktiviert die Koordinatentransformation des Digitizers.

Die Transformation des Digitizers kann beliebig ein oder ausgeschaltet werden. Die Transformationspunkte, die mit IOsetTransformParams gesetzt werden, bleiben auch über das Ausschalten der Transformation hinaus erhalten. Es gibt zwei Transformationen.

Helmert

Die eigentliche Transformation setzt sich aus einer Verschiebung, einer Größenveränderung und einer Rotation um kleine Winkel zusammen. Die Transformation arbeitet auf einer Abbildungsvorschrift, die eine Anzahl von Ist- und Sollpunkten enthält. Die Anzahl der Punkte ist mindestens 2.

Die Verschiebung bildet den Schwerpunkt der Istpunkte auf den Schwerpunkt der Sollpunkte ab. Der Schwerpunkt wird exakt transformiert. Alle anderen Punkte der Transformation können Fehler aufweisen. Diese Fehler heißen Restklaffung.

Die Größenveränderung basiert auf dem Abstand der Soll- und Istpunkte vom jeweiligen Schwerpunkt. Punkte haben in der Transformation ein höheres Gewicht, wenn sie sich weiter vom Schwerpunkt entfernt befinden als andere.

Die Rotation funktioniert nur für kleine Winkel, da sie sin(x)=x voraussetzt.

Affin

Zusätzlich zur Helmerttransformation werden hier auch die Verzerrungen Länge/Breite ausgeglichen.

Restklaffungsausgleich

Beide Transformationsarten sind auch mit Restklaffungsausgleich vorhanden. Die Referenzpunkte der Transformation werden dann nach dem Abstand zum Eingabepunkt gewichtet. Je näher ein Referenzpunkt liegt, desto größer wird sein Gewicht.

Parameter

pipes (PIOPIPES)                                      [IN]

Das Handle pipes gibt den Ausgabekanal an.

transformation (int)                                      [IN]

Mit diesem Parameter wird angegeben, welche Art der Transformation von jetzt an auf die Koordinaten angewandt werden soll, die mit dem Digitizer eingegeben werden. Koordinaten, die über die Kommandozeile eingeben werden, werden hiervon nicht beeinflusst. Mögliche Koordinatentransformationen sind Helmerttransformation und Affintransformation. Helmert realisiert dabei eine Größenveränderung, Verschiebung und Drehung. Affin realisiert eine Größenveränderung mit Verschiebung. Weiterhin ist es möglich, die Transformation auszuschalten. Es werden dann die physikalischen Koordinaten des Digitizers geliefert.

Ergebnis

---

Konstanten

#define TRANSFORM_TYPE_NO                       0

#define TRANSFORM_TYPE_HELMERT                  2

#define TRANSFORM_TYPE_AFFIN              4

#define TRANSFORM_TYPE_HELMERT_RESTKLAFFUNG     3

#define TRANSFORM_TYPE_AFFIN_RESTKLAFFUNG       5

#define TRANSFORM_TYPE_POLAR              6

Deklaration

#include "ausgabe.h"

 

void DLLENTRY IOsetTransformation (

     PIOPIPES    pipes,

     int            transformation

);