Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

28.11.2005, 22:56

Sinus mit Kreisdarstellung

Hallöle zusammen,

ich schreibe grade ein Programm in dem ich auf der Canvas eine Sinusfunktion darstelle, inkl. Amplituden- und Frequenzveränderung per ScrollBar.

Jetzt möchte ich auf einer 2. Canvas den Kreis haben wie in folgendem Bild:http://www.musik.uni-osnabrueck.de/lehre…usfunktion_.jpg

Wer es kennt weiß was ich machen will. Die Linie vom Mittelpunkt soll sich gegen den Uhrzeigersinn drehen und dann soll vom Ende der Linie eine weitere Linie zur Sinusfunktion laufen, damit man sieht welcher Punkt dort grade gezeichnet wird. Natürlich ist die Kreisgröße auch abhängig von der Amplitude der Sinusfunktion. Jetzt scheitert das Ganze allerdings daran dass ich nicht weiß wie ich das mit dem Kreis realisieren soll. Ich kenne keine Funktion wie man eine Linie abhängig von einem Winkel mit einer bestimmten Länge zeichnen könnte? Weil dann könnt ich ja einfach sowas ähnliches hier schreiben:

Image1->Canvas->MoveTo(Image1->Width/2,Image1->Height/2);
Image1->Canvas->LinieMitWinkel(Winkel,Radius);

Würde mich echt freuen wenn mir jemand von euch hilfreich in die Seite treten könnte, wäre auch sehr über anderen Lösungsansätze erfreut :)


Mfg
LilaQ

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

2

28.11.2005, 23:17

Kann Canvas Splines?
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

3

29.11.2005, 01:25

Habs jetzt folgendermaßen lösen können:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  float pi = 3.1415;
  double px = 100;
  double py = 0;
  for (int degree=0; degree<=360; degree++)
  {
    double x = (2*pi*degree)/360;   //Winkel in Bogenmaß

    Edit1->Text=IntToStr(degree);
    Image1->Canvas->Ellipse(0,0,100,100);
    py=50-(sin(x)*50); // Verschiebung - (sinusvon(X)) * Amplitude

    px=50+(cos(x)*50);  // Verschiebung + (cosinusvon(X) * Amplitude

    Edit2->Text=FloatToStr(py);
    Edit3->Text=FloatToStr(px);
    Image1->Canvas->MoveTo(50,50);
    Image1->Canvas->LineTo(px,py);
    void Delay(int ilMSecs);
    Delay(40);
  }


Würd mich trotzdem freuen ob noch jemand weiß, ob und wie man Linien winkelabhängig zeichnen kann?!

Danke schonmal

Mfg
LilaQ
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.

Lemming

Alter Hase

Beiträge: 550

Beruf: Schüler

  • Private Nachricht senden

4

29.11.2005, 01:50

Zitat von »"LilaQ"«

Würd mich trotzdem freuen ob noch jemand weiß, ob und wie man Linien winkelabhängig zeichnen kann?!
genau so, wie du's gemacht hast:
linie von (Mx|My) nach (x|y):
x = Mx + cos(alpha)*radius
y = My + sin(alpha)*radius

ne andere möglichkeit:
y=m*x+n also ne lineare gleichung
und dann m=tan(alpha) und n=0 oder whatever
is aber plöd und umständlich ... machs lieber so, wie oben.
Es gibt Probleme, die kann man nicht lösen.
Für alles andere gibt es C++...

Werbeanzeige