//在vs2017里不报错,unity里Console也没有错,但是unity的scene界面报All compiler errors have to be fixed before entering playmode错误
//将mathnet的两个引用注释掉,不用函数就可以运行
using System;
using UnityEngine;
using MathNet.Numerics.Integration;
using MathNet.Numerics;
public class trail : MonoBehaviour
{
public ParticleSystem part;
private ParticleSystem.Particle[] particlesArray;
public int seaResolution;
public float spacing = 0.01f;
public float l;//1/2船体长度
public float b;//1/2船体宽度
public float d;//吃水深度
public float v;//船速
void Start()
{
particlesArray = new ParticleSystem.Particle[seaResolution * seaResolution];
var setparticlenumber = part.main;
setparticlenumber.maxParticles = seaResolution * seaResolution;
part.Emit(seaResolution * seaResolution);
part.GetParticles(particlesArray);
}
void Update()
{
float pi = 3.14f;
float g = 9.8f;
float k= g / (v * v);
for (int i = 0; i < seaResolution; i++)
{
for (int j = 0; j < seaResolution; j++)
{
double zPos = Integrate.OnClosedInterval(o => (1 - Math.Exp(-k * d / Math.Cos(o) / Math.Cos(o))) * (Math.Sin(k * (i * Math.Cos(o) + j * Math.Sin(o)) / Math.Cos(o) / Math.Cos(o))), -pi / 2, pi / 2);
// double zPos = 0;
float z = (float)zPos;
particlesArray[i * seaResolution + j].position = new Vector3(i * spacing, j * spacing,z);
}
}
part.SetParticles(particlesArray, particlesArray.Length);
}
}