AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Mathematisches problem: Achsenkreuz

Mathematisches problem: Achsenkreuz

Offene Frage von "theomega"
Ein Thema von theomega · begonnen am 22. Jul 2004 · letzter Beitrag vom 23. Jul 2004
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von theomega
theomega

Registriert seit: 18. Jun 2002
684 Beiträge
 
#1

Mathematisches problem: Achsenkreuz

  Alt 22. Jul 2004, 20:39
Hallo leute,
habe da ein kleines problem, aber ich steh total auf dem Schlauch ich bekomms nicht raus, wie ich das richtig berechne.

Ich will Punkte in ein Achsenkreuz einzeichnen. Das problem ist, das:
1. Das Achsenkreuz erst mal unbekannt ist, also nur durch variablen festgelegt (siehe unten)
2. Der Masstab variabel ist (auch nicht festgelegt)

Also, was ich über das Achsenkreuz weiß (weil es der User einstellen kann) ist:
- fromx (start des Achsenkreuzes auf der X-Achse)
- tox (ende es Achsenkreuzes auf der X-Achese)
- fromy
- toy (sollte logisch sein, das gleiche auf der y achse)

außerdem weiß ich die größe meines Zeichenbereiches (paintbox1.width, height) nenen wir das mal cwidth und cheight.

Jetzt hätte ich gerne eine Funktion gehabt, die mir, wenn ich als koordinate sagen wir mal (1/1) angebe, den Punkt richtig ins Koordinaten System einzeichnet.
Ich sitze an dieser Funktion schon den ganzen Abend und komm nicht drauf wie ich das allgemein berechnen kann.
Wer kann mir helfen?

Danke
TO
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.716 Beiträge
 
Delphi XE Professional
 
#2

Re: Mathematisches problem: Achsenkreuz

  Alt 22. Jul 2004, 20:41
Hi!

Könntest du evtl. ne Zeichnung zur Verdeutliochung machen?
Sollten fromx und fromy nicht eigentlich 0 sein?
Oder verstehe ich da was falsch?

Ciao fkerber
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von theomega
theomega

Registriert seit: 18. Jun 2002
684 Beiträge
 
#3

Re: Mathematisches problem: Achsenkreuz

  Alt 22. Jul 2004, 20:50
siehe bild im anhang. In dem Fall wäre

fromx:-5
tox:1
fromy:-5
toy:1

ich will jetzt
1. Diese Achsenkreuz auf eine paintbox zeichnen (bekomm ich evtl noch bin
2. In dieses Achsenkreuz was eintragen (z.b. den Punkt -3|0.5)

es geht hier um die Brechnung nicht um die Delphi-Befehle (die kenne ich natürlich)
Miniaturansicht angehängter Grafiken
achsenkreuz.gif  
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.716 Beiträge
 
Delphi XE Professional
 
#4

Re: Mathematisches problem: Achsenkreuz

  Alt 22. Jul 2004, 21:25
Hi!

Ich habe hier mal einen Ansatz, er ist sehr Quick'n'Dirty und zeichnet bisher auch nur das Achsenkreuz, aber vielleiht hilft er dir etwas.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var lx, ly, fromy, toy,fromx,tox, einheity, einheitx: integer;
begin
fromy:=strtoint(edit3.Text);
fromx:=strtoint(edit1.Text);
tox:=strtoint(edit2.text);
toy:=strtoint(edit4.text);
lx:=strtoint(edit2.text)-strtoint(edit1.text);
ly:=strtoint(edit4.text)-fromy;
einheity:=paintbox1.Height div ly;
einheitx:=paintbox1.width div lx;

Paintbox1.Canvas.MoveTo(0,(abs(toy)*einheity));
Paintbox1.Canvas.LineTo(PaintBox1.Width,(abs(toy)*einheity));
Paintbox1.Canvas.MoveTo(paintbox1.Width-(einheitx*(abs(tox))),0);
Paintbox1.Canvas.LineTo(paintbox1.Width-(einheitx*(abs(tox))),Paintbox1.Height);



end;
Er passt auf dein Beispiel, ist aber wohl nicht (!) allgemeingültig ...


Ciao fkerber
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von theomega
theomega

Registriert seit: 18. Jun 2002
684 Beiträge
 
#5

Re: Mathematisches problem: Achsenkreuz

  Alt 22. Jul 2004, 21:29
wie gesagt, der zweite teil mit dem einzeichen der punkte ist mir wichtiger! Aber danke schonmal!
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.716 Beiträge
 
Delphi XE Professional
 
#6

Re: Mathematisches problem: Achsenkreuz

  Alt 22. Jul 2004, 21:34
HI!

Naja, mal einen theoretischen Ansatz:
Du suchst dir raus, wo der Punkt (0|0) ist und seine "echten" Koordinaten.
Dann gehst du von dort deine gewünschte X-Koordinate*Einheitx und das selbe nach y und dann hast du doch deinen Punkt, oder?

Ciao fkerber
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.716 Beiträge
 
Delphi XE Professional
 
#7

Re: Mathematisches problem: Achsenkreuz

  Alt 22. Jul 2004, 21:42
Hi!

Und nochmal als Code:

Delphi-Quellcode:
punkt0x:=abs(fromx*einheitx);
punkt0y:=abs(toy*einheity);

Paintbox1.Canvas.Moveto(punkt0x+(-3*einheitx),punkt0y+abs((-2*einheity)));
Paintbox1.Canvas.Lineto(10+punkt0x+(-3*einheitx),10+punkt0y+abs((-2*einheity)));
Bei allen Codes gilt, du musst immer auf die Vorzeichen achten, um es allgemeingültig zu halten.

Ciao fkerber
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von theomega
theomega

Registriert seit: 18. Jun 2002
684 Beiträge
 
#8

Re: Mathematisches problem: Achsenkreuz

  Alt 22. Jul 2004, 21:50
hey, danke, werde ich morgen sofort mal ausprobieren!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.230 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Mathematisches problem: Achsenkreuz

  Alt 22. Jul 2004, 22:20
So habe dir mal eben was schnell gemacht. Sollte so ziemlich von allen unabhängig sein.

Der Knackpunkt ist der, dass du deine logischen Koordinaten des Koordinatenkreuzes in "physische" Pixel zum Eintragen umrechnen musst. Und das macht diese Funktion:
Delphi-Quellcode:
function Coordinates2Pixel(Origin, cords: TPoint; Interval: Integer): TPoint;
begin
  result.X := Origin.X + (cords.X * Interval);
  result.Y := Origin.Y - (cords.Y * Interval);
end;
Ich habe es so programmiert, dass du den Maßstab (SCALE) beliebig verändern kannst, ohne sonst irgend etwas am Code ändern zu müssen.

Das ganze Projekt im Anhang.

Nachtrag: Ich habe das ganze erstmal auf ganzzahlige Einträge beschränkt.
Angehängte Dateien
Dateityp: zip achsenkreuz.zip (191,7 KB, 26x aufgerufen)
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.716 Beiträge
 
Delphi XE Professional
 
#10

Re: Mathematisches problem: Achsenkreuz

  Alt 22. Jul 2004, 22:37
Hi!

Fehlt da nicht an sich ein Teil seiner Aufgabenstellung?
Das fromx, tox und demenstprechend für y?

Ciao fkerber
Frederic Kerber
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf