文档视界 最新最全的文档下载
当前位置:文档视界 › 金刚石图案算法孔令德

金刚石图案算法孔令德

金刚石图案算法孔令德
金刚石图案算法孔令德

钻石学-模拟题

《钻石学》模拟题 一,单选题 1.钻石的解理属于(). A.八面体一般解理 B.八面体中等解理 C.八面体完全解理 D.无解理 [答案]:B 2.国际规定钻石的计量单位是(). A.克拉 B.毫米 C.斤 D.克 [答案]:A 3.具有最大导电率的钻石也叫具半导体性质的钻石是(). A.Ia型 B.Ib型 C.IIa型 D.IIb型 [答案]:D 4.我国第一个钻石分级标准的正式使用时间是(). A.35247 B.35551 C.34060 D.35827 [答案]:B 5.某钻戒的钻石在放大镜下浅色晶体包体易见,并可见晶体轮廓,但不见面裂,该钻石精度级别可定为()级. A.VS B.SI C.P D.VVS. [答案]:B 6.钻石与碳化硅均为晶体,两者分别属于()晶系晶体. A.等轴和六方 B.六方和三方 C.等轴和斜方 D.等轴和三方 [答案]:A

7.钻石的每一个抛光小面统称为(). A.晶面 B.台面 C.底面 D.刻面 [答案]:D 8.标准圆钻型质量(克拉重)的测算公式是()×0.0061. A.全高 B.平均腰围直径 C.平均腰围直径×全高 D.平均腰围直径2×全高 [答案]:D 9.当钻石裸石质量低于0.47ct时,钻石的净度可划分为(). A.3级 B.5级 C.7级 D.10级 [答案]:B 10.钻石出现肉眼可见的面裂或包裹体,但不影响亮度,钻石净度级别定为(). A.SI B.P1 C.P2 D.无 [答案]:C 11.钻石国家标准GB/T16554-2003中,"GB/T"表示(). A.强制性国家标准 B.推荐性国家标准 C.地方性国家标准 D.行业性国家标准 [答案]:B 12.镶嵌钻石分级可不考虑(). A.颜色 B.净度 C.切工 D.质量 [答案]:D 13.钻石亭深比太小,小于40%,将会出现()效应.

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

设计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); ////#################################//// }

实验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;

C++(MFC)金刚石图案的绘制平移缩放

实验二 实验目的: 绘制金刚石图案,并利用鼠标交互实现平移、放大和缩小 实验过程: 设置映射模式为MM_ISOTROPIC,通过在MouseDown、MouseUp及MouseMove消息处理中改变逻辑坐标的原点及范围实现图形的平移及放大和缩小 实验主要算法: CAaaaaView::CAaaaaView()//构造函数 { // TOD: add construction code here Xw=1000; Yw=1000; x0=y0=0; } voidCAaaaaView::OnDraw(CDC* pDC) { CAaaaaDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here draw(pCurrentDC); } ///////////////////////////////////////////////////////////////////////////// // CAaaaaView printing voidCAaaaaView::draw(CDC *pDC) { CRect Rect;//////////////////////////////////////////////////////////////// GetClientRect(&Rect);///////////////////////////////////////////////////// pDC->SetMapMode(MM_ISOTROPIC);//////////////////////设置映射模式///////// pDC->SetWindowExt(Xw,Yw);/////////////////////////// pDC->SetWindowOrg(x0,y0); pDC->SetViewportExt(Rect.right,-Rect.bottom);///////////////////////////// pDC->SetViewportOrg(Rect.right/2,Rect.bottom/2);///////////////////////// // CBrush d(RGB(0,255,0));////////设置填充颜色 // pDC->SelectObject(d);///////////////////// pDC->Ellipse(-200,200,200,-200); int a[30][2];//////////x坐标为a[i][0];y坐标为a[i][1]; int r=200; double c=3.141592653; for(inti=0;i<=29;i++){ a[i][0]=r* cos(2*c/30*i); a[i][1]=r* sin(2*c/30*i); }

计算机图形学实验

