BlackBoard » Design, Programmierung & Entwicklung » Programmieren » [PASCAL] dehnbares und beschriftetes Koordinatensystem » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen [PASCAL] dehnbares und beschriftetes Koordinatensystem
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
puke puke ist männlich
Neuling

Dabei seit: 11.02.2004
Beiträge: 14

[PASCAL] dehnbares und beschriftetes Koordinatensystem       Zum Anfang der Seite springen

Hi Folx,
ich brauche ganz dringend eure Hilfe!
Ich versuche ein dehnbares und beschriftetes Koordinatensystem
in pascal zu erstellen, komme aber leider nicht weiter.
Bitte helft mir!

cLoWn


code:
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:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
 

PROGRAM pqform;
USES crt, graph;
VAR
a, b, c, x, x1, x2, d, y, g :real;
li, re, zx, zy, bildx, bildy, i :integer;

PROCEDURE init_g;
var
g0, g1 :integer;
begin
g0 := detect;
initgraph(g0, g1, 'BGI')
END;

PROCEDURE plott;
BEGIN
line(320,1,320,480);
line(1,240,640,240);
zx := 320;
zy := 240;
moveto(zx+li*50, round(zy-10*li*li+b*li+c));
li := li*100;
re := re*100;
setcolor(red);
FOR i := li TO re DO
BEGIN
x := i/100;
y := a*x*x+b*x+c;
bildx := round(zx+x*50);
bildy := round(zy-y*10);
lineto(round(bildx), round(bildy));
END;
END;

BEGIN
clrscr;
writeln('a:'); readln(a);
writeln('b:'); readln(b);
writeln('c:'); readln(c);
writeln('Untersuchungsbereich:'); readln(li); readln(re);
IF a = 0
THEN
IF b <> 0
THEN BEGIN
x := -(c/b);
writeln('x= ', x)
END
ELSE
IF c <> 0
THEN writeln('|L = { }')
ELSE BEGIN
writeln('|L = |R');
writeln('x= ', x);
END
ELSE
d := (b*b)/(4*a*a) -(c/a);
IF d > 0
THEN BEGIN
x1 := -(b/2) + sqrt(d);
x2 := -(b/2) - sqrt(d);
writeln('x1= ', x1);
writeln('x2= ', x2);
END
ELSE
IF d = 0
THEN
BEGIN
x := -b/2;
writeln('x = ', x);
END
ELSE
writeln('|L = { }');
readln;
init_g;
plott;
readln;
closegraph;
readln;

END.
19.03.2004 17:00 puke ist offline E-Mail an puke senden Beiträge von puke suchen
Black Star Black Star ist männlich
Der Pate [Admin]


images/avatars/avatar-2158.jpg

Dabei seit: 11.12.2001
Beiträge: 2.282
Herkunft: /dev/stderr

      Zum Anfang der Seite springen

Du definierst den Bereich, der Dargestellt werden soll, bsp-weise:
x1,x2,y1,y2.
In den Koordinaten x und y rechnest du dann deine Funktionen, etc aus.
Und immer wenn du was Plotten willst (einen Punkt, eine Linie,....) musst du es durh eine Funktion jagen, die dir den Punkt auf den Bildschirm ausrechnet.

Du brauchst also eine Funktion, die aus der Rechen-Koordinate x,y eine Bildschirmkoordinate a,b macht.
Der Bereich x1,x2,y1,y2 waere dann von mir aus global oder muesste auch immer an die Funktion uebergeben werden.
In der Funktion musst du dann
1) checken, dass der Punkt im Bereich x1,x2,y1,y2 liegt.
2) wenn x,y dein Punkt ist und 640x480 deine Aufloesung, dann waere:
a = (x2-x1)/640 * (x-x1)
b = (y2-y1)/480 * (y-y2) <-- hier bin ich mir nicht ganz sicher, man muss ueberlegen, weil das koordinatensytem andersrum ist.


Mein Pasacal ist schon etwas aelter, aber da muesste es auch Structs geben oder?
In c++ ginge sowas schoen mit Klassen.

__________________
vescere bracis meis

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Black Star: 19.03.2004 19:33.

