实验1-金刚石图案详细步骤

合集下载

绘制金刚石实验报告

绘制金刚石实验报告

附页实验内容、方法和步骤(1)新建一个MFC工程test(2)编写金刚石绘制函数(3)运行调试及结果截图:源代码:#include "stdafx.h"#include "test.h"#include "testDoc.h"#include "testView.h"#include <math.h>#define PI 3.1415926#define ROUND(a) int(a+0.5)#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif// CTestViewIMPLEMENT_DYNCREATE(CTestView, CView)BEGIN_MESSAGE_MAP(CTestView, CView)ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview) END_MESSAGE_MAP()// CTestView construction/destructionCTestView::CTestView(){}CTestView::~CTestView(){}BOOL CTestView::PreCreateWindow(CREATESTRUCT& cs)return CView::PreCreateWindow(cs);}// CTestView drawingvoid CTestView::OnDraw(CDC* pDC){CTestDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);CRect rect;GetClientRect(&rect);pDC->SetMapMode(MM_ANISOTROPIC);pDC->SetWindowExt(rect.Width(),rect.Height());pDC->SetViewportExt(rect.Width(),-rect.Height());pDC->SetViewportOrg(rect.Width()/2,rect.Height()/2);CPen NewPen,*pOldPen;NewPen.CreatePen(PS_SOLID,1,RGB(0,0,255));pOldPen=pDC->SelectObject(&NewPen);double thta;int n=20,r=150;CPoint p[20];thta=2*PI/n;for(int i=0;i<n;i++){p[i].x=(long)(r*cos(i*thta));p[i].y=(long)(r*sin(i*thta));}for(i=0;i<=n-2;i++){for(int j=i+1;j<=n-1;j++){pDC->MoveTo(ROUND(p[i].x),ROUND(p[i].y));pDC->LineTo(ROUND(p[j].x),ROUND(p[j].y));}}pDC->SelectObject(pOldPen);NewPen.DeleteObject();ReleaseDC(pDC);}// CTestView printingBOOL CTestView::OnPreparePrinting(CPrintInfo* pInfo){// default preparationreturn DoPreparePrinting(pInfo);}void CTestView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) {void CTestView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/){}// CTestView diagnostics#ifdef _DEBUGvoid CTestView::AssertValid() const{CView::AssertValid();}void CTestView::Dump(CDumpContext& dc) const{CView::Dump(dc);}CTestDoc* CTestView::GetDocument() // non-debug version is inline{ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CTestDoc)));return (CTestDoc*)m_pDocument;}#endif //_DEBUG// CTestView message handlers。

高压环境制造金刚石实验报告

高压环境制造金刚石实验报告

高压科学实验目的1.了解高压环境的特性2.了解金刚石的制作过程3.了解金刚石的特性实验器材六面顶压机,大液压机,控制台,小液压机,水罐,激光切割机,烘干机,电热恒温鼓风干燥箱,金刚石磨盘,蒸煮箱,真空行星式球磨机实验原理金刚石的特性:硬度极大,化学性质稳定,高导热率,高传热速度,介电常数小,载流子迁移率大,抗强酸强碱腐蚀等等运用大质量支撑原理,对顶砧的大面积端施加压力,由于,S远小于,因此施加压强可以获得远大于他的压强P。

使用六面顶压机,通过调整液压油的压力来对高压腔体施加压力。

将石墨与金属触媒混合,放在5.4GPa,和温度1400C的环境中即可开始转化为金刚石。

具体分为膜生长法和温度梯度法。

前者用于生成生长磨料级金刚石,而后者用于生成宝石级金刚石。

此为静态高温高压法。

此外还有动态超高压高温合成法,低压气相沉淀法。

膜生长法:使石墨饱和溶解于触媒溶液,施加高温高压环境。

借由同一环境下石墨和金刚石的溶解度不同,使溶液过饱和以膜的形式析出在金刚石核上,使之长大。

温度梯度法:在高温高压条件下,高温处碳源石墨转化为金刚石并溶于触媒中,在一定温度梯度驱动下扩散至低温处的晶体中开始生长。

在动态超高温高压合成金刚石的技术中,根据合成金刚石原料的不同可分为三种:1.冲击波法利用高速飞片撞击石墨靶板,使石墨在撞击过程中生成微米级的金刚石颗粒2.爆炸法将石墨与高能炸药混合,在炸药在爆轰的过程中压缩石墨使其变为金刚石3.爆轰产物法利用富养平衡炸药在爆轰时,没有被氧化的碳原子在爆轰瞬间的高温高压条件下经过狙击、晶化等一系列物理化学过程,形成纳米尺度的碳颗粒集团,用氧化剂除去非金刚石相,得到纳米金刚石。

