Ich kann die mathematische Lösung bei der Programmierung nicht definieren, wer kann helfen?

...komplette Frage anzeigen

4 Antworten

Mittelpunkt M (x _ m|y _ m)

r = Radius

y = y _ m +/- √ (r ^ 2 - (x - x _ m) ^ 2)

Da dein Mittlepunkt M (0 | 0) lautet und dein Radius r = 1 , vereinfacht es sich zu

y = +/- √ (1 - x ^ 2)

---------------------------------------------------------------------------------------------------

INPUT x

INPUT y

Merke = 1

IF NOT (x  >= -1 AND x <= +1) OR NOT( y >= -1 AND y <= +1) THEN

Merke=0

ELSE

v = √ (1 - x ^ 2)

IF NOT(y = v)  AND NOT(y = -v) THEN Merke = 0

END IF

Wenn Merke am Ende dieser Prozedur immer noch den Wert Merke = 1 hat, dann weißt du, dass der Punkt auf dem Kreis liegt. Hat Merke den Wert Merke = 0, dann liegt der Punkt nicht auf dem Kreis.

ACHTUNG --> Hier gibt es ein Problem ! Manche Programmiersprachen rechnen mit 16 Stellen oder 32 Stellen nach dem Komma, intern sogar mit noch mehr, und das bedeutet, wenn die eingegebenen Werte x und y nicht bis auf extrem viele Stellen nach dem Komma exakt auf dem Erwartungswert liegen, dann wirst du aufgrund der extremen Empfindlichkeit trotzdem den Wert Merke = 0 bekommen, obwohl der Wert vielleicht nur um ein milliardstel vom echten Wert abweicht !!!

Deshalb solltest du die Zeile IF NOT(y = v)  AND NOT(y = -v) THEN Merke = 0 abändern, in eine Empfindlichkeit deiner Wahl.

Das kann dann so aussehen -->

IF NOT((y - v) < = eps)  AND NOT((y + v) < = eps) THEN Merke = 0

Selbstverständlich muss es dann im Programm auch ein INPUT eps geben, also -->

INPUT x

INPUT y

INPUT eps

Merke = 1

.

.

.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von DepravedGirl
29.10.2015, 06:52

Das ist nur die Programmversion, wo geprüft wird, ob der Punkt exakt auf dem Kreis liegt !!!

Aber es sollte jetzt für dich nicht mehr allzu schwer sein, auch zu prüfen, ob der Punkt außerhalb oder innerhalb des Kreises liegt.

Außerhalb des Kreises liegt er, wenn √(x ^ 2 + y ^ 2) > 1 ist.

Innerhalb des Kreises liegt er, wenn √(x ^ 2 + y ^ 2) < 1 ist.

0
Kommentar von JupStrunk
29.10.2015, 10:22

ja, die Fließkommaungenauigkeit kann ein Problem ergeben...

Du kannst allerdings mit Integern rechnen und die Werte faktorieren !!!

wenn Du z.B. auf 3 Stellen hinter dem Komma genau rechnen willst nimmst Du die Werte mit 1000 Mal und entfernst dann die Nachkommastellen !!! ;)

z.B.: int(1000.0 * Wert1)

1

der Kreis hat ja einen Mittelpunkt und einen Radius !!!
der Mittelpunkt wird auch durch Koordinaten bestimmt...
wenn Du jetzt vom Mittelpunkt zu deinen Koordinaten ein Dreieck zeichnest hat dieses die Seitenlängen deiner Koordinaten minus denen vom Kreismittelpunkt...

sagen wir mal wie üblich die Seiten im Dreieck sind a und b für die Katheten und c für die Hypothenuse...
Mx und My sind die Koordinaten des Kreismittelpunktes...
x und y sind deine Koordinaten...
dann währen:
a = Mx - x
b = My - y

jetzt mit dem Satz des Pythagoras c errechnen !!!

wenn c < Radius, dann im Kreis
wenn c = Radius, dann auf Kreis
wenn c > Radius, dann außerhalb Kreis

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von JupStrunk
29.10.2015, 01:45

Nachtrag:

das Ganze kannst Du auf einen Viertelkreis beschränken !!!
dazu prüfst Du, ob a und b negativ sind, und wenn ja machst Du sie positiv (a = a  * -1 bzw. b = b * -1)

Du kannst die nämlich auch so berechnen, kommt aber aufs gleiche Endergebnis aus...
a = x - Mx
b = y - My

1

Benutze die dist() funktion bzw den Satz des Pythagoras:
If(dist(0, 0, x, y)) < 1
Und so

Antwort bewerten Vielen Dank für Deine Bewertung

Denkanstoß: x^2 + y^2 = 1 (pythagoras)

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Sempiternal55
29.10.2015, 00:50

könnte ich bitte noch einen denkanstoß von ihnen haben (habe vorhin ein Programm mit Phythagoras geschrieben) aber diese Aufgabe bereitet mir auch bei der schriftlichen lösung, große Probleme...

0
Kommentar von CrEdo85
01.11.2015, 01:17

wenn x^2 + y^2 < 1, dann ist P innerhalb vom kreis. wenn x^2 + y^2 = 1, dann genau auf dem kreis. bei x^2 + y^2 > 1 liegt P außerhalb vom kreis :)

0

Was möchtest Du wissen?