19.03.2004 19:28 Black Star ist offline E-Mail an Black Star senden Homepage von Black Star Beiträge von Black Star suchen
puke puke ist männlich
Neuling

Dabei seit: 11.02.2004
Beiträge: 14

Themenstarter Thema begonnen von puke
      Zum Anfang der Seite springen

Danke für deine antwort.
leider bin ich nicht so gut in pascal, wie würde der quelltext aussehen?
Und ist das koordinatensystem dann auch beschriftet?
20.03.2004 11:04 puke ist offline E-Mail an puke senden Beiträge von puke suchen
Script-Kiddie Script-Kiddie ist männlich
Script-Kiddie


Dabei seit: 01.01.2004
Beiträge: 37
Herkunft: System32

      Zum Anfang der Seite springen

@Puke vergiss Pascal die Sprache ist veraltet.
Mach lieber c/c++
20.03.2004 12:49 Script-Kiddie ist offline E-Mail an Script-Kiddie senden Beiträge von Script-Kiddie suchen
Black Star Black Star ist männlich
Der Pate [Admin]


images/avatars/avatar-2158.jpg

Dabei seit: 11.12.2001
Beiträge: 2.282
Herkunft: /dev/stderr

      Zum Anfang der Seite springen

Zum lernen ist Pascal ok.

Bei c++ wirst du ins kalte Wasser geschmissen, was Speicherverwaltung angeht.
Wenn man keine Ahnung davon hat, wird man sich vor lauter segmentation faults nicht mehr retten koennen.

__________________
vescere bracis meis

20.03.2004 13:05 Black Star ist offline E-Mail an Black Star senden Homepage von Black Star Beiträge von Black Star suchen
Script-Kiddie Script-Kiddie ist männlich
Script-Kiddie


Dabei seit: 01.01.2004
Beiträge: 37
Herkunft: System32

      Zum Anfang der Seite springen

Zum lernen kann man auch irgendeinen Basic Dialekt verwenden.
Dannn muss man nicht Pascal machen,denn schwerer als Bd is Pascal schon
20.03.2004 14:33 Script-Kiddie ist offline E-Mail an Script-Kiddie senden Beiträge von Script-Kiddie suchen
puke puke ist männlich
Neuling

Dabei seit: 11.02.2004
Beiträge: 14

Themenstarter Thema begonnen von puke
      Zum Anfang der Seite springen

@Script-Kiddie:
hab mir vorgenommen erstmal pascal zu lernen bevor ich c oder c++ lerne.

kann mir einer von euch bei meinem prob helfen? bin total verzweifelt *heul*

biddeee!
22.03.2004 15:07 puke ist offline E-Mail an puke senden Beiträge von puke suchen
phlox81 phlox81 ist männlich
Bote des Lichts und Moderator


images/avatars/avatar-2264.jpg

Dabei seit: 19.10.2002
Beiträge: 3.028
Herkunft: Irgendwo im Nirgendwo

      Zum Anfang der Seite springen

Dann such dir was leichteres zum Lernen als Dehnbare Koordinatensysteme Augenzwinkern

Devil

__________________
Intelligenz ist eine Illusion des Menschen

phlox81.de | codenode.de
22.03.2004 15:39 phlox81 ist offline E-Mail an phlox81 senden Homepage von phlox81 Beiträge von phlox81 suchen
Misel Misel ist männlich
Hüter des Kitkat


images/avatars/avatar-2084.png

Dabei seit: 02.11.2002
Beiträge: 1.203
Herkunft: live://home.berlin.d e

      Zum Anfang der Seite springen

hehe, jo, zum Einstieg ist so ein variables Koordinatensystem doch recht knifflig, aber auch kein Problem der Programmiersprache und ich bin da auch Black-Star's Meinung, dass Pascal für Anfänger gut geeignet ist. Es gibt nun mal Fälle, wo alt besser als neu ist (siehe meine Signatur großes Grinsen ). Pascal's Compiler ist sehr streng und das ist gut für einen Anfänger um strukturiertes Programmieren zu lernen, was man mit Basic nicht tut.