课程实验报告 课程名称计算机图形学班级1120541 实验日期2014.04 姓名汪智学号41 实验成绩 实验名称绘制金刚石图案 实验目的及要求(1)掌握二维坐标系模式映射方法。 (2)掌握动态内存的分配和释放方法。 (3)掌握二维点类的定义方法。 (4)掌握对话框的创建及调用方法。 (5)掌握对话框的数据交换和数据校验方法。(6)掌握Test工程课程设计框架的创建方法。(7)掌握金刚石图案的设计方法 实 验内容将半径为r的圆周n等份,然后用直线将各等分点隔点相连,形成的图案称为 “金刚石”图案,试编程实现。 算法描述及实验步骤 在Visual C++集成开发环境中,选择File|New,弹出的New对话框,切换到“Projects”标签页。在左边窗口中选择MFC AppWizard [exe],在右边的Projects name处输入工程名“Test”,在Location处选择适当的工程位置,如 D:\Test,如下图所示,点击OK按钮。

New对话框 在MFC AppWizard - Step1对话框中,选中Single document单选按钮,其余保持默认值,如图所示,单击Finish按钮。 MFC AppWizard - Step1对话框 完成上述操作后,Test工程的MFC框架已被生成,出现MFC框架的程序 工作区。如图所示。 MFC框架 单击图所示的工具条上的按钮,就可以直接编译、运行Test工程,结果如 下

(1)设置菜单的ID 在资源视图面板ResourceView上双击Menu,打开IDR_MAINFRAME,修改 菜单项内容,结果如下图 保留子菜单“退出”的ID为ID_APP_EXIT,Prompt为“退出应用程序\n 退出”;设计子菜单“金刚石”的ID为IDM_DIAMOND,Prompt为“绘制图形\n 绘图”;保留子菜单“关于”的ID为ID_APP_ABOUT,Prompt为“开发人员信息\n关于”。如图。请注意,按照MFC的习惯,菜单的ID号要使用大写字符。 (2)添加“绘图”子菜单消息映射函数 子菜单“退出”和“关于”的命令消息处理函数在Test框架建立时AppWizard 已经提供,这里予以保留。下面讲解为子菜单“金刚石”添加命令消息处理函数的方法。选择菜单View|Class Wizard,打开MFC ClassWizard对话框,并自动切换到Message Maps标签页。在Object IDs中选择IDM_DIAMOND,在Class name中选择CTestView类,在Message中选择COMMAND后,单击Add Function 按钮,弹出Add Member Function对话框,保持默认菜单成员函数的名字OnDiamond,单击OK按钮,则在Member function中为子菜单“金刚石”添加了操作函数OnDiamond (),如图1-11所示。该函数成为了CTestView类的成员函数,系统已经自动在TestView.h头文件中添加了函数声明,在TestView.cpp源文件中给出了函数框架。单击Edit Code按钮可以对OnMdraw() 函数进行编辑。

绘制金刚石图案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所示。 工具栏上的图标按钮代表“退出”子菜单、图标按钮代表“绘图”子菜单, 图标按钮代表“关于”子菜单。关联图标按钮与菜单项的方法是让二者具有相同的ID号。 由于标题栏图标的大小为16×16,Debug文件夹内的图标的大小为32×32,本案例将 系统标题栏默认图标修改为,将Debug文件夹内的默认图标修改为。 图1-2 “退出”子菜单图1-3 “绘图”子菜单 图1-4 “关于”子菜单 2.对话框 (1)定义输入对话框类CInputDlg,输入“等分点个数”和“圆的半径”两个参数,如图1-1(a)所示。 (2)新关于对话框是在Test工程提供的原关于对话框的基础上修改而成,如图1-5所示。

设计金刚石图案的数学模型

