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

27.04.2012, 08:13

Kugel scheibchenweise

Hi,

angenommen ich habe eine Kugel mit 10 cm Durchmesser. Wenn ich diese jetzt alle 2 mm in Scheiben schneide, dann haben die Schnittflächen eine Kreisform und vor allem erst zunehmende und ab der Mitte der Kugel dann wieder abnehmende Durchmesser. Diese Durchmesser kann man ja sicher irgend wie vorberechnen (d.h. ich habe einen Kugeldurchmesser, eine Schnitthöhe und erhalte dafür den Kreisdurchmesser an dieser Stelle).

Ich habe das dumpfe Gefühl, dass diese Berechnung der eines Kreises ziemlich Ähnlich ist, allerdings komme ich gerade auf keinen grünen Zweig, da ich beim Konstruieren eines Kreises ja vom Winkel ausgehe.

Aber wie geht es dann?

Für alle Denkanstöße und Ideen bedanke ich mich schon mal :-)

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

2

27.04.2012, 08:33

wie schon geschrieben: genauso, wie man den Kreis berechnet: mit Cosinus oder Sinus

mal angenommen, der Durchmesser der Kugel beträgt 2 Einheiten (der Radius also 1 Einheit), dann könnten -1 und 1 die Grenzwerte sein
diese müssten als Ergebnis der Berechnung 0 ergeben
beim Cosinus sind die entsprechenden Werte, bei denen dies zutrifft -90 und 90 (wenn zur Berechnung das Gradmaß verwendet wird)
du müsstest also einfach die Position der für die aktuell zu berechnende Höhe durch den Radius teilen und mit 90 multiplizieren, cosinus errechnen (Radius wurde errechnet) und mit 2 multiplizieren (Durchmesser wurde errechnet)
als Formel sieht das etwa so aus: §d=cos(\frac{x}{r} \cdot 90) \cdot 2§

wenn das Bogenmaß verwendet wird, musst du statt 90 Pi/2 verwenden und die Formel sieht dann so aus:
als Formel sieht das etwa so aus: §d=cos(\frac{x}{r} \cdot \frac{\pi}{2}) \cdot 2§
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

3

27.04.2012, 09:18

Eigentlich reicht schon der Satz des Pythagoras, wenn ich das Problem annähernd korrekt verstanden habe.

Stell dir vor, du schneidest die Kugel in der Mitte durch, dann hast du eine halbe Kugel, mit einem Kreis als Schnittkante. Den Radius hast du ja, die Schnitthöhe offensichtlich auch, dann kannst du dir ein Dreieck einzeichnen mit dem Radius als dritten und gesuchten Wert.
Lieber dumm fragen, als dumm bleiben!

4

27.04.2012, 09:31

Stell dir vor, du schneidest die Kugel in der Mitte durch, dann hast du eine halbe Kugel, mit einem Kreis als Schnittkante. Den Radius hast du ja, die Schnitthöhe offensichtlich auch, dann kannst du dir ein Dreieck einzeichnen mit dem Radius als dritten und gesuchten Wert.


Hm, wie ich daraus jetzt den Radius in der Schnitthöhe errechnen kann, habe ich ehrlich gesagt nicht wirklich verstanden. Aber der Ansatz von Sacaldur klingt gut. Danke euch beiden!

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

5

27.04.2012, 09:40

wie schon geschrieben: genauso, wie man den Kreis berechnet: mit Cosinus oder Sinus
(...)

Deine Formel ist falsch.
Der Cosinus hat zwar die richtigen Werte am "Ende" (Durchmesser=0) und in der Mitte (Durchmesser=100%), aber der Verlauf dazwischen entspricht nicht dem eines Kreises.
Richtig wäre etwas mit cos(arcsin(x)), aber ...

Wie gesagt wurde, geht es mit dem Satz des Pythagoras ganz einfach:

(Link)


R ist der Radius der Kugel.

Guck dir das bunt gefärbte Dreieck an:
- Die gelbe Seite hängt davon ab, wo du durchschneidest, wobei x=0 die Mitte der Kugel bedeutet, x=-R das eine "Ende" und x=+R das andere "Ende"
- Die rote Seite ist der Kugelradius R.
- Die grüne Seite ist die Hälfte des gesuchten Durchmessers oder der Radius der Scheibe.

Also:
|x|² + y² = R²
x² + y² = R²
y = Wurzel(R² - y²)

Der Durchmesser ist dann das Doppelte davon, also 2 * Wurzel(R² - y²).

6

28.04.2012, 17:26

wie schon geschrieben: genauso, wie man den Kreis berechnet: mit Cosinus oder Sinus
(...)

Deine Formel ist falsch.


Ich hab's gemerkt, die ergibt eine Sinus-Halbwelle als Form :-)


Richtig wäre etwas mit cos(arcsin(x)), aber ...

Wie gesagt wurde, geht es mit dem Satz des Pythagoras ganz einfach


Ergibt sich die Frage, was auf einem System mit FPU schneller geht: vermutlich der Pythagoras mit zwei mal Quadrat und einmal Quadratwurzel!?

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

7

28.04.2012, 23:27

Jo, das mit der Wurzel sollte schneller sein als 2x trigonometrische Funktionen, und auch genauer (numerisch).

Werbeanzeige