Autor Beitrag
Aya
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: Mi 27.11.02 05:10 
Hi,

und wiedermal ein Matheproblem...

user defined image

Bekannt:
X, Y Koordinaten der Roten Kugel
X, Y Koordinaten der Blauen Kugeln
Radius der Roten Kugel
Radius der Blauen Kugeln

Frage:
Befindet sich eine der blauen kugeln in dem bereich hinter der Roten Kugel??

(Stellt euch vor ihr würdet im Ursprung des Koordinaten system stehen und richtung roter Kugel schauen... welche der blauen Kugeln könntet ih sehen ohne das die Rote die sicht versperrt??)

Au'revoir,
Aya
mars
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 238

Debian Woody, Win 2000, Win XP
D7 Ent, Kylix 3
BeitragVerfasst: Mi 27.11.02 07:35 
ich kann dir das prinzip zeigen, dass ich benutzen würde:

1) Ebene durch rote und blaue Kugel + Ursprung
2) nächster Punkt zur roten Kugel der blauen Kugel auf der ebene bestimmen
3) gerade durch ursprung und diesem punkt
4) schauen ob dieser punkt die rote kugel schneidet


ungefähr so; wenns nicht klar ist, schreibst du nochmal
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 27.11.02 10:53 
So langsam lohnt sich extra für Aya schon eine Geometrie-Sparte. :mrgreen:.
Ex0rzist
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 550

Win XP Prof.
Mandrake 10.0

D6
BeitragVerfasst: Mi 27.11.02 11:04 
Oder einfach mal den alten Mathehefter rauskramen. :wink:

_________________
If accidentally read, induce vomitting.
Indeterminatus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 47



BeitragVerfasst: Do 05.12.02 16:42 
oder raycasting-algorithmus verwenden...gibts im internet genug resourcen dazu will nicht lang erklären...

_________________
_______________________________________
Indeterminatus

---=si tacuisses, philosophus mansisses=---
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Fr 06.12.02 12:20 
mars hat folgendes geschrieben:

1) Ebene durch rote und blaue Kugel + Ursprung
2) nächster Punkt zur roten Kugel der blauen Kugel auf der ebene bestimmen
3) gerade durch ursprung und diesem punkt
4) schauen ob dieser punkt die rote kugel schneidet


Moin, ich bezweifle, dass das so funktioniert, denn der nächste Punkt auf der roten Kugel ist, wenn ich mich nicht irre (is schonn halbes Jahr her) immer auf der Verbindungsgerade der Mittelpunkte und da scheitert das dann schon an der jetzigen Zeichnung.

Ich würde es mal mit Tangentialebenen zur roten Kugel durch den Ursprung probieren, dann den Normalvektor bestimmen die Entfernung des Mittelpunkts einer blauen Kugel berechnen. Dann sollte man noch die Richtung des Normalvektors wissen und dann könnte mans so rauskriegen. ABer ohne Garantie

Gruß
Wolff68
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 302
Erhaltene Danke: 1

WinXP home
D6 Prof
BeitragVerfasst: Sa 07.12.02 00:02 
Also ich würde das wieder über den Abstand der Kugel zu den 2 Geraden machen:

Gerade 1:
Punkt A (0,0) bis rechten Tangentenpunkt (B) zur roten Kugel.
Abstand blauer Kugel-Mittelpunkt bis zur Geraden berechnen. Dieser sollte positiv sein, da die Kugel links der Geraden liegen muß.
Nun den blauen Kugelradius abziehen um zu sehen, ob Kugel komplett verdeckt ist. (Verdeckt, wenn Ergebnis positiv)

Gerade2:
Punkt A (0,0) bis linken Tangentenpunkt (B) zur roten Kugel.
Abstand blauer Kugel-Mittelpunkt bis zur Geraden berechnen.
Dieses Ergebnis * -1 nehmen. da Kugel rechts (negativ) liegen soll, wir aber nach * -1 wie oben weiterrechnen können.

Zum Schluß mußt Du nur noch schauen, ob der kleinere Wert dieser 2 Geradenrechnungen positiv ist. Dann ist die Kugel verdeckt.

Folgende Sonderfälle solltest Du beachten:
- Punkt A bzw Nullpunkt liegt IN der Kugel
=> Rechnet, aber Ergebnis ev. Falsch.
(Sollte aber bei Berechnung der Tangentenpunkte auffallen)
- rote Kugel liegt direkt auf Punkt A
=> Div/0

Hier übrigends noch die Punktformel um den Abstand zu berechnen:D := ((Bx-Ax)*(Py-Ay)-(By-Ay)*(Px-Ax))/SQRT(SQR(Bx-Ax)+SQR(By-Ay));

_________________
"Der Mensch ist nicht was er sich vorstellt oder wünscht zu sein, sondern das was andere in ihm sehen."
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Sa 07.12.02 11:38 
Ich weiß nicht, obs das ist was Wolf gerade gesagt hat, aber mir ist gerade ein Mathe-THema eingefallen, das nennt sich Tangentialkegel. Das sind alle Tangentialebenen an der Kugel durch einen bestimmten Punkt (hier also Ursprung). Und da kann man dann sagen, ob ein Punkt da drin ist, oder nicht...

Kannste ja mal googeln, ich weiß das nimmer so genau, Abi is schon n halbes Jahr her *g*

Gruß
Trialtom
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38



BeitragVerfasst: Sa 07.12.02 15:03 
hallo,

naja über winkel kann man das sehr leicht lösen, d.h. es gibt keine formel die einen das ergebnis mitteilt, aber mit ein bisschen rechnen kann man es leicht bestimmen.

Yr=Y-koordinate der roten kugel
Xr=X-koordinate der roten kugel
Yb=Y-koordinate der blauen kugel
Xb=X-koordinate der blauen kugel
Rr=radius der roten kugel
Rb=radius der blauen kugel
^=hoch

mit hilfe eines if-satzes ist es leicht:
wenn (Yb/Xb)-(sin^-1(Rb/(wurzel(Xb²+Yb²)))) UND (Yb/Xb)+(sin^-1(Rb/(wurzel(Xb²+Yb²)))) in folgenden Bereich liegen:
zwischen (Yr/Xr)-(sin^-1(Rr/(wurzel(Xr²+Yr²)))) und (Yr/Xr)+(sin^-1(Rr/(wurzel(Xr²+Yr²)))), dann ist die blaue kugel nicht zu sehen, d.h. vollständig im bereich hinter der roten kugel.
man muss leider 4 mal zahlen durchtippen im taschenrechner, aber es gibt das richtige ergebnis, hoffe das hilft vielleicht.
wenn du wissen willst wie man drauf kommt, sag bescheid.
M. Raab
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 334
Erhaltene Danke: 1

WIN 7
Delphi XE
BeitragVerfasst: So 08.12.02 15:29 
Hallo,

ich geb mal meinen Senf dazu und hoffe, Du kannst was damit anfangen:

Leg das Koordinatensystem durch die rote Kugel. Die Richtungen sind Dir ja bekannt. Nun bestimmst Du den Ursprung der restlichen Kugeln und legst einen Vektor von Kugel rot nach Kugel blau: einfach die Richtungsvektoren addieren. So, nun bestimmst Du die Winkeln zu Deinem Koordinatensysem (Kosinussatz o.ä) und ckeckst, welche Vorzeichen sie haben. Daraus kannst Du dann checken, wo die Kugeln sind.

Gruß

Markus