题目:设计金刚石图案的数学模型 1. 实验目的 ⑴掌握二维坐标系模式映射方式 ⑵掌握动态内存的分配和释放方法 ⑶掌握二维点类的定义方法 ⑷掌握对话框的创建及调用方法 ⑸掌握对话框的数据交换和数据效验方法 ⑹掌握Diamond 工程实验框架的创建方法 ⑺掌握金刚石图案的设计方法 2. 问题描述 ⑴定义二维坐标原点位于屏幕中心,x轴水平向右为正,y轴垂直向上 为正。 ⑵以二维坐标原点为圆心绘制半径为r的圆,将圆的n等分点使用直 线彼此连接形成金刚石图案。 ⑶程序运行界面提供“文件”、“绘图”和“帮助”三个弹出菜单项。“文 件”菜单提供“退出”子菜单项,用于退出应用程序;“绘图”菜单提供“金刚石”子菜单项,用于绘制金刚石图案;“帮助”菜单提供“关于”子菜单项,用于说明开发信息。 ⑷选择“金刚石”子菜单项,打开“输入参数”对话框,输入“等分 点个数”和“圆的半径”。 ⑸在屏幕客户区中心绘制金刚石图案。 3. 算法的思想与算法实现步骤 金刚石图案是一个二维图案,仅使用二维坐标(x,y)就可以绘制,本次试验采用CP2数组实现。金刚石图案是由依次连接位于圆上的不同等分点的直线构成的。 算法设计的难点是避免直线段的重复连接。为此设计一个二重循环,代表起点索引号的外层整型变量i从i=0循环到i=n-2,代表终点索引号的内层整型变

量j从j=j+1循环到j=n-1,以(p[i].x,p[i].y)为起点,以(p[j].x,p[j].y)为终点依次连接各线段形成金刚石图案。 4. 程序核心代码 #include "stdafx.h" #include "diamond.h" #include "diamondDoc.h" #include "diamondView.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif #define PI 3.1415926 #define ROUND(a) int(a+0.5) #include void CDiamondView::OnDraw(CDC* pDC) { CDiamondDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here // CDC* pDC=GetDC(); 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,255,0)); pOldpen=pDC->SelectObject(&NewPen); double thta; CPoint p[20]; thta=2*PI/20; for(int i = 0;i<20;i++) { p[i].x = long(150*cos(i*thta)); p[i].y = long(150*sin(i*thta)); }

计算机图形学实验

计算机科学与通信工程学院 实验报告 课程计算机图形学 实验题目二维图形绘制 学生姓名徐家幸 学号3160602070 专业班级计算机科学与技术1602 指导教师王新宇 日期2019.4.6

成绩评定表

二维图形的绘制 1.实验内容 (1)实验题目 绘制金刚石图案 绘制魔术三角形 绘制递归圆 (2)实验内容 金刚石图案的成图规则是:把一个圆周等分成 n份,然后每两点之间连线。当n取奇数时,该图案可一笔连续绘成,即用MoveTo 函数确定一个当前点,然后连续用LineTo函数连点成线。 请设计连线规则并编程实现。 绘制下图所示的魔术三角形图案,采用三种可明显区分的颜色填充。

应用递归的方法绘制如下所示的图案。 2. 实验环境 软硬件运行环境:Windows 10 开发工具:visual studio 2015 3. 问题分析 根据实验需求,需要在MFC环境中建立一个由“文件”、“绘图”和“帮助”这3个菜单项目组成的菜单,其中“文件”的子菜单为“退出”,完成退出应用程序的工作, “绘图”,的子菜单为“Diamond”,用于绘制金刚石图案等,“帮助”的子菜单为“关

于”,用于显示开发人员信息;定义一个输人对话框类,提供个两个参数的输入界面。最后在客户区输出图案。 1.金刚石图案:为把一个半径为300的圆,等分绘制金刚石图案;设计该算法为避免直线段的重复连接,需设计一个二重循环,代表起点索引号的外层整型变量i从i=0循环到i=n-2,代表终点索引号的内层整型变量j从j=i+1循环到j=n-1。以(p[i].x,p[i].y)为起点,以(p[j].x,p[j].y)为终点依次连接各线段形成金刚石图案。 金刚石有两种画法: (1)每隔两个顶点连线直至回到原起点,再将下一个点作为新的原起点。 (2)每个点与其余点都连线直至全部连玩,再将隔一个点之后的点作为新的原起点。 2.魔术三角形: 先绘制三角形图形,再随机在三个图形中填色。 3.递归圆: 先确定首个圆的中心点坐标和半径与其周围八个小圆的中心点坐标和半径,再根据递归的深度再算出递归后圆的半径,并计算出它们的圆中心点坐标。 设计一个二重循环,代表起点的外层循环从i=0循环到i=n-2,代表终点的内层循环从j=i+1循环到j=n-1。以p[i].x,p[i].y作为起点,以p[j].x,p[j].y作为终点绘制连接线。 4. 算法设计 //DiamondView.h class CDiamondView : public CView { …… public: //参数输入和提示对话框 CDlgDiamond dlgDiamond;//金刚石绘制中的参数输入对话框 CDlgCircle dlgCircle;//递归圆绘制中的参数输入对话框 CDlgBezier dlgBezier;//Bezier曲线绘制中的参数输入对话框 CDlgB dlgB;//B样条曲线绘制中的参数输入对话框 CDlgHint dlgHint;//裁剪中的提示对话框 //用于裁剪时的裁剪窗口绘制的控制 BOOL IsCutting;