化学气相沉淀法:用微波加热、放点等方法激活碳基气体(如甲烷),使之离解出碳原子和氢原子,碳原子在甲基和氢原子的作用下在固相基片如籽晶上沉积形成金刚石薄膜。

钻石的成核与生长原料研磨将原料放置进玛瑙研磨罐内研磨,石墨通过Fe-Ni合金触媒的混合可生成黄色金刚石,在此基础上加入铝元素或者钛元素可生成白色,加入N元素生成绿色,加入铝或钛的基础上再加入硼将生成蓝色的金刚石。

高压环境制造金刚石实验报告

高压环境制造金刚石实验报告

高压环境制造金刚石实验报告高压科学实验目的1.了解高压环境的特性2.了解金刚石的制作过程3.了解金刚石的特性实验器材六面顶压机,大液压机,控制台,小液压机,水罐,激光切割机,烘干机,电热恒温鼓风干燥箱,金刚石磨盘,蒸煮箱,真空行星式球磨机实验原理金刚石的特性:硬度极大,化学性质稳定,高导热率,高传热速度,介电常数小,载流子迁移率大,抗强酸强碱腐蚀等等运用大质量支撑原理,对顶砧的大面积端施加压力,由于,S远小于,因此施加压强可以获得远大于他的压强P。

使用六面顶压机,通过调整液压油的压力来对高压腔体施加压力。

将石墨与金属触媒混合,放在5.4GPa,和温度1400C的环境中即可开始转化为金刚石。

具体分为膜生长法和温度梯度法。

前者用于生成生长磨料级金刚石,而后者用于生成宝石级金刚石。

此为静态高温高压法。

此外还有动态超高压高温合成法,低压气相沉淀法。

膜生长法:使石墨饱和溶解于触媒溶液,施加高温高压环境。

借由同一环境下石墨和金刚石的溶解度不同,使溶液过饱和以膜的形式析出在金刚石核上,使之长大。

温度梯度法:在高温高压条件下,高温处碳源石墨转化为金刚石并溶于触媒中,在一定温度梯度驱动下扩散至低温处的晶体中开始生长。

在动态超高温高压合成金刚石的技术中,根据合成金刚石原料的不同可分为三种:1.冲击波法利用高速飞片撞击石墨靶板,使石墨在撞击过程中生成微米级的金刚石颗粒2.爆炸法将石墨与高能炸药混合,在炸药在爆轰的过程中压缩石墨使其变为金刚石3.爆轰产物法利用富养平衡炸药在爆轰时,没有被氧化的碳原子在爆轰瞬间的高温高压条件下经过狙击、晶化等一系列物理化学过程,形成纳米尺度的碳颗粒集团,用氧化剂除去非金刚石相,得到纳米金刚石。

化学气相沉淀法:用微波加热、放点等方法激活碳基气体(如甲烷),使之离解出碳原子和氢原子,碳原子在甲基和氢原子的作用下在固相基片如籽晶上沉积形成金刚石薄膜。

钻石的成核与生长原料研磨将原料放置进玛瑙研磨罐内研磨,石墨通过Fe-Ni合金触媒的混合可生成黄色金刚石,在此基础上加入铝元素或者钛元素可生成白色,加入N元素生成绿色,加入铝或钛的基础上再加入硼将生成蓝色的金刚石。

金刚石晶胞的拼装方法

金刚石晶胞的拼装方法

金刚石晶胞的拼装方法全文共四篇示例,供读者参考第一篇示例:金刚石是一种坚硬的碳化物,其晶体结构是类似于钻石的立方晶系。

金刚石的晶胞是由碳原子形成的六边形结构组成,具有非常高的硬度和热导率。

现在让我们来了解一下金刚石晶胞的拼装方法。

金刚石晶胞的拼装方法需要一定的实验条件和设备。

我们需要准备一些金刚石晶粉和一定量的溶剂,以便在拼装过程中提供一定的润滑。

我们需要一台适量的实验仪器,如电子显微镜和X射线衍射仪,以帮助我们观察和分析拼装的结果。

拼装金刚石晶胞的第一步是通过适当的方法将金刚石晶粉与溶剂混合均匀,形成一个均匀的混合物。

