磁场

更新记录

版本 日期 修改人 修改内容
1.0.3 2020/12/01 杨循 增加GetYAxisAngle接口
1.0.3 2020/11/11 杨循 增加UpdateMagnetField接口
1.0.2 2020/10/29 杨循 从共享平台同步了VLabElectricLineCtrl的接口
1.0.1 2020/10/26 杨循 补充MagnetAction.BindComponent接口,补充CreateMagnetComponentproperties参数格式说明
1.0.0 2020/10/26 杨循 建立文档


这个文档是磁场原有功能整理。
磁力和磁场是分开实现的,磁力引擎负责磁体的磁力,磁场引擎负责磁体间的场计算以及磁体在磁场中的转向。
两个引擎的接口存在名词上的重复,但其作用是如上述独立的。



MagnetComponentType

磁学组件类型枚举

枚举 说明
BarMagnet 1 条形磁铁
UMagnet 2 蹄形磁铁
CoilMagnet 3 螺线管、绕线圈的铁钉等
MagnetProbe 4 磁场探针,小磁针等
RingMagnet 5 环形磁铁(新增)

AC.MagneticEngine

磁场引擎


public string CreateMagnetComponent(int compType, string properties)

创建一个磁体

参数名 类型 说明
compType int 磁体类型,MagnetComponentType的枚举值
properties string 对应磁体数据的json序列化串

返回值:磁体id

properties结构说明

条形磁铁属性结构

{
    "Sx":<float>        //S极X坐标
    "Sy":<float>        //S极Y坐标
    "Sz":<float>        //S极Z坐标
    "Nx":<float>        //N极X坐标
    "Ny":<float>        //N极Y坐标
    "Nz":<float>        //N极Z坐标
    "MPS":<float>       //强度
}

马蹄形磁铁属性结构

{
    "Sx":<float>        //S极X坐标
    "Sy":<float>        //S极Y坐标
    "Sz":<float>        //S极Z坐标
    "Nx":<float>        //N极X坐标
    "Ny":<float>        //N极Y坐标
    "Nz":<float>        //N极Z坐标
    "Tx":<float>        //顶点X坐标
    "Ty":<float>        //顶点Y坐标
    "Tz":<float>        //顶点Z坐标
    "MPS":<float>       //强度
}

大小线圈、螺线管、绕线圈的铁钉

{
    "Sx":<float>        //S极X坐标
    "Sy":<float>        //S极Y坐标
    "Sz":<float>        //S极Z坐标
    "Nx":<float>        //N极X坐标
    "Ny":<float>        //N极Y坐标
    "Nz":<float>        //N极Z坐标
    "TR":<int>          //线圈匝数
    "SL":<float>        //螺线管长度
    "CS":<float>        //电流强度
    "Filler":<int>      //填充物(0:空心,1:铁钉)
    "Multiplier":<int>  //放大倍数,默认值1
}

磁场探针(小磁针等)

{
   "x":<float>        //X坐标
   "y":<float>        //Y坐标
   "z":<float>        //Z坐标
}

环形磁铁

{
   "Sx":<float> //S极X坐标 
   "Sy":<float> //S极Y坐标 
   "Sz":<float> //S极Z坐标 
   "Nx":<float> //N极X坐标 
   "Ny":<float> //N极Y坐标 
   "Nz":<float> //N极Z坐标 
   "MPS":<float> //强度
   "Radius":<float> //半径
}


public bool DestroyMagnetComponent(string compId)

摧毁指定磁体

参数名 类型 说明
compId string 磁体id,CreateMagnetComponent的返回值


public Vector3 GetMagneticField(Vector3 pos)

获取指定位置的磁场

参数名 类型 说明
pos Vector3 空间位置坐标


public double GetRotationAngle(double B, double length, double current, double mass)

获取通电导线在磁场中的偏转角度
参数含义我不清楚

参数名 类型 说明
B double
length double
current double
mass double


public float GetYAxisAngle(Vector3 dir)

计算一个向量在Y轴的旋转度

参数名 类型 说明
dir Vector3 向量

返回值:向量绕Y轴的旋转角度,正方向为左手坐标系,范围[0~360]



AC.MagnetAction

磁体


public bool BindComponent(string id)

绑定组件

参数名 类型 说明
id string 组件id


public void BindMagnetFieldChangeCallback(LuaFunction func)

注册当磁体受到磁场变化时的回调

参数名 类型 说明
func LuaFunction 传入参数为:string, Vector3, bool,分别是:id,磁场向量,是否是地磁场


public void UpdateMagnetField()

刷新磁体受到的磁场方向,会触发BindMagnetFieldChangeCallback注册的回调函数



AC.VLabElectricLineCtrl

电场线和磁感线组件,主用于绘制线,从共享平台上同步过来的
使用说明:
1、初始化:CreateElectric;
2、设置电场线:DrawElectrofield


public int CreateElectric(string path, float lineWidth, float arrowWidth)

初始化操作

参数名 类型 说明
path string 组件要挂的物体节点
lineWidth float 设置一条电场线的宽度大小【默认是0.003】
arrowWidth float 设置电场线上面箭头宽度大小【默认是0.009】

返回值:
组件id信息(失败值为:int.MinValue)


public int CreateMagnetic(string path, float lineWidth, float arrowWidth)

初始化操作

参数名 类型 说明
path string 组件要挂的物体节点
lineWidth float 设置一条磁场线的宽度大小【默认是0.003】
arrowWidth float 设置磁场线上面箭头宽度大小【默认是0.009】

返回值:
组件id信息(失败值为:int.MinValue)


public void DrawElectrofield(int electId, LuaTable table, int maxPoints = 30, float stepDistance = 0.01f)

绘制电场线

参数名 类型 说明
electId int 组件id信息
table LuaTable Lua的表结构,设置几条电场线(世界坐标的点)
maxPoints int 最多的点【10,30】,一条电场线中的点数的个数
stepDistance float 间距,一条电场线中的相邻2个点的距离(推荐0.01)


public void DrawMagneticfield(int electId, LuaTable table, int maxPoints = 30, float stepDistance = 0.01f)

绘制磁场线

参数名 类型 说明
electId int 组件id信息
table LuaTable Lua的表结构,设置几条磁场线(世界坐标的点)
maxPoints int 最多的点【10,30】,一条磁场线中的点数的个数
stepDistance float 间距,一条磁场线中的相邻2个点的距离(推荐0.01)


public void SetDistance(int electId, float dis)

设置一条电场线上2个箭头之间的相对距离,这个有一个最小值的问题,获取电场线的数据时候会返回所有电场线的所有点
每条电场线之间的2点为最小距离值,当设置的值小于最小距离的时候将不会有效果,然后每条电场线的最小距离值都是不一样的

参数名 类型 说明
electId int 组件id信息
dis float 箭头相对距离


public void Hide(int electId)

隐藏线

参数名 类型 说明
electId int 组件id信息


public void Show(int electId)

显示线

参数名 类型 说明
electId int 组件id信息