Exemplo n.º 1
0
 /// <summary>
 /// 渲染场线
 /// </summary>
 /// <param name="i_func">计算电场强度的委托</param>
 public void RenderFieldLines(IntensityFunction i_func)
 {
     foreach (var item in m_fieldRenderer_List)
     {
         if (item == null)
         {
         }
         item.RenderLine(i_func);
     }
 }
Exemplo n.º 2
0
        public void RenderLine(IntensityFunction i_func)
        {
            SetStart(transform.position);
            List <Vector3> points_list           = new List <Vector3>();
            Vector3        point                 = m_start;
            var            distance_LastRecord   = (m_start - m_generateEletric.position).magnitude;
            Vector3        intensity_Last_Record = i_func(m_start);
            Vector3        lastStep              = Vector3.zero;

            while (IsContinueRender(point))
            {
                //times++;
                points_list.Add(point);
                var step = intensity_Last_Record.normalized * m_deltaLength;
                point += step * m_sign;
                //var dis_temp = (point-m_generateEletric.position).magnitude;
                intensity_Last_Record = i_func(point);
                //continue;

                //if (dis_temp>=distance_LastRecord)
                //{
                //    distance_LastRecord = dis_temp;
                //    intensity_Last_Record = i_func(point);
                //    continue;
                //}
                //else
                //{
                //    point -= step * 2;
                //    distance_LastRecord = (point-m_generateEletric.position).magnitude;
                //    intensity_Last_Record = i_func(point);
                //    continue;
                //}
            }
            m_lineRender.positionCount = points_list.Count;
            m_lineRender.SetPositions(points_list.ToArray());
        }