Mathefrage...
-
Folgendes Problem:
Der Anwender soll mit der Maus einen Punkt bestimmen.
Um diesen Punkt soll das Programm einen Kreis bestimmen (nicht zeichnen!)
und darin das größte Dreieck, Viereck, ... (einstellbar) bestimmen!
Wie bekomme ich nun die Punkte heraus?
Also bei einem Dreieck die 3 Punkte, die auf den "virtuellen" Kreis liegen?
Alles was bekannt ist (und auch ausreicht) sind:
- der Mittelpunkt M
- der Radius r
- die Anzahl "Ecken" (dreieck, viereck, ...)
Habe schon versucht über Pythagoras, Sinus... etc. aber irgendwie fehlt mir der letzte "Schluss"...Ich hoffe, Ihr habt mein Anliegen verstehen können...
Danke
-
komplexe Einheitswurzeln
-
Naja, so schwierig ist das ja nicht.
Mit 360/Anzahl Ecken die Gradabweichung bestimmen (muss noch in RAD umgewandelt werden.).
Dann würde ich einfach mal einen Punkt nehmen, z.B. direkt über dem Mittelpunkt (also M+r) und dann die weiteren Punkte mit sinus etc. ausrechnen.
dann die Gradzahl *2, wieder punkt bestimmen, Gradzahl *3 wieder punkt bestimmen, bis *(Eckenzahl-1).
-
Danke schonmal...
Aber bin da leider schon etwas raus aus der Thematik...
Ich habe also den ersten Punkt (ist ja net so schwer ;).
Die Gradabweichung ist auch klar.
Wieso in RAD umwandeln? Was bringt dieser Wert?
Und gibt es dafür auch eine Funktion wie rad()? (tschuldigung wegen der dummen Frage...).:p :p
:p :p
-
in rad umwandeln : Gradzahl*pi/180
brauchst aber nicht unbeingt in rad umwandeln (auch wenn jeder der was auf sich hällt nur in rad rechnet... grad ist was für weiber und schwule).
x(i)=sin(i*360/Ecken)*radiuskreis
y(i)=cos(i*360/Ecken)*radiuskreisi:=0..Ecken-1
-
Danke!
Passt wunderbar...
Aber noch ein Problem:
Habe folgenden Code:TRACE("Radius = %d, Ecken = %d, \r\n", m_iRadius, m_iAnzahl); for (int i=0; i<m_iAnzahl; i++) { double dPosX = sin(i*360/m_iAnzahl)*m_iRadius; double dPosY = cos(i*360/m_iAnzahl)*m_iRadius; TRACE("Berechneter Punkt: P(%f/%f) bei Radius = %d, Ecken = %d, i = %d\r\n", dPosX, dPosY, m_iRadius, m_iAnzahl, i); }
Und folgende Ausgabe dazu:
Radius = 10, Ecken = 4,
Berechneter Punkt: P(0.000000/10.000000) bei Radius = 10, Ecken = 4, i = 0
Berechneter Punkt: P(8.939967/-4.480736) bei Radius = 10, Ecken = 4, i = 1
Berechneter Punkt: P(-8.011526/-5.984601) bei Radius = 10, Ecken = 4, i = 2
Berechneter Punkt: P(-1.760459/9.843820) bei Radius = 10, Ecken = 4, i = 3Manuell berechnet sollte das eigentlich stimmen...
-
Hallo
Eigentlich wird die X-Koordinate mit dem Kosinus und die Y-Koordinate mit dem Sinus berechnet. Du machst es genau andersrum.
Außerdem funktioniert deine Methode wohl nur, wenn sich der Kreismittelpunkt bei (0,0) befindet. Verschieben der berechneten Eckpunkte hilft weiter wenn der M != (0,0)
grad ist was für weiber und schwule
Idiot
-
Original erstellt von space:
**Eigentlich wird die X-Koordinate mit dem Kosinus und die Y-Koordinate mit dem Sinus berechnet. Du machst es genau andersrum.
**Blödsinn.... Das ist hier völlig egal wie man die Berechnet.