- bool Scheidet_Gerade_Kugel( Vektor KugelZentrum, float KugelRadius, Vektor StreckenAnfang, Vektor StreckenRichtung )
- {
- float t = (StreckenRichtung * (KugelZentrum - StreckenAnfang)) / (StreckenRichtung*StreckenRichtung);
- Wenn t < 0
- t = 0;
- // Ggf. hier noch
- // Wenn t > StreckenLänge (brauchst natürlich einen zusätzlichen Parameter)
- // t = StreckenLänge
- // Für diese Abfrage muss der Vektor StreckenRichtung ein Einheitsvektor sein!
- Vektor NaehesterPunkt = StreckenAnfang + t * StreckenRichtung;
- float QuadrierterAbstand = (NaehesterPunkt - KugelZentrum) * (NaehesterPunkt - KugelZentrum)
- Wenn QuadrierterAbstand < KugelRadius * KugelRadius
- return TRUE; // Strahl schneidet Kugel
- Sonnst
- return FALSE; // Strahl schneidet Kugel nicht.
- }