puke: Versuch doch erstmal das Problem genau zu durchdenken. Die Sprachelemente von Pascal scheinst Du ja schon gut zu können, aber was fehlt ist die Programmiererfahrung, die man erst mit der Zeit bekommt. In Java oder C++ oder anderen Sprachen hättest Du wahrscheinlich dasselbe Problem. Aber ich empfehle Dir den Code ein bisschen mehr einzurücken Augenzwinkern

Du hast geschrieben, dass Du nicht weiterkommst. Wo genau denn nicht?

__________________
LAUFT! Ich spiele KILLERSPIELE!
22.03.2004 19:38 Misel ist offline E-Mail an Misel senden Homepage von Misel Beiträge von Misel suchen
puke puke ist männlich
Neuling

Dabei seit: 11.02.2004
Beiträge: 14

Themenstarter Thema begonnen von puke
      Zum Anfang der Seite springen

komme nur so weit wie der quelltext ist.
komme leider nicht mit dem post von Black Star zurecht(1).
23.03.2004 20:32 puke ist offline E-Mail an puke senden Beiträge von puke suchen
Misel Misel ist männlich
Hüter des Kitkat


images/avatars/avatar-2084.png

Dabei seit: 02.11.2002
Beiträge: 1.203
Herkunft: live://home.berlin.d e

      Zum Anfang der Seite springen

Das nützt mir herzlich wenig und hier wird keiner für Dich das Programm schreiben.

Beschreibe doch Dein Problem einfach mal in Worten.

__________________
LAUFT! Ich spiele KILLERSPIELE!
24.03.2004 10:15 Misel ist offline E-Mail an Misel senden Homepage von Misel Beiträge von Misel suchen
puke puke ist männlich
Neuling

Dabei seit: 11.02.2004
Beiträge: 14

Themenstarter Thema begonnen von puke
      Zum Anfang der Seite springen

ich möchte auf keinen fall das mir jemand das programm schreibt!
ich verstehe zb den teil nicht:

Zitat:

Du definierst den Bereich, der Dargestellt werden soll, bsp-weise:
x1,x2,y1,y2.


In der Funktion musst du dann
1) checken, dass der Punkt im Bereich x1,x2,y1,y2 liegt.
2) wenn x,y dein Punkt ist und 640x480 deine Aufloesung, dann waere:
a = (x2-x1)/640 * (x-x1)
b = (y2-y1)/480 * (y-y2) <-- hier bin ich mir nicht ganz sicher, man muss ueberlegen, weil das koordinatensytem andersrum ist.
25.03.2004 16:23 puke ist offline E-Mail an puke senden Beiträge von puke suchen
phlox81 phlox81 ist männlich
Bote des Lichts und Moderator


images/avatars/avatar-2264.jpg

Dabei seit: 19.10.2002
Beiträge: 3.028
Herkunft: Irgendwo im Nirgendwo

      Zum Anfang der Seite springen

Dann beschäftige dich mal mit Koordinatensystemen.
Du solltest schon wissen was du schreiben willst, und
mit den Algorithmen dahinter vertraut sein.

Devil

__________________
Intelligenz ist eine Illusion des Menschen

phlox81.de | codenode.de
25.03.2004 16:27 phlox81 ist offline E-Mail an phlox81 senden Homepage von phlox81 Beiträge von phlox81 suchen
puke puke ist männlich
Neuling

Dabei seit: 11.02.2004
Beiträge: 14

Themenstarter Thema begonnen von puke
      Zum Anfang der Seite springen

Zitat:
Dann beschäftige dich mal mit Koordinatensystemen.
Du solltest schon wissen was du schreiben willst, und
mit den Algorithmen dahinter vertraut sein.


1. Habe mich damit beschäftigt, bin aber leider nicht weiter gekommen.
Deswegen habe ich hier gepostet.
2. Welche Algorythmen meinst du?
25.03.2004 19:31 puke ist offline E-Mail an puke senden Beiträge von puke suchen
phlox81 phlox81 ist männlich
Bote des Lichts und Moderator


images/avatars/avatar-2264.jpg

Dabei seit: 19.10.2002
Beiträge: 3.028
Herkunft: Irgendwo im Nirgendwo

      Zum Anfang der Seite springen

Zitat:
Original von puke
Zitat:
Dann beschäftige dich mal mit Koordinatensystemen.
Du solltest schon wissen was du schreiben willst, und
mit den Algorithmen dahinter vertraut sein.


1. Habe mich damit beschäftigt, bin aber leider nicht weiter gekommen.
Deswegen habe ich hier gepostet.
2. Welche Algorythmen meinst du?


Die von Black Star Augenzwinkern

Vielleicht kann er sie ja mal eingehender erklären ...

Devil

__________________
Intelligenz ist eine Illusion des Menschen

phlox81.de | codenode.de
25.03.2004 19:57 phlox81 ist offline E-Mail an phlox81 senden Homepage von phlox81 Beiträge von phlox81 suchen
Black Star Black Star ist männlich
Der Pate [Admin]


images/avatars/avatar-2158.jpg

Dabei seit: 11.12.2001
Beiträge: 2.282
Herkunft: /dev/stderr

      Zum Anfang der Seite springen

Also.....

Da dein Koordinatensystem zum Rechnen ja nicht genau von 0-640 und von 0-480 geht, must du mit einem virtuellen Koordinatensystem rechnen.

Dein virtueles Koordinatensystem geht von mir aus von -2 bis 2 auf der x-Achse und von -1 bis 1 auf der y-Achse. Wenn du jetzt dadrauf den Punkt (1,1) darstellen willst, brauchst du eine Funktion, die virtuellen Koordinaten in echte Bildschirmkoordinaten umrechnet.

d.h. du uebergibst eine Funktion 'ZeichnePunkt' die Koordinaten (1,1) und die Funktion kuemmert sich dann selbststaendig dadrum den Punkt auf dem Bildschirm darzustellen. Dh. du hast im Programm nicht staendig damit zu tun zwischen Bildschirm und virtuellen Koordinaten umzurechen. Und wie man umrechnet hab ich schon erzaehlt.

Zum dehnen des Koordinatensystems muesstest du dann einfach deine virtuellen Koordinaten mit einem Faktor z.B. 0.95 um 5% reinzuzoomen multiplizieren und alle Elemente neu zeichnen lassen.

__________________
vescere bracis meis

25.03.2004 22:44 Black Star ist offline E-Mail an Black Star senden Homepage von Black Star Beiträge von Black Star suchen
puke puke ist männlich
Neuling

Dabei seit: 11.02.2004
Beiträge: 14

Themenstarter Thema begonnen von puke
      Zum Anfang der Seite springen

hab das jetzt verstanden thx!
aba wie kann ich

Dein virtueles Koordinatensystem geht von mir aus von -2 bis 2 auf der x-Achse und von -1 bis 1 auf der y-Achse. Wenn du jetzt dadrauf den Punkt (1,1) darstellen willst, brauchst du eine Funktion, die virtuellen Koordinaten in echte Bildschirmkoordinaten umrechnet.

das machen? gibts da spezielle cmds für?
28.03.2004 16:06 puke ist offline E-Mail an puke senden Beiträge von puke suchen
LX LX ist männlich
El Comandante en Jefe


images/avatars/avatar-2290.gif

Dabei seit: 25.11.2001
Beiträge: 5.372
Herkunft: Berliner Bronx

      Zum Anfang der Seite springen

Ich zweifle daran. Die Funktion aber selbst zu schreiben dürfte mit einfachen mathematischen Kenntnissen nicht das Problem darstellen Augenzwinkern

__________________
JS-Games.de - Misled Scripting Skills Gone Mad | Meine Filmkritiken | Urban Photography
Kommt mal in den IRC-Channel: irc.eu.freenode.net | Port 6667 | #blackboard

"Ever tried. Ever failed. No matter.
Try again. Fail again. Fail better."
- Samuel Beckett

28.03.2004 17:03 LX ist offline E-Mail an LX senden Homepage von LX Beiträge von LX suchen
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
BlackBoard » Design, Programmierung & Entwicklung » Programmieren » [PASCAL] dehnbares und beschriftetes Koordinatensystem

Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH