/// <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); } }
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()); }