绘制金刚石图案pdf

课程设计I 金刚石图案算法 知识要点 ●自定义二维坐标系。 ●二维点类的定义方法。 ●对话框的创建及调用方法。 ●金刚石图案算法。 ●一维堆内存的分配与释放。 ●设计个性化的菜单项与工具栏。 ●创建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所示。 工具栏上的图标按钮代表“退出”子菜单、图标按钮代表“绘图”子菜单, 图标按钮代表“关于”子菜单。关联图标按钮与菜单项的方法是让二者具有相同的ID 号。 由于标题栏图标的大小为16×16,Debug文件夹内的图标的大小为32×32,本案例将 系统标题栏默认图标修改为,将Debug文件夹内的默认图标修改为。 图1-2 “退出”子菜单图1-3 “绘图”子菜单 图1-4 “关于”子菜单 2.对话框 (1)定义输入对话框类CInputDlg,输入“等分点个数”和“圆的半径”两个参数,

金刚石图案算法实现步骤

金刚石图案算法实现步骤: 1、利用C++MFC建立工程(Test)框架后,在ClassView中添加一个Generic的新类(P2D), 并添加成员变量x和y,均为double类型。 2、在Resource V iew中选择Dialog,右击选择插入Dialog,插入两个静态文本和编辑框, 并就该其属性。双击对话框添加命名为InputDlg的对话框类,并对其进行设计。 3、在View菜单下选择MFC ClassWizard菜单项,选中Member V ariables标签项,修改成 员变量的名称和类型。其中一个为m_n,另一为m_r,均为double类型,分别代表分点个数和圆半径。 4、菜单设计。在Resource V iew中选择Menu,打开IDR_MAINFRAME。添加一级菜单“绘 图”及其下属二级菜单“diamond”,将其ID改为“ID_MENUDiamond”,并对“diamond” 添加操作函数。 5、在主菜单View中打开类向导ClassWizard,在Class name中选择CTestV iew,在Object IDs 中选择ID_MENUDiamond,在Message中选择Command后,单击Add Function,弹出Add Member Function对话框,保持菜单成员函数的名字不变,单击ok。在Member Function中为菜单diamond添加操作函数OnMenuDiamond(),该函数是CTestView类的成员函数。单击Edit Code即可对该函数进行编辑。 6、具体添加代码如下: 在T estView.h中 #include "P2D.h"//包含二维点头文件 #include "InputDlg.h"//包含对话框头文件 public: void GetMaxX();//计算屏幕坐标中心x函数 void GetMaxY();//计算屏幕坐标中心y函数 void Diamond(); //绘制金刚石函数 protected: int MaxX,MaxY;//屏幕最大坐标 P2D p[50];//定义对象数组 double n,r;//定义等分点和圆的半径 在T estview.cpp中 #define ROUND(a) int(a+0.5)//四舍五入 #include "math.h"//数学头文件 #define PI 3.1415926//PI的宏定义 void CTestView::GetMaxX()//求屏幕最大x值 { CRect Rect; GetClientRect(&Rect); MaxX=Rect.right; } void CTestView::GetMaxY()//求屏幕最大y值 { CRect Rect; GetClientRect(&Rect); MaxY=Rect.bottom; }

金刚石均匀排布装置设计