这样可以确保金刚石晶粒之间的间隙填充适当的润滑剂,有利于后续的拼装工作。

接下来,我们需要将混合好的金刚石晶粉放入一个特制的拼装模具中,确保晶粒的位置和排列是正确的。

拼装模具可以是任何形状和尺寸,根据需要定制。

然后,将模具放入一个高温高压的实验仪器中,进行高温高压的处理。

高温高压的条件对于金刚石晶胞的形成非常关键,只有在适当的条件下才能获得理想的结果。

除了以上介绍的传统拼装方法外,还有一些新型的金刚石晶胞拼装技术,如化学气相沉积法、液相沉积法等。

这些新技术能够更加精确地控制金刚石晶胞的形成过程,提高拼装的效率和质量。

金刚石晶胞的拼装方法是一个复杂的过程,需要高温高压的条件和适当的实验设备。

通过科学的方法和技术,我们可以获得高质量的金刚石晶体,为研究和应用金刚石提供更多可能性。

【字数:432】第二篇示例:一、金刚石晶胞简介金刚石是一种自然存在的矿物,是由碳元素组成的共价晶体。

金刚石具有极强的硬度和抗压强度,因此被广泛应用于珠宝、切割工具等领域。

金刚石的晶胞结构为面心立方结构,每个晶胞包含8个原子,其中每个原子都与周围四个原子形成共价键。

二、金刚石晶胞的拼装方法金刚石晶胞的拼装方法包括以下几个步骤:1. 确定晶胞大小首先需要确定金刚石晶胞的大小,即晶体的晶胞参数。

金刚石的晶胞参数为a=0.3567 nm,即晶胞的边长为0.3567纳米。

实验1 金刚石图案算法

实验1  金刚石图案算法

实验1 金刚石图案算法一、实验目的在圆的基础上绘制金刚石图案。

金刚石图案是一个二维图案,仅使用二维坐标(x,y)就可以绘制:利用数学函数sin()及cos()函数计算点坐标,利用MoveTo()及LineTo ()函数将顶点连接起来,验证算法的正确性,并修改程序,加深对VC++绘图的理解。

二、实验任务将半径为r的圆周n等份,然后用直线将各等分点两两相连,形成的图案称为“金刚石”图案,并编程实现。

三、实验内容1.建立工程----“TestDiamond”。

2. 编写Diamond()函数:(1)指定n、及r的值;(2)根据等分点数,计算金刚石图案的等分角“theta”,theta=2*PI/n;(3)将等分点坐标存储在数组中;(4)设计二重循环,将各等分点两两相连。

3.OnDraw()中调用Diamond()函数。

4.注意:(1)用到sin()等数学函数,所以在CtestDiamondView.cpp中添加“#include "math.h"”语句;(2)为了简单起见(没有使用面向对象的方法定义“点”类,没有使用动态内存分配),初始化存储点坐标的数组x[]和y[]为固定大小,即x[i]和y[i]共同表示第i个点的x和y坐标。

