1

さて、私はこのクラスを持っています

public sealed class LightSource
{
    public readonly Point3D Source;
    public readonly Point3D Direction;

    public readonly float ConeAngle;

    public List<Ray> Lights { get; private set; }

    public const double MaxRadian = 2.0 * Math.PI;

    public LightSource(Point3D source, Point3D direction, float coneAngle)
    {
        this.Source = source;
        this.Direction = direction;

        if (coneAngle <= 0 || coneAngle > LightSource.MaxRadian)
        {
            throw new ArgumentException("coneAngle <= 0 || coneAngle > LightSource.MaxRadian");
        }

        this.ConeAngle = coneAngle;
        this.Lights = LightSource.GenerateLights(this.Source, this.Direction, this.ConeAngle);
    }

    public static List<Ray> GenerateLights(Point3D source, Point3D direction, float coneAngle)
    {
        //How would i do this?
    }
}

GenerateLights メソッドを実現して、コーン アングル内にある光線のリストを取得するにはどうすればよいでしょうか。光線の量が一定になるとしましょう。ありがとうございました。

4

1 に答える 1

1

私は専門家ではありませんが、出発点を教えてください。おそらく、目指している方向に垂直なグリッドを配置し、その方向からの角度がconeAngle内にある光線のみを保持できますか?

アスキー アート:

                                      +--+--+
                                      |  |  |
                                      +--+--+
                     direction        |  |  |    
staring point ----------------------> +--+--+
                                      |  |  |
                                      +--+--+
                                      |  |  |  
                                      +--+--+

グリッドが「方向」ベクトルに対して垂直であると想像してください。

于 2013-07-20T00:42:36.323 に答える