亥姆霍兹线圈

@[TOC]亥姆霍兹线圈
#include <math.h>
Text title;
float P_radius, P_omega, V, X;
// 构造函数
demoApp::demoApp() : WizGLApp()
{
viewMode = VIEW_PERSPECTIVE2; // 观察视角模式
demoState = DEMO_STOP; // 初始动画状态
wndWidth = 1024; // 初始窗口宽度
wndHeight = 715; // 初始窗口高度
showParamWnd = true; // 初始是否显示参数窗口
showInfoWnd = false; // 初始是否显示信息窗口
showToolbar = true; // 初始是否显示工具栏
// wiz::Assign(bgColor, 0.32f, 0.72f, 0.54f, 0.0f); // 设置背景色

}
// 析构函数
demoApp::~demoApp()
{

}
///////////////////////////////////////////////////////////////////////
// 在此创建场景
void demoApp::InitializeScenes()
{
}
// 在此创建控件
void demoApp::InitializeControls(int sceneIndex)
{
}
// 在此初始化控件参数
void demoApp::InitializeParameters(int sceneIndex)
{
P_radius = 2;
P_omega = 8;
V = 2;
X = 2;
}
// 场景切换时可在此作需要的设置
void demoApp::SwitchScene(int curScene, int prevScene)
{
}
///////////////////////////////////////////////////////////////////////
// 与绘图相关的初始化工作
void demoApp::SetupRC()
{
glt::SetDefaultLight();
glt::SetGlobalAmbient(wiz::cBLACK);
title.LoadWords(L"亥姆霍兹线圈", L"楷体_GB2312", 36, wiz::cWHITE, 250, 48);
}
// 绘制场景
void demoApp::RenderScene(int sceneIndex)
{
static Point3f p[600],q[600],r[600],P2,p1,p2;
Point3f center = {0.0f, 0.0f,20.0f};
Point3f center1 = {50.0f, 0.0f,20.0f};
Orient direct = {90.0f, 0.0f};
Color4f color1,color2,color;
int i,j,k,n,l,R=50;
Orient direction;
direction.phi=0;direction.theta=0;
wiz::Assign(color1,1.0,0.2,0.2,1);
wiz::Assign(color2,1.0,1.0,1.0,1);
wiz::Assign(color,1.0,1.0,0.0,1);
glt::SetLineWidth(X/2);
float dt,pi=3.14159,e,Q,x,y,m,fx,fy,q1=1;
float Ex[500],Ey[500],EE,FF,E,E1,E2;
e=8.98pow(10,-12);
n=P_radius-1;
Q=10;
glt::DisableLight();
for(i=0;i<600;i++)
{
p[i].x=0.1
i;
p[i].y=0;
p[i].z=-50+1000RR/2/pow(RR+0.01ii,1.5)V;
if(i>0)
{
draw::Line(p[i-1],p[i],color); ///黄色线和黄色圆
}
q[i].x=0.1
i;
q[i].y=0;
q[i].z=-50+1000
RR/2/pow(RR+(50-0.1i)(50-0.1*i),1.5)P_radius;
if(i>0)
{
draw::Line(q[i-1],q[i],color1); ////红色线和红色圆
}
r[i].x=60-0.1
i;
r[i].y=0;
r[i].z=50+p[i].z+q[i].z;
if(i>0)
{
draw::Line(r[i-1],r[i],color2); ////白线
}
}
P[0].x=75;
P[0].y=0;
P[0].z=20;
P1.x=-25;
P1.y=0;
P1.z=20;
draw::Arrow3D(P[0],P1, 0.0, 0.6, 6, 2.0, color2, color2, false,0,0,0); // 带箭尾立体箭头
glt::BeginTransform();
glt::ZTransform(center, direct, 0.0f); // 中心center,轴向direct,旋进角0
draw::Disk(22, 25, 3, color, 32); // 圆盘,内半径ir,外半径or,高h
glt::EndTransform();

glt::BeginTransform();
glt::ZTransform(center1, direct, 0.0f);	// 中心center,轴向direct,旋进角0
draw::Disk(22, 25, 3, color1, 32);	// 圆盘,内半径ir,外半径or,高h
glt::EndTransform();

title.Show(35.0f, 0.0f, 60.0f);

}
///////////////////////////////////////////////////////////////////////
// 动画开始
void demoApp::DemoBegin()
{
}
// 动画播放
void demoApp::DemoPlay()
{
static float step = 0.5f;
if (P_omega > 40) step = -fabsf(step);
if (P_omega < 12) step = fabsf(step);
P_omega += 0;//step;
}
// 动画暂停
void demoApp::DemoPause()
{
}
// 动画停止
void demoApp::DemoStop()
{
}
///////////////////////////////////////////////////////////////////////
// 按钮被点击
void demoApp::ButtonClick(int sceneIndex, UINT butSN)
{
}
// 复选框被点击
void demoApp::CheckClick(int sceneIndex, UINT chkSN, bool checked)
{
}
// 单选框被点击
void demoApp::RadioClick(int sceneIndex, UINT rdoSN)
{
}
// 文本框内容被改变
void demoApp::TextboxChange(int sceneIndex, UINT txtSN)
{
}
// 组合框下拉列表项被选择
void demoApp::ComboSelChange(int sceneIndex, UINT cmbSN, int index)
{
}
// 组合框文本被改变
void demoApp::ComboTextChange(int sceneIndex, UINT cmbSN)
{
}
// 滑条被移动
void demoApp::ScrollMove(int sceneIndex, UINT sbSN, int value, float rate)
{
float param = (float)value * rate;
switch (sbSN)
{
case 1:
P_radius = param;
break;
case 2:
P_omega = param;
break;
case 3:
V = param;
break;
case 4:
X = param;
break;
}
FlushScene();
}
///////////////////////////////////////////////////////////////////////
// 键盘建按下
void demoApp::KeyDown(UINT key)
{
}
// 键盘建松开
void demoApp::KeyUp(UINT key)
{
}
// 鼠标左键按下
void demoApp::LeftButtonDown(int x, int y, int keyFlag)
{
}
// 鼠标左键松开
void demoApp::LeftButtonUp(int x, int y, int keyFlag)
{
}
// 鼠标左键双击
void demoApp::LeftButtonDblClick(int x, int y, int keyFlag)
{
}
// 鼠标右键按下
void demoApp::RightButtonDown(int x, int y, int keyFlag)
{
}
// 鼠标右键松开
void demoApp::RightButtonUp(int x, int y, int keyFlag)
{
}
// 鼠标右键双击
void demoApp::RightButtonDblClick(int x, int y, int keyFlag)
{
}
// 鼠标移动
void demoApp::MouseMove(int x, int y, int keyFlag)
{
}
// 鼠标滚轮被滚动
void demoApp::MouseWheel(int x, int y, int zDelta, int keyFlag)
{
}