5.代码(1)Diamond()函数void CTestDiamondView::Diamond(CDC *pDC, int n, double r){//n为等分点的个数,r为圆的半径double Theta;//thta为圆的等分角double PI=3.1415926;double x[40];double y[40];int MaxX=700;int MaxY=700;//圆心设定为(350 ,350)Theta=2*PI/n;for(int i=0;i<n;i++) //等分圆{x[i]=r*cos(i*Theta)+MaxX/2;y[i]=r*sin(i*Theta)+MaxY/2;}for(i=0;i<=n-2;i++) //二次循环,点点连接{for(int j=i+1;j<=n-1;j++){pDC->MoveTo(int(x[i]),int(y[i]));pDC->LineTo(int(x[j]),int(y[j]));}}}(2)OnDraw()函数void CTestDiamondView::OnDraw(CDC* pDC){CTestDiamondDoc* pDoc = GetDocument();ASSERT_V ALID(pDoc);// TODO: add draw code for native data hereCPen PenBlue(PS_SOLID,1,RGB(0,0,255));//定义蓝色笔pDC->SelectObject(&PenBlue);Diamond(pDC,31, 300 );}。

绘制金刚石图案pdf

绘制金刚石图案pdf

知识要点自定义二维坐标系。

二维点类的定义方法。

对话框的创建及调用方法。

金刚石图案算法。

一维堆内存的分配与释放。

设计个性化的菜单项与工具栏。

创建Test工程模板。

一、案例需求1.案例描述将半径为r的圆周n等份,然后用直线段将每一个等分点和其他所有等分点连接,形成的图案称为金刚石图案。

使用对话框读入等分点个数与圆的半径,以屏幕客户区中心为圆心,请使用MFC的基本绘图函数绘制蓝色直线段构成的金刚石图案。

2.功能说明(1)程序运行界面提供“文件”、“图形”和“帮助”3个弹出菜单项。

“文件”菜单项提供“退出”子菜单,用于退出工程;“图形”菜单项提供“绘图”子菜单,用于绘制金刚石图案;“帮助”菜单项提供“关于”子菜单,用于显示开发信息。

(2)工具栏提供与子菜单项“退出”、“绘图”、“关于”相对应的图标按钮。

(3)单击“绘图”子菜单或“绘图”图标按钮,弹出图1-1(a)所示的输入对话框,读入圆的等分点个数和圆的半径,单击输入对话框的OK按钮绘制金刚石图案。

(4)自定义屏幕二维坐标系,原点位于客户区中心,x轴水平向右为正,y轴垂直向上为正。

以二维坐标系原点为圆心绘制半径为r的圆,将圆的n等分点使用直线段彼此连接形成金刚石图案,如图1-1(b)所示。

3.案例效果图案例的输入对话框和绘制效果如图1-1所示。

(a)输入对话框(b)金刚石图案图1-1输入对话框及效果图二、案例分析本案例设计的目的是使用Visual C++的MFC开发平台来建立一个Test工程,为后续的案例设计提供一个通用的工程模板。

Test工程包含了菜单设计、工具栏图标按钮设计、输入对话框设计和关于对话框设计等任务。

在建立Test工程模板的基础上,本案例以绘制金刚石图案为例,讲解二维点类CP2的设计方法和CTestView类的修改方法。

1.菜单和工具栏按钮根据案例的功能要求,需要在MFC环境中建立一个由“文件”、“图形”和“帮助”3个菜单项组成的弹出菜单,其中“文件”菜单项的子菜单为“退出”,用于退出Test工程,如图1-2所示;“图形”菜单项的子菜单为“绘图”,用于调用输入对话框绘制金刚石图案,如图1-3所示;“帮助”菜单项的子菜单为“关于”,用于显示开发人员信息,如图1-4所示。

计算机图形学实验及课程设计

计算机图形学实验及课程设计

实验12 颜色渐变立方体
12.1 实验目的
掌握凸多面体消隐算法。 掌握双线性颜色插值算法。 建立基本三维场景。
实验12 颜色渐变立方体
12.2 实验要求


建立三维坐标系Oxyz,原点位于屏幕客户区中 心,x轴水平向右为正,y轴铅直向上为正,z轴 垂直于屏幕指向观察者。 以原点为体心绘制透视投影立方体,立方体8 个顶点的颜色分别为黑色、白色、红色、绿色、 蓝色、黄色、品红色和青色。背景色为黑色, 如图12-1所示。
实验4 二维几何变换
4.2 实验要求
使用静态切分视图,将窗口分为左右窗格。左窗格为继承于
CFormView类的表单视图类CLeftPortion,右窗格为一般视图
类CTestView。 左窗格提供代表“图形顶点数”(4、8、16和32)、“平移变 换”(x方向和y方向)、“旋转变换”(逆时针和顺时针)和 “比例变换”(放大和缩小)的滑动条,用于控制右窗格内的 图形变化。 右窗格内以屏幕客户区中心为图形的几何中心,绘制图形顶点 数从4变化为8、16和32的正多边形。为了表达图形的旋转,多
实验8 动态三视图
8.3 效果图
多面体动态三视图的效果如图8-1所示。
图8-1 多面体动态三视图的效果图
实验9 动态绘制Bezier曲线
9.1实验目的
掌握直线的参数表示法。 掌握德卡斯特里奥算法的几何意义。 掌握绘制二维Bezier曲线的方法。
实验9 动态绘制Bezier曲线
9.2 实验要求
实验8 动态三视图
8.1实验目的
掌握主视图变换矩阵。 掌握俯视图变换矩阵。 掌握侧视图变换矩阵。 掌握斜等测图绘制方法。
实验8 动态三视图

案例1 绘制金刚石图案算法24页文档

案例1 绘制金刚石图案算法24页文档


26、要使整个人生都过得舒适、愉快,这是不可能的,因为人类必须具备一种能应付逆境的态度。——卢梭

27、只有把抱怨环境的心情,化为上进的力量,才是成功的保证。——罗曼·罗兰

28、知之者不如好之者,好之者不如乐之者。——孔子

、勇猛、大胆和坚定的决心能够抵得上武器的精良。——达·芬奇

30、意志是一个强壮的盲人,倚靠在明眼的跛子肩上。——叔本华
谢谢!
24
案例1 绘制金刚石图案算法
1、战鼓一响,法律无声。——英国 2、任何法律的根本;不,不成文法本 身就是 讲道理 ……法 律,也 ----即 明示道 理。— —爱·科 克
3、法律是最保险的头盔。——爱·科 克 4、一个国家如果纲纪不正,其国风一 定颓败 。—— 塞内加 5、法律不能使人人平等,但是在法律 面前人 人是平 等的。 ——波 洛克
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

设计test工程模板
File->new->projects->MFC Appwizard(exe)(project name, location)->single Document->ok
Class View:
CTestApp- 主函数类,是程序的入口
CTestDoc- 存储数据
Serialize()负责管理数据
CTestView- 显示结果
OnDraw()用于显示数据
Test.cpp
BOOL CTestApp::InitInstance()
{。

m_pMainWnd->ShowWindow(SW_MAXIMIZE);//窗口最大化显示
m_pMainWnd->SetWindowText("案例1:金刚石图案算法");
m_pMainWnd->UpdateWindow();
return TRUE;
}
一、设计菜单:
二维图形-〉金刚石图案(ID:IDM_DRAWDIA, Caption: 金刚石图案)
二、设计工具栏:
三、菜单项和工具栏的关联:
四、设计“关于”对话框
五、设计输入对话框:
1)设计界面如下
2)添加输入对话框类
双击对话框(ok)-〉name:CInputDlg
3)为输入框的控件映射数据成员View->ClassWizard ( Member Variables )
4)设置Edit_Box的初始值(.cpp文件):
CInputDlg::CInputDlg(CWnd* pParent /*=NULL*/)
: CDialog(CInputDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CInputDlg)
m_n = 30;
m_r = 300.0;
//}}AFX_DATA_INIT
}
5)设置Edit_Box的初始状态为选中
对话框-〉右键-〉建立类向导
为CInputDlg的WM_SHOWWINDOW添加消息映射函数OnShowWindow(),并添加代码如下
void CInputDlg::OnShowWindow(BOOL bShow, UINT nStatus)
{
CDialog::OnShowWindow(bShow, nStatus);
// TODO: Add your message handler code here
////#################################////
GetDlgItem(IDC_EDIT1)->SetFocus();
((CEdit *)GetDlgItem(IDC_EDIT1))->SetSel(0,-1);
////#################################////
}
六、设计二维点类
->右键,选择new class –〉class type(一般类),name(CP2),并添加以下代码P2.h
class CP2
{
public:
CP2();
virtual ~CP2();
////#############################////
CP2(double,double);
double x;
double y;
////#############################////
};
P2.cpp
CP2::CP2()
{
////#############################////
x=0;
y=0;
////#############################////
}
七、设计CTestView类
1)设置变量,定义函数
ClassView标签-〉CTestView类-〉右键,选Add Member Variable-〉依次输入一个类和2个变量,如下
变量类型:CP2 int double
变量名称:*p n r
ClassView标签-〉CTestView类-〉右键,选Add Member function
Function type: void
Function Declaration: Diamond
Access: public
2)添加“绘图”子菜单命令消息映射函数
View-〉右键,选择class wizard-->Add Function
Project:test
Class name:CTestView
Object IDs:IDM_DRAWDIA
Messages:COMMAND
添加的函数是OnDrawdia()
3)添加“绘图”子菜单命令消息映射函数的代码(20页)
void CTestView::OnDrawdia ()
{
// TODO: Add your command handler code here
CInputDlg dlg;
if(IDOK==dlg.DoModal())
{
n=dlg.m_n;
r=dlg.m_r;
}
else
return;
RedrawWindow();
p=new CP2[n];
Diamond();
delete[]p;
}
4)在TestView.cpp 中添加代码
头文件和宏定义
////####################################
#include "math.h"
#define PI 3.1415926
#define Round(d) int(floor(d+0.5))
#include "InputDlg.h"
////#################################### Diamond()函数的代码
如19页,绘制金刚石图案
将MoveTo()和LineTo()改成中点算法绘制金刚石图案。

相关文档
最新文档