金刚石的结晶构造属于最简单的等轴晶系。如果金刚石的晶形完整,通常只含两种晶面,即六面体或立方体的(100)面(通常为四方形),及八面体或正立与倒影对接的四面锥体的(111)面(三角形或六边形)。随着垂直于这两种晶面方向生长速率的高低,(100)与(111)面的大小也跟着消长,形成一系列的六至八面体。工业用金刚石的粒度在30目以下(小于0.59mm),而且一种工具所用金刚石的粒度处于一定范围内,比如40/50,50/60,80/100等。正是由于金刚石粒度和形状的多样性,使得金刚石的有序排布存在较大的困难。本文借鉴其它相关技术,设计了四种新型的金刚 石有序排布方案,并对其装置进行结构设计。 1.1电磁排布 1.1.1电磁排布原理 纯金刚石不具有磁性,但工业用人造金刚石,由于在高温高压合成时使用的触媒中含有Fe、C。、Ni等,使得大多数金刚石中含有杂质,从而具有一定的磁性。测定表明,人造金刚石的平均磁化率在156x10-6~0.6x10-6cm/g之间。因此,可利用电磁铁或磁铁来实现金刚石有序排布。装置的主要原理是多枚细针按一定的阵列形式组合成针模板,利用电磁铁或磁铁磁化细针,然后利用集中在针尖的磁力吸附金刚石,控制针尖的磁力大小,使每个针尖能且仅能吸附一颗金刚石,将细针移动到基体表面后释放磁力,实现金刚石的有序排布。 1.1.2电磁排布装置示意图 电磁排布系统的结构示意图如图1-1所示。其具体工作过程为:(l)基体在传送带的带动下移动到电磁排布系统的悬臂的正下方,传送带停止运转。(2)金刚石排布电磁铁在导轮的带动下,移动到装料盘的正上方,支座上的传动齿轮顺时针转动,使排布电磁铁在升降齿条的推动下向下移动到装料盘。(3)调节针模板上的细针的磁力,排布电磁铁的细针针尖接触到装料盘里的金刚石并将其吸住。(4)传动齿轮逆时针转动,把排布电磁铁带离装料盘,在达到一定高度后,电磁铁断电,此时细针已被磁化仍具有磁性,金刚石不会脱落。(5)排布电磁铁在导轮的带动下,移动到基体的正上方,传动齿轮顺时针转动,排布电磁铁下降,针尖靠近基体,电磁线圈通电,去磁磁通与永磁磁通互相抵消,电磁铁吸引力消失,金刚石落下并排布在钎料合金表面。(6)传送带移动一个工位,把排布好金刚石的基体带走,并送来下一个待排布的基体。

计算机图形学实验报告-绘制金刚石

《计算机图形学》实验报告 1. 实验目的 巩固对计算机图形学绘图基础知识,绘制金刚石图案 2. 问题描述 对题目分析,金刚石图案是由依次连接位于圆上的不同等分点的直线段构成,等分点越多,金刚石图案越复杂;要绘制一个半径300,20等分的金刚石图案;首先要设计金刚石图案的数学模型,然后定义画笔编程绘制图案; 。 3. 算法的思想 为把一个半径为300的圆,等分绘制金刚石图案;设计该算法为避免直线段的重复连接,需设计一个二重循环,代表起点索引号的外层整型变量i从i=0

