private List <Tuple <List <float3>, float3> > ReflectingSingleRays(DiscreteBeam descreteBeam, RaycastHit hit)
    {
        var cos = Vector3.Dot(descreteBeam.DirectionOfPropagation, hit.normal.normalized);

        var DirectionOfPropagation = descreteBeam.DirectionOfPropagation - ConvertToFloat3(cos * hit.normal.normalized * 2);

        return(new List <Tuple <List <float3>, float3> >()
        {
            new Tuple <List <float3>, float3> (new List <float3>()
            {
                ConvertToFloat3(hit.point)
            }, ConvertToFloat3(DirectionOfPropagation))
        });
    }
Beispiel #2
0
    private void UpdatePointsOnLinerenderer(DiscreteBeam discreteBeam, GameObject line)
    {
        var lineRenderer = line.GetComponent <LineRenderer>();

        lineRenderer.positionCount = discreteBeam.movementCoordinates.Count;

        for (int i = 0; i < discreteBeam.movementCoordinates.Count; i++)
        {
            if (!ChechTwofloat3sEqual(discreteBeam.movementCoordinates[i], Vector3ToFloat3(lineRenderer.GetPosition(i))))
            {
                lineRenderer.SetPosition(i, discreteBeam.movementCoordinates[i]);
            }
        }
    }