Bild drehen (Plotter; Koordinaten-Format)
spacer
Autor Nachricht
Bronstein
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic star
Beiträge: 564

WIN XP
Delphi 6
BeitragVerfasst: So 29.01.12 19:21 
Hallo,
ich habe eine Software die bei einem Plotter mitgeliefert wurde.

Jetzt habe ich alle Grafiken die ich so benötige angelegt mit 0 Grad.

Wenn ich jetzt die Grafik um 90 Grad drehe ändert sich folgende Zeile in der Datei:

500;0;0;500;3.518;923 => 0 Grad
0;500;-500;0;5.379;938 => 90 Grad


Jetzt würde mich intressieren was bei der 2 Zeile berrechnet wurde.
Die ersten 4 Werte sind eindeutig, doch was hat die Software bei den letzten beiden Werten gemacht?

Hat jemand eine Idee was da für eine Formel dahinter steckt?


Moderiert von user profile iconNarses: Topic aus Multimedia / Grafik verschoben am So 29.01.2012 um 19:04
Moderiert von user profile iconNarses: Titel erweitert.

_________________
Es gibt keine dummen Fragen nur dumme Antworten!!!
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.


Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.
Perlsau
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic star
Beiträge: 59
Erhaltene Danke: 4

Win XP pro
Radstudio 2009 pro
BeitragVerfasst: So 29.01.12 20:00 
Moderiert von user profile iconNarses: Komplett-Zitat des letzten Beitrags entfernt.

Wenn du nicht verraten möchtest, um was für ein Dateiformat es sich hier handelt, wird dir wohl keiner helfen können.

_________________
Die Tränen, die du nicht weinen willst, müssen andere für dich vergießen. (frei nach: Wer nicht leiden will, muß hassen)
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Bronstein Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic star
Beiträge: 564

WIN XP
Delphi 6
BeitragVerfasst: So 29.01.12 20:32 
Die Dateiendung heißt *.wmj ist was ganz unbekanntes zumindest für mich.
Die Software nennt sich Weldmark.

Die Daten werden in der Datei in bits gespeichert.

Ich bin jetzt so vorgegangen:
Ich habe ein Symbol mit 0 Grad angelegt und die Datei (wmj) mit einem Editor geöffnet alle Zeilen herauskopiert, danach habe ich das Symbol um 90 Grad gedreht und dann haben sich eben nur die oben genannten Daten geändert. Das ist die Zeile in der Datei die sich geändert hat:
mulmatrix=-500.000000,-0.000044,0.000044,-500.000000,5.379.043213,938.871277



Hoffe das hilft weiter!
Da gibt es doch bestimmt eine mathematische Formel die hier angwendet wurde?

_________________
Es gibt keine dummen Fragen nur dumme Antworten!!!
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Moderator
Beiträge: 2836
Erhaltene Danke: 182

Win 2000, Win XP
Delphi 7, Turbo Delphi Exp.
BeitragVerfasst: So 29.01.12 20:53 
user profile iconBronstein hat folgendes geschrieben Zum zitierten Posting springen:
Die Daten werden in der Datei in bits gespeichert.
:lol:

Es ist also eine Transformationsmatrix - sag das doch ;)
Das sieht mir nach der gleichen Reihenfolge wie in GDI's XFORM aus. Dementsprechend sind die letzten beiden Werte Dx und Dy, was die bedeuten steht ja im Link.

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
Ich code EdgeMonkey -~==~- #ee-lounge in Freenode
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Bronstein Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic star
Beiträge: 564

WIN XP
Delphi 6
BeitragVerfasst: So 29.01.12 21:06 
Danke für die Info.

Habe mich mal ein wenig umgeschaut und habe folgendes gefunden:
ausblenden Delphi-Quelltext markieren
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
var
P : XFORM;
begin
SetGraphicsMode(DC, GM_ADVANCED);

P.eM11 := Cos(DegToRad(Angle));
P.eM22 := Cos(DegToRad(Angle));
P.eM12 := Sin(DegToRad(Angle));
P.eM21 := -Sin(DegToRad(Angle));
P.eDX := Width div 2; // Rotiert durch das Zentrum der Grafik
P.eDY := Height div 2; // Hier kann auch ein anderer Drehpunkt angegeben werden

SetWorldTransform(DC, P);
end;

Wie kann ich jetzt diese Daten dem P zuweisen und wieder auslesen
mulmatrix=-500.000000,-0.000044,0.000044,-500.000000,5.379.043213,938.871277

_________________
Es gibt keine dummen Fragen nur dumme Antworten!!!
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Bronstein Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic star
Beiträge: 564

WIN XP
Delphi 6
BeitragVerfasst: Mo 30.01.12 22:05 
Hier nochmal ein Beispiel, vllt. hat ja doch noch jemand eine Idee wie ich auf die Werte kommen kann:
0 Grad:
ausblenden Quelltext markieren
1:
mulmatrix=499.999969,0.000000,0.000000,500.000000,1407.000000,0.000000


wenn ich die Grafik um 90 Grad drehe kommt das raus:
ausblenden Quelltext markieren
1:
mulmatrix=-0.000022,500.000000,-499.999969,-0.000022,4135.000000,1050.000000


und nochmal um 90:
ausblenden Quelltext markieren
1:
mulmatrix=-499.999969,-0.000044,0.000044,-500.000000,5184.000000,-1679.000000

_________________
Es gibt keine dummen Fragen nur dumme Antworten!!!
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Blup
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic star
Beiträge: 25
Erhaltene Danke: 12



BeitragVerfasst: Do 09.02.12 18:41 
ausblenden volle Höhe Quelltext markieren
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
typedef struct _XFORM {
FLOAT eM11;
FLOAT eM12;
FLOAT eM21;
FLOAT eM22;
FLOAT eDx;
FLOAT eDy;
} XFORM, *PXFORM;
.
eM11 = cos(a) * b
eM12 = sin(a) * b
eM21 = -sin(a) * b
eM22 = cos(a) * b
.
b = 500%
a = 0°
eM11 = 1 * 500 = 500
eM12 = 0 * 500 = 0
eM21 = 0 * 500 = 0
eM22 = 1 * 500 = 500
.
a = 90°
eM11 = 0 * 500 = 0
eM12 = 1 * 500 = 500
eM21 = -1 * 500 = -500
eM22 = 0 * 500 = 0
.
a = 180°
eM11 = -1 * 500 = -500
eM12 = 0 * 500 = 0
eM21 = 0 * 500 = 0
eM22 = -1 * 500 = -500

Zu den Werten eDx und eDy:
Die Koordinaten der einzelnen Punkte innerhalb der Grafik werden immer ausgehend von einem Ursprungspunkt gespeichert. Im Prinzip kann der Ursprungspunkt überall sein, im einfachsten Fall (0, 0). Die beiden Werte geben den Abstand des Punktes zum Ursprung an, um den rotiert wird.
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
home home