循环到i=n-2,代表终点索引号的内层整型变量j从j=i+1循环到j=n-1.以(p[i].x,p[i].y)为起点,以(p[j].x,p[j].y)为终点依次连接各线段形成金刚石图案。 4.程序核心代码 void CTestView::OnDraw(CDC* pDC) { CTestDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here 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; thta=2*PI/20; CPoint p[20]; for(int i=0;i<20;i++) { p[i].x=100*cos(i*thta); p[i].y=100*sin(i*thta); } for(i=0;i<=18;i++) {

绘制金刚石图案

西安科技大学 计算机图形学绘制金刚石图案 专业: 班级: 学号: 姓名: 2012/9/9

目录 一、实验目的及要求 二、实验分析 三、源代码 四、结果截图 五、实验总结

一、实验目的及要求 (1)掌握Vc++6.0和MFC编程环境; (2)在实验前了解综合性实验的目的和要求,观察实验效果图。在实验中认真理解每个类的结构,通过搭积木的方式完成实验任务。 二、实验分析 本实验的核心是在圆的基础上绘制金刚石图案。金刚石图案是一个二维图案,仅使用二维坐标(x,y)就可以绘制,本实验使用CP2数组实现。金刚石图案是有依次连接位于圆上的不同等分点的直线段构成。等分点个数越多,金刚石图案越复杂。当圆的等分点个数n=5时,线段连接情况如图1-1所示,线段连接点见表1-2。 算法设计的难点是避免直线段的重复连接。为此,设计一个二重循环,代表起点索引号的外层整型变量i从i=0循环到i=n-2,代表终点所以你好的内层整型变量j从j=j+1循环到j=n-1。以(p[i].x,p[i].y)为起点,以(p[j].x,p[j].y)为终点依次连接各线段形成金刚石图案。 (,(,),(,,, (,(,,, (,(,,

(,(, 表1-2 线段连接方式 , ,, ,, 图1-1 n=5时的线段连接 三、源代码 // testView.cpp : implementation of the CTestView class #include "stdafx.h" #include "test.h" #include "testDoc.h"

#include "testView.h" #include #define PI 3.1415926 #define ROUND(a) int(a+0.5) #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif // CTestView IMPLEMENT_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/destruction CTestView::CTestView() { }

计算机图形学-画金刚石-代码及其操作指导

操作指导—金刚石图案 1.建MFC工程Test,选单文档。 2.设置窗口最大化模式,并且标题栏显示文字为:“金刚石图案”。 在BOOL CTestApp::InitInstance()中将m_pMainWnd->ShowWindow(SW_SHOW);改为m_pMainWnd->ShowWindow(SW_MAXIMIZE);//窗口最大化 紧接着加上m_pMainWnd->SetWindowText("金刚石图案");//标题设置 3.二维点类设计:点击类右键出现添加类,或在类向导中添加一个新类,在Name编辑框中输入类名CP2。选Generic Class类 修改CP2的初始定义,添加double 型变量成员x和y。修改后: class CP2 { public: CP2(); virtual ~CP2(); CP2(double,double);//加上 double x;//加上 double y;//加上 }; 修改构造函数 CP2::CP2() { this->x=0.0; this->y=0.0; } 定义重载构造函数 CP2::CP2(double x0,double y0) { this->x=x0; this->y=y0; } 4.输入对话框类的设计。在资源视图面板Resource View中选Dialog右键选Insert Dialog,删去取消按钮,改窗口为下图:

双击此框,在弹出的框中加上Name:CinputDlg 为输入对话框的控件映射数据成员。在建立类向导中选Member Variables。对IDC_EDIT1映射变量名为m_n,int类型,限制Minimum为3,Maximum为50; 对IDC_EDIT2映射变量名为m_r,double类型,限制Minimum为200.0,Maximum为320.0.OK退出 设置EditBox框的初值.在CinputDlg的构造函数中改为m_n = 30; m_r = 300.0; 见CinputDlg::CinputDlg(CWnd* pParent /*=NULL*/) : CDialog(CinputDlg::IDD, pParent) { //{{AFX_DATA_INIT(CinputDlg) m_n = 30; m_r = 300.0; //}}AFX_DATA_INIT } 显示:设置EditBox框的初始状态为选中.在类向导中添加消息WM_SHOINDOW的响应函数,在最后加上 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);//选择编辑框控件内的全部文本 } 5.菜单设计: 下拉菜单文件中的退出ID为ID_APP_EXIT 绘图的金刚石ID为ID_APP_Diamond。 提示为: 绘制金刚石图案.帮助中的关于自己改.在VIEW类中添加”金刚石”子菜单命令响应函数. 6.引入图标:在资源视图中选中Icon中双击IDR_MAINFRAME标识,打开应用程序默认图标并执行编辑中的清除.再引入所需的图标.用复制与粘贴到图标工具上,再对应相应的ID. 7.对话框贴图:从资源视图中导入图片,导入时选所有文件.打开对话框去除不用的控件,加入图片控件,右键打开属性,类型改为位图,图像选中刚导入的. 8.CTestView类的设计: CP2 *P用于定义一维动态数组存储等分点,int N用于读入等分点个数,double R用于读入圆的半径,它们声明为保护数据成员.自定义公有的void成员函数Diamond(),菜单消息处理函数OnAppDiamond() 在View.h头文件中类定义前加上 #include "P2.h"//包含二维点类头文件 #include "InputDlg.h"//包含输入对话框类头文件 在View.cpp中加上 #include "stdafx.h"

相关文档