2013-07-20 82 views
1

好了,所以我有這個類方向光LightSource光線追蹤

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給我,是我的錐角內光線的列表。可以說,光線的數量將會有些不變。 謝謝。

+0

Stackoverflow對於問題的標準很高,他們通常會期望你已經嘗試先自己解決問題,並且可以指出你所嘗試的不正確的部分。在請別人爲你做這件事之前,你可能想自己試着解決這個問題。 – redtuna

+0

我試着解決這個問題...我只是不能。我不想顯示我醜陋的代碼。我對這個領域也很天真,我15歲。對不起,如果我好像懶惰。 –

+0

您可能需要做的一件事就是告訴我們您的困難在於確定*要做什麼(數學部分),或者*如何將其編碼到C#中。如果它是前者,那麼你應該能夠描述你所做的事,而不顯示任何代碼。如果是後者,那麼告訴我們第一部分的答案,所以我們只需要處理你尚未解決的部分。 – redtuna

回答

1

我不是專家,但只是給你一個出發點:或許你可以把一個網格垂直於你所瞄準的方向,只保留角度與方向角在coneAngle內的射線?

ASCII藝術:

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

想象網格是垂直於 「方向」 載體。