我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

  1. 全新的界面设计 ,将会带来全新的写作体验;
  2. 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
  3. 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
  4. 全新的 KaTeX数学公式 语法;
  5. 增加了支持甘特图的mermaid语法1 功能;
  6. 增加了 多屏幕编辑 Markdown文章功能;
  7. 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
  8. 增加了 检查列表 功能。

功能快捷键

撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G

合理的创建标题,有助于目录的生成

直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。

如何改变文本的样式

强调文本 强调文本

加粗文本 加粗文本

标记文本

删除文本

引用文本

H2O is是液体。

210 运算结果是 1024.

插入链接与图片

链接: link.

图片: Alt

带尺寸的图片: Alt

居中的图片: Alt

居中并且带尺寸的图片: Alt

当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

如何插入一段漂亮的代码片

博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

// An highlighted block
var foo = 'bar';

生成一个适合你的列表

  • 项目
    • 项目
      • 项目
  1. 项目1
  2. 项目2
  3. 项目3
  • 计划任务
  • 完成任务

创建一个表格

一个简单的表格是这么创建的:

项目Value
电脑$1600
手机$12
导管$1

设定内容居中、居左、居右

使用:---------:居中
使用:----------居左
使用----------:居右

第一列第二列第三列
第一列文本居中第二列文本居右第三列文本居左

SmartyPants

SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

TYPEASCIIHTML
Single backticks'Isn't this fun?'‘Isn’t this fun?’
Quotes"Isn't this fun?"“Isn’t this fun?”
Dashes-- is en-dash, --- is em-dash– is en-dash, — is em-dash

创建一个自定义列表

Markdown
Text-to- HTML conversion tool
Authors
John
Luke

如何创建一个注脚

一个具有注脚的文本。2

注释也是必不可少的

Markdown将文本转换为 HTML

KaTeX数学公式

您可以使用渲染LaTeX数学表达式 KaTeX:

Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n1)!nN 是通过欧拉积分

Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t &ThinSpace; . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=0tz1etdt.

你可以找到更多关于的信息 LaTeX 数学表达式here.

新的甘特图功能,丰富你的文章

Mon 06 Mon 13 Mon 20 已完成 进行中 计划一 计划二 现有任务 Adding GANTT diagram functionality to mermaid
  • 关于 甘特图 语法,参考 这儿,

UML 图表

可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图::

张三 李四 王五 你好!李四, 最近怎么样? 你最近怎么样,王五? 我很好,谢谢! 我很好,谢谢! 李四想了很长时间, 文字太长了 不适合放在一行. 打量着王五... 很好... 王五, 你怎么样? 张三 李四 王五

这将产生一个流程图。:

链接
长方形
圆角长方形
菱形
  • 关于 Mermaid 语法,参考 这儿,

FLowchart流程图

我们依旧会支持flowchart的流程图:

Created with Raphaël 2.2.0 开始 我的操作 确认? 结束 yes no
  • 关于 Flowchart流程图 语法,参考 这儿.

导出与导入

导出

如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

导入

如果你想加载一篇你写过的.md文件或者.html文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。


  1. mermaid语法说明 ↩︎

  2. 注脚的解释 ↩︎

### 霍兹线圈磁场强度计算公式 霍兹线圈是一种由两个相同且平行的圆形线圈组成的装置,用于生成均匀磁场。当两个线圈之间的距离等于它们的半径时,所产生的磁场在两线圈中心区域最为均匀。霍兹线圈磁场强度的计算公式基于毕奥-萨伐尔定律。 对于一个单匝线圈,其产生的磁场为: ```math B = \frac{\mu_0 I R^2}{2 (R^2 + z^2)^{3/2}} ``` 其中: - \( B \) 是磁场强度, - \( \mu_0 \) 是真空磁导率,\( \mu_0 = 4\pi \times 10^{-7} \, \text{T·m/A} \)[^2], - \( I \) 是通过线圈的电流, - \( R \) 是线圈的半径, - \( z \) 是从线圈中心到测量点的距离。 对于霍兹线圈,两个线圈相距 \( R \),并且磁场叠加效应使得在中心区域的磁场更加均匀。霍兹线圈中心处的总磁场强度可以表示为: ```math B_{\text{Helmholtz}} = \frac{8 \mu_0 I R^2}{25 \sqrt{5} (R^2 + (R/2)^2)^{3/2}} ``` 简化后得到: ```math B_{\text{Helmholtz}} = \frac{8 \mu_0 I}{5 \sqrt{5} R} ``` ### 磁场分布模拟 磁场分布可以通过数值方法进行模拟。以下是使用 Python 和 Matplotlib 进行霍兹线圈磁场分布模拟的代码示例: ```python import numpy as np import matplotlib.pyplot as plt # 定义常量 mu0 = 4 * np.pi * 1e-7 # 真空磁导率 (T·m/A) I = 1.0 # 电流 (A) R = 0.1 # 线圈半径 (m) # 计算单个线圈的磁场 def magnetic_field_single(z, R, I): return (mu0 * I * R**2) / (2 * (R**2 + z**2)**(3/2)) # 计算霍兹线圈的总磁场 def magnetic_field_helmholtz(z, R, I): B1 = magnetic_field_single(z + R / 2, R, I) B2 = magnetic_field_single(z - R / 2, R, I) return B1 + B2 # 生成数据 z_values = np.linspace(-0.5, 0.5, 500) # 沿 z 轴的位置 B_values = magnetic_field_helmholtz(z_values, R, I) # 绘制磁场分布 plt.figure(figsize=(10, 6)) plt.plot(z_values, B_values, label="Helmholtz Coil Magnetic Field") plt.axvline(-R/2, color='gray', linestyle='--', label="Coil Position") plt.axvline(R/2, color='gray', linestyle='--') plt.title("Magnetic Field Distribution of Helmholtz Coils") plt.xlabel("Position along z-axis (m)") plt.ylabel("Magnetic Field Strength (T)") plt.legend() plt.grid(True) plt.show() ``` 该代码模拟了霍兹线圈沿 z 轴的磁场分布,并展示了其在中心区域的均匀性。 ### 相关公式与参数说明 上述公式假设线圈为理想圆形,并忽略边缘效应。如果需要更精确的计算,可以考虑多匝线圈的影响以及非理想条件下的修正项[^3]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值