0 Daumen
119 Aufrufe

Frage:

Ich habe einen Kreis mit unterschiedlichen Quadranten und Radii und möchte die Koordinaten innerhalb des Quadranten bzw. Kreissegment berechnen. Der Sachverhalt ist im folgenden Bild zu sehen. Allerdings finde ich keine passende Formel um die Koordinaten zu berechnen.

geogebra-exportneue.png

Code:

Bis lang bin ich soweit. Ich habe folgendes in einer Funktion definiert.

    const startAngle = this.calcQuadrantAngle(indexQuadrant, numOfQuadrants, ANGLE_START);
  const endAngle = this.calcQuadrantAngle(indexQuadrant, numOfQuadrants, ANGLE_END);
  const innerRadius = this.calcRingRadius(indexRing, numOfRings, RADIUS_START);
  const outerRadius = this.calcRingRadius(indexRing, numOfRings, RADIUS_END);

  const minRadius = innerRadius + this.blipWidth;
  const maxRadius = outerRadius - this.blipWidth;


  const getRandomRadius = this.getRandom(minRadius, maxRadius);

  const minAngle = startAngle;
  const maxAngle = endAngle;

  const getRandomAngle = this.getRandom(startAngle, endAngle);

  const x = this.center() + getRandomRadius * Math.sin(getRandomAngle);

  const y = this.center() + getRandomRadius * ((-Math.cos(getRandomAngle)));


Meine Berechnung zur X bzw. Y coordinate sind aber falsch und ich habe keine Ahnung wieso. Ich freue mich auf Unterstützung.

Auch sollte in der Berechnung von x und y nicht normalerweise Math.cos für x bzw Math.sin für y stehen?

Ich hab es propiert, aber das Ergebnis wird schlimmer.

von

Hallo rumrechnen007

Schätze mal, das einfachste ist den Kreismittelpunkt(A) und dann die Punkte E,F,G,H,I,J,K kartesisch einzugeben. Zumindest Punkt A, dann als Startpunkt E oder einen anderen Punkt, der genau auf den äußersten Kreis sitzt. Dann den Polarradius und Winkel zur X-Achse berechnen.

Du könntest aber über ein Array die Winkel fest speichern (90, 150, 210, 270, 300 Grad).

Dann die Radien für die Punkte C und D berechnen.

Der Rest über Schleifen abfrageen.

Hast du eigentlich berücksichtigt, das zumindest in c und c++ die sin, cos und tan-Funktion den Winkel im Bogenmaß braucht? Di Funktionen atan, asin, und acos geben den Winkel im Bogenmaß zurück, nicht in Grad(=Altgrad 0 - 360° beim Vollkreis).

double radtograd(double boma)
{
double grad, pi = 3.141592653589793;

grad = ((boma * 180) / pi);
return grad;
}

// Wandelt grad in Bogenmass um
double bogenmass(double grad)
{
double boma, pi = 3.141592653589793;

boma = (grad * pi)  / 180;
return boma;

Bei der Umrechnung von Sinus Cosinus und Tangens zu Winkel geht übers Bogenmaß.

Beispiel:

double Winkel_aus_tanwert(double tanwert)
{
double boma = atan(tanwert);
double Winkelhalbe = radtograd(boma);

return Winkelhalbe;
}
double Winkel_aus_sinwert(double sinwert)
{
double boma = asin(sinwert);
double Winkelhalbe = radtograd(boma);

return Winkelhalbe;
}

double Winkel_aus_coswert(double coswert)
{
double boma = acos(coswert);
double Winkelhalbe = radtograd(boma);

return Winkelhalbe;
}

Sind insgesamt 18 verschiedene Felder. Also zuerst Radius errechnen .Dann feststellen,

in welchen Kreisring der Punkt fällt. Dann über den Winkel das gesuchte Feld identifizieren.

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community