2013-07-20 3 views
1

Хорошо, так у меня есть этот класснаправление света от источника света Raytracing

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 ----------------------> +--+--+ 
             | | | 
             +--+--+ 
             | | | 
             +--+--+ 

себе сетку перпендикулярно вектору "направление".

Смежные вопросы