Seite 1 von 1

Kurve

Verfasst: 3. Juli 2007 13:19
von qt_beginner
Hallo,

ich bins nochmal.
Ich habe folgende Kurve:

Code: Alles auswählen

const int points = 500;
double x1[points];
double y1[points];
	
for (int i = 0; i < points; i++)
{
  x1[i] = i* 2 * 3.14 / points;
  y1[i] = sin(4*x1[i]);
}

curve1->setRenderHint(QwtPlotItem::RenderAntialiased);
curve1->setPen(QPen(Qt::black));
curve1->attach(plot1);
curve1->setData(x1, y1, points);

Ich versteh nicht ganz, warum ich x1 UND y1 brauche (hätte gedacht ich brauche nur y1) zB:

Code: Alles auswählen

for (int i = 0; i < points; i++)
{
  y1[i]=sin(i);
}
um halt einen einfachen Sinus zu zeichnen. Das geht aber irgendwie nicht.

Ich verstehe nicht, was x1 macht, das ist doch nur für die "Länge der X Achse" da oder?

Verfasst: 3. Juli 2007 14:33
von CaptnChaos
aje, da hat wohl einer in mathe nicht aufgepasst?
guckst du hier:
Koordinatensystem

kurz, du zeichnest deine kurve, bzw du zeichnest generell, in einem Koordinatensystem, da du ohne opengl zeichnest, hast du zwei Achsen, ax und ay. Auf diesen Achsen musst du nun Koordinaten definieren, die Verbunden werden sollen (bei einer Linie). Das sind bei dir x und y.
wenn du x nicht angibst, bekommst du nur eine Linie, die von dem höchsten bis zum niedrigsten Punkt deiner y-Koordinaten reicht.

Kapische?

Verfasst: 6. Juli 2007 12:14
von qt_beginner
Naja mit Mathe kenn ich mich schon aus :wink: Dachte nur, mein i wäre meine x-Koordinate (die dann bis 500 geht in meinem Fall).

Ich glaub, mein Problem ist in diesem Fall, dass mein Plot keine einzelnen Punkte ausgibt (kann das?) sondern einen Punkt direkt mit dem Ursprung verbindet. So dass ich, wenn ich einen Punkt eingebe

x1[10] = 100;
y1[10] = 100;

eine Gerade sehe, die durch (0,0) und (10,10) geht. Komisch irgendwie. Wie krieg ichs hin, dass mir nur Punkte angezeigt werden? Die dann (in der großen Summe) eine Kurve ergeben?

@Kernel_Panic: siehst du, deswegen dachte ich, i wäre meine x-Achse, weil ich (s. oben) eine Kurve bekomme, die durch (10,10) geht (hab ja auch x1[10] und y1[10] eingegeben).

Verfasst: 6. Juli 2007 12:50
von bst
Hi,

Dein i ist ein Schleifen-Zähler, mehr nicht.

Um einen Punkt auf einer Ebene zu zeichnen brauchst Du immer 2 Werte, oder etwa nicht ?

Und, wie und ob die Punkte miteinander verbunden werden kannst Du mit CurveStyle bestimmen, ändere das mal auf setStyle(QwtPlotCurve::Dots).

Siehe: http://qwt.sourceforge.net/class_qwt_plot_curve.html

cu, Bernd