




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机图形学实验1实验报告实验题目:用户坐标、视图坐标、Java awt坐标概念的建立和应用实验内容:掌握用户坐标、视图坐标、Java awt坐标概念,掌握三类坐标的转换算法。编写自己的算法函数,并形成Java语言程序包。编写程序调用验证之。基本概念:(详细叙述自己对实验内容的理解) 本实验建立用户坐标和视图坐标以及Java awt坐标。 用户坐标:用户自定义设计并建立的坐标。 视图坐标:根据视图的不同,初始坐标不同,如下面的矩形和椭圆的画法。 Java awt坐标:窗口显示图像的边界图标。 算法设计:(详细叙述自己设计程序的功能、算法及实现)public abstract void drawLine(int x1, int y1, int x2, int y2) 使用当前颜色,在点(x1, y1) 和 (x2, y2) 之间画线。public abstract void drawOval(int x, int y, int width, int height) 画椭圆。public abstract void fillOval(int x, int y, int width, int height) 画实心椭圆。public abstract void drawPolygon(int xPoints, int yPoints, int nPoints) 画x和y坐标定义的多边形。public void drawRect(int x, int y, int width, int height) 画矩形。public void drawRect(int x, int y, int width, int height) 画实心矩形。public abstract void drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight) 使用当前颜色画圆角矩形。public abstract void drawString(String str, int x, int y) 使用当前字体和颜色画字符串str。public abstract void setColor(Color c) 设置图形上下文的当前颜色。public abstract void setPaintMode() 设置画模式。public abstract boolean drawImage(Image img, int x, int y, ImageObserver observer) 画特定图。public abstract void setFont(Font font) 设置特定的font字体。使用时首先得到font对象的一个实例,Font类常用构造函数为:public Font(String name, int style, int size) public Color(int red, int green, int blue, int alpha) 其中:前三个分量即RGB颜色模式中的参数,第四个alpha分量指透明的程度。当alpha分量为255时,表示完全不透明,正常显示;当alpha分量为0时,表示完全透明,前三个分量不起作用,而介于0255之间的值可以制造出颜色不同的层次效果。代码:(给出和实验内容相关的Java程序和注解,不要辅助代码,否则扣分)/定义主类MyCoordinatepublic class MyCoordinate extends Applet MyCanvas m;/定义对象/Applet程序的自动初始化方法public void init()m=new MyCanvas(this);/构造方法有参数/Applet程序的绘图方法public void paint(Graphics g)m.setBackground(new Color(251, 254, 30);/背景色黄色m.setColor(Color.black);/设定前景色为黑色m.setWindow(-1,1,-1,1);/设定用户坐标系范围/缺省的视图为m.setViewport(0,1,0,1)和Java AWT窗口大小一样/画X轴double x1=0.95,1.0,0.95;/箭头三个点的X坐标double y1=-0.03,0.0,0.03;/箭头三个点的Y坐标m.drawLine(-1,0,1,0);/画X轴m.fillPolygon(x1,y1,3);/填充箭头m.drawString(X轴,0.8,-0.1);/X轴写字符串/画Y轴double y2=0.95,1.0,0.95;/箭头三个点的Y坐标double x2=-0.03,0.0,0.03;/箭头三个点的X坐标m.drawLine(0,-1,0,1);/画Y轴m.fillPolygon(x2,y2,3);/填充箭头m.drawString(Y轴,-0.2,0.9);/Y轴写字符串/画圆m.setColor(Color.red);/设定前景色为红色m.fillOval(0.7,-0.7, 0.05,0.05);/画圆m.drawString(我的当前位置, 0.3, -0.9);/标记我的位置/画线m.setColor(Color.blue);/设定前景色为蓝色m.drawLine(0.7,-0.69,-0.7, 0.71);m.drawLine(0.7,-0.71,-0.7, 0.69);/画箭头double x3=-0.78,-0.72,-0.66;/箭头三个点的X坐标double y3=0.78,0.66,0.72;/箭头三个点的y坐标m.fillPolygon(x3,y3,3);/填充箭头/画五角星(我的目标位置)m.setColor(new Color(243, 33, 13);double x4=-0.9,-0.88,-0.9,-0.86,-0.84,-0.82,-0.78,-0.80,-0.78,-0.84;double y4=0.78,0.84,0.86,0.86,0.91,0.86,0.86,0.84,0.78,0.81;m.fillPolygon(x4,y4,10);/填充五角星m.setColor(Color.red);m.drawString(我的目标地, -0.75, 0.80);/北指标double x5=0.85,0.90,0.95;double y5=0.85,0.95,0.85;m.setColor(Color.red);m.fillPolygon(x5, y5, 3);m.drawString(北, 0.7, 0.7);m.drawLine(0.9,0.6,0.9,0.85);/画矩形(草坪)m.setColor(Color.green);m.fillRoundRect(-0.7, -0.6, -0.1, -0.1, 0.05, 0.05);m.setColor(Color.black);m.drawString(草坪, -0.5, -0.4);/圆弧的画法(湖泊)m.setColor(new Color(9,248,228);m.fillOval(0.4, 0.4, 0.4, 0.3);m.setColor(Color.black);m.drawString(美女湖, 0.2, 0.4);/主类MyCoordinate运行结果:(给出运行结果的截屏和说明)实验体会:(简单说明学习到的知识点和收获)参考程序:有两个示范程序MyCanvas.java和MyLineDrawApplet.java1.示范程序MyCanvas.java/文件名:MyCanvas.java/定义用户的canvas类,实现/从用户坐标到视图的转换/视图到JavaAWT坐标的转换/用户坐标系的二维图形的描画方法,等/用编译命令javac -d . MyCanvas.java把本文件制作成包MyCanvas/在调用这个包的程序里加入语句import MyCanvas.MyCanvas;packageMyCanvas;/制作的包名,这里包名和类名同import java.io.*;import java.awt.*;import java.awt.image.*;/定义canvas类public class MyCanvas extends Component /用户坐标系范围缺省值(-1,1,-1,1)protected double userMinx=-1;/用户坐标系X轴的最小值protected double userMaxx=1;/用户坐标系X轴的最大值protected double userMiny=-1;/用户坐标系Y轴的最小值protected double userMaxy=1;/用户坐标系Y轴的最大值/视图的坐标范围缺省值(0,1,0,1)protected double viewMinx;/各视图X轴最小值的数组protected double viewMaxx;/各视图X轴最大值的数组protected double viewMiny;/各视图Y轴最小值的数组protected double viewMaxy;/各视图Y轴最大值的数组final static int DefaultViewportMax=256;/缺省的视图数 protected int viewportMax=DefaultViewportMax;/最大视图数protected int viewportNum=0;/当前视图数protected int currentViewport=0;/当前视图的索引号/窗口大小final static int DefaultWindowSize=256;/缺省的窗口大小protected int windowWidth=DefaultWindowSize;/窗口宽度protected int windowHeight=DefaultWindowSize;/窗口宽度/定义Java AWT 的Graphics 和 Componentprotected Graphics graphics;/MyCanvas的Graphics数据类protected Component component;/MyCanvas的component数据类protected Color currentFrontColor=Color.white;/当前前景颜色protected Color currentBackColor=Color.white;/当前背景色/构造方法/缺省的构造方法中viewportMax=256public MyCanvas(Component a) component=a;/设定MyCanvas类所用的Componentgraphics=a.getGraphics();/设定MyCanvas类所用的graphicswindowWidth=a.getSize().width;/窗口宽度windowHeight=a.getSize().height;/窗口高度createViewport(DefaultViewportMax);/创建视图/创建视图private void createViewport(int max) currentViewport=0;/设定当前视图索引号viewportMax=max;/设定视图数的最大值viewMinx=new doubleviewportMax;/存放各视图X轴最小值viewMaxx=new doubleviewportMax;/存放各视图X轴最大值viewMiny=new doubleviewportMax;/存放各视图y轴最小值viewMaxy=new doubleviewportMax;/存放各视图y轴最大值viewMinxcurrentViewport=0.0;/设定当前视图的坐标轴范围viewMinycurrentViewport=0.0;viewMaxxcurrentViewport=1.0;viewMaxycurrentViewport=1.0;viewportNum=1;/当前视图数/设定用户坐标系范围public void setWindow(double x1,double x2,double y1,double y2) userMinx=x1;/设定窗口(用户坐标系)X轴的最小值userMaxx=x2;/设定窗口(用户坐标系)X轴的最大值userMiny=y1;/设定窗口(用户坐标系)y轴的最小值userMaxy=y2;/设定窗口(用户坐标系)y轴的最大值/设定视图public void setViewport(double x1,double x2,double y1,double y2) currentViewport=viewportNum;/设定新的当前视图索引号viewportNum+;/当前视图数加1viewMinxcurrentViewport=x1;/存放视图的X轴最小值viewMaxxcurrentViewport=x2;/存放视图的X轴最大值viewMinycurrentViewport=y1;/存放视图的y轴最小值viewMaxycurrentViewport=y2;/存放视图的y轴最大值/视图复位public void resetViewport() currentViewport=0;/当前视图索引号重归于零viewMinxcurrentViewport=0.0;/设定当前视图的坐标轴范围viewMinycurrentViewport=0.0;viewMaxxcurrentViewport=1.0;viewMaxycurrentViewport=1.0;viewportNum=1;/当前视图数/将视图坐标系的点转换到Java AWT坐标public int getIntX(double x) return (int)(windowWidth * x);/注意视图坐标0-1之间public int getIntY(double y) return (int)(windowHeight * (1-y);/Y轴方向相反/将用户坐标的点转换到视图坐标public double viewX(double x) double s=(x-userMinx)/(userMaxx-userMinx);double t=viewMinxcurrentViewport+s*/坐标的平移及压缩(viewMaxxcurrentViewport-viewMinxcurrentViewport);return t;public double viewY(double y) double s=(y-userMiny)/(userMaxy-userMiny);double t=viewMinycurrentViewport+s*/坐标的平移及压缩(viewMaxycurrentViewport-viewMinycurrentViewport);return t;/将用户坐标的点转换到Java AWT坐标public int getX(double x) double xx=viewX(x);/先将x转换到视图坐标int ix=getIntX(xx);/将视图坐标转换到Java AWT坐标return ix;public int getY(double y) double yy=viewY(y);/先将y转换到视图坐标int iy=getIntY(yy);/将视图坐标转换到Java AWT坐标return iy;/将用户坐标系的宽度、高度值投影到Java AWT坐标public int getDimensionX(double w) double x=viewMaxxcurrentViewport-viewMinxcurrentViewport;x*=windowWidth*w/(userMaxx-userMinx);/按比例投影,经由视图坐标系return (int)Math.abs(x);/用户坐标系可能反向public int getDimensionY(double h) double y=viewMaxycurrentViewport-viewMinycurrentViewport;y*=windowHeight*h/(userMaxy-userMiny);/按比例投影,经由视图坐标系return (int)Math.abs(y);/用户坐标系可能反向/有关当前颜色的设定方法:画笔颜色、前景色、背景色public Color getColor() return currentFrontColor;/得到当前颜色序号public void setColor(Color c) graphics.setColor(c);/设置图形对象的颜色currentFrontColor=c;/设定当前颜色序号public Color getForeground() return currentFrontColor;/得到当前前景色序号public void setForeground(Color c) component.setForeground(c);/设置前景色currentFrontColor=c;/设定当前前景色序号public Color getBackground() return currentBackColor;/得到当前背景色序号public void setBackground(Color c) component.setBackground(c);/设置背景色currentBackColor=c;/设定当前背景色序号/-各类图形的描画方法-/直线画法:两点式参数public void drawLine(double x1,double y1,double x2,double y2) /从用户的点坐标转换到Java AWT坐标int ix1=getX(x1);int iy1=getY(y1);int ix2=getX(x2);int iy2=getY(y2);graphics.drawLine(ix1,iy1,ix2,iy2);/这个方法它是怎样画直线的?/矩形画法:对角式参数public void drawRect(double x1,double y1,double x2,double y2) /从用户的点坐标转换到Java AWT坐标int ix1=getX(x1);int iy1=getY(y1);int ix2=getX(x2);int iy2=getY(y2);int ix0=(ix1ix2)?ix1:ix2;/矩形左上角坐标int iy0=(iy1iy2)?iy1:iy2;int width=Math.abs(ix1-ix2)+1;/矩形宽度,单位像素int height=Math.abs(iy1-iy2)+1;/矩形高度graphics.drawRect(ix0,iy0,width,height);/矩形填充public void fillRect(double x1,double y1,double x2,double y2) /从用户的点坐标转换到Java AWT坐标int ix1=getX(x1);int iy1=getY(y1);int ix2=getX(x2);int iy2=getY(y2);int ix0=(ix1ix2)?ix1:ix2;/矩形左上角坐标int iy0=(iy1iy2)?iy1:iy2;int width=Math.abs(ix1-ix2)+1;/矩形宽度,单位像素int height=Math.abs(iy1-iy2)+1;/矩形高度graphics.fillRect(ix0,iy0,width,height);/填充算法如何实现?/矩形区域的清除public void clearRect(double x1,double y1,double x2,double y2) /从用户的点坐标转换到Java AWT坐标int ix1=getX(x1);int iy1=getY(y1);int ix2=getX(x2);int iy2=getY(y2);int ix0=(ix1ix2)?ix1:ix2;/矩形左上角坐标int iy0=(iy1iy2)?iy1:iy2;int width=Math.abs(ix1-ix2)+1;/矩形宽度,单位像素int height=Math.abs(iy1-iy2)+1;/矩形高度graphics.clearRect(ix0,iy0,width,height);/算法等同填充/圆角矩形画法public void drawRoundRect(double x1,double y1,double x2,double y2,double arcW,double arcH) /圆弧高度、圆弧宽度/从用户坐标的点转换到Java AWT坐标int ix1=getX(x1);int iy1=getY(y1);int ix2=getX(x2);int iy2=getY(y2);int ix0=(ix1ix2)?ix1:ix2;/矩形左上角坐标int iy0=(iy1iy2)?iy1:iy2;int width=Math.abs(ix1-ix2)+1;/矩形宽度,单位像素int height=Math.abs(iy1-iy2)+1;/矩形高度int iarcWidth=getDimensionX(arcW);/圆弧宽度投影到Java AWT坐标int iarcHeight=getDimensionX(arcH);/圆弧高度投影graphics.drawRoundRect(ix0,iy0,width,height,iarcWidth,iarcHeight);/圆角矩形填充public void fillRoundRect(double x1,double y1,double x2,double y2,double arcW,double arcH) /圆弧高度、圆弧宽度/从用户坐标的点转换到Java AWT坐标int ix1=getX(x1);int iy1=getY(y1);int ix2=getX(x2);int iy2=getY(y2);int ix0=(ix1ix2)?ix1:ix2;/矩形左上角坐标int iy0=(iy1iy2)?iy1:iy2;int width=Math.abs(ix1-ix2)+1;/矩形宽度,单位像素int height=Math.abs(iy1-iy2)+1;/矩形高度int iarcWidth=getDimensionX(arcW);/圆弧宽度投影到Java AWT坐标int iarcHeight=getDimensionX(arcH);/圆弧高度投影graphics.fillRoundRect(ix0,iy0,width,height,iarcWidth,iarcHeight);/带阴影矩形的画法public void draw3DRect(double x1,double y1,double x2,double y2,boolean raised) /阴影抬升或者洼陷/从用户坐标的点转换到Java AWT坐标int ix1=getX(x1);int iy1=getY(y1);int ix2=getX(x2);int iy2=getY(y2);int ix0=(ix1ix2)?ix1:ix2;/矩形左上角坐标int iy0=(iy1iy2)?iy1:iy2;int width=Math.abs(ix1-ix2)+1;/矩形宽度,单位像素int height=Math.abs(iy1-iy2)+1;/矩形高度graphics.draw3DRect(ix0,iy0,width,height,raised);/椭圆的画法(圆心坐标和两个半径)public void drawOval(double x,double y,double xr,double yr) /圆心从用户坐标转换到Java AWT坐标int ix=getX(x);int iy=getY(y);int ixr=getDimensionX(xr);/x轴半径投影到Java AWT坐标int iyr=getDimensionX(yr);/y轴半径投影int x0=ix-ixr;/椭圆外切矩形的左上角x坐标int y0=iy-iyr;/椭圆外切矩形的左上角y坐标graphics.drawOval(x0,y0,2*ixr,2*iyr);/椭圆的填充(圆心坐标和两个半径)public void fillOval(double x,double y,double xr,double yr) /圆心从用户坐标转换到Java AWT坐标int ix=getX(x);int iy=getY(y);int ixr=getDimensionX(xr);/x轴半径投影到Java AWT坐标int iyr=getDimensionX(yr);/y轴半径投影int x0=ix-ixr;/椭圆外切矩形的左上角x坐标int y0=iy-iyr;/椭圆外切矩形的左上角y坐标graphics.fillOval(x0,y0,2*ixr,2*iyr);/圆弧的画法(圆心坐标和椭圆弧两个半径,两个角度)public void drawArc(double x,double y,double xr,double yr,double startAngle,double arcAngle) /圆心从用户坐标转换到Java AWT坐标int ix=getX(x);int iy=getY(y);int ixr=getDimensionX(xr);/x轴半径投影到Java AWT坐标int iyr=getDimensionX(yr);/y轴半径投影int x0=ix-ixr;/椭圆外切矩形的左上角x坐标int y0=iy-iyr;/椭圆外切矩形的左上角y坐标int is=(int)(90-(startAngle+arcAngle);/开始角度/注意Java AWT从Y轴顺时针度量int ia=(int)arcAngle;/扇形的圆心角graphics.drawArc(x0,y0,2*ixr,2*iyr,is,ia);/扇形的填充(圆心坐标和椭圆弧两个半径,两个角度)public void fillArc(double x,double y,double xr,double yr,double startAngle,double arcAngle) /圆心从用户坐标转换到Java AWT坐标int ix=getX(x);int iy=getY(y);int ixr=getDimensionX(xr);/x轴半径投影到Java AWT坐标int iyr=getDimensionX(yr);/y轴半径投影int x0=ix-ixr;/椭圆外切矩形的左上角x坐标int y0=iy-iyr;/椭圆外切矩形的左上角y坐标int is=(int)(90-(startAngle+arcAngle);/开始角度/注意Java AWT从Y轴顺时针度量int ia=(int)arcAngle;/扇形的圆心角graphics.fillArc(x0,y0,2*ixr,2*iyr,is,ia);/折线public void drawPolyline(double x,double y,int numPoints) int ix=new intnumPoints;int iy=new intnumPoints;for(int i=0;inumPoints;i+) ixi=getX(xi);/从用户坐标点转换到Java AWT坐标iyi=getY(yi);graphics.drawPolyline(ix,iy,numPoints);/多边形public void drawPolygon(double x,double y,int numPoints) int ix=new intnumPoints;int iy=new intnumPoints;for(int i=0;inumPoints;i+) ixi=getX(xi);/从用户坐标点转换到Java AWT坐标iyi=getY(yi);graphics.drawPolygon(ix,iy,numPoints);/封闭的折线图/多边形填充public void fillPolygon(double x,double y,int numPoints) int ix=new intnumPoints;int iy=new intnumPoints;for(int i=0;inumPoints;i+) ixi=getX(xi);/从用户坐标点转换到Java AWT坐标iyi=getY(yi);graphics.fillPolygon(ix,iy,numPoints);/掌握填充的算法是重点/写字符串public void drawString(String str,double x,double y) /从用户坐标点转换到Java AWT坐标int ix=getX(x);int iy=getY(y);graphics.drawString(str,ix,iy);/获取当前Graphics类的字体public Font getFont() return graphics.getFont();/设定当前Graphics类的字体public void setFont(Font f) graphics.setFont(f);/定义一种字体:仅对window已有字体放大尺寸public Font MyFont(String name,int style,double size) int DefaultFontSize=12;if(size=0) size=1.0;/字体大小不能为负数int isize=(int)(DefaultFontSize*size);/定义字体的大小Font f=new Font(name,style,isize);/构造字体return f;/Java AWT坐标系到视图坐标系的反向转换public int getViewport(int ix,int iy)if(viewportNum=1) return 0;/默认视图double s=(double)(ix)/(double)windowWidth;double t=(double)(windowHeight-iy)/(double)windowHeight;for(int i=0;i=viewMinxi & s=viewMinyi & t=viewMaxyi) return i;return 0;/视图到用户坐标系的反向转换(x坐标)public double getUserX(int ix,int v) double t=(double)(ix)/(double)windowWidth;double x=userMinx+(t-viewMinxv)/(viewMaxxv-viewMinxv)*(userMaxx-userMinx);return x;/视图到用户坐标系的反向转换(y坐标)public double getUserY(int iy,int v) double t=(double)(windowHeight-iy)/(double)windowHeight;double y=userMiny+(t-viewMinyv)/(viewMaxyv-viewMinyv)*(userMaxy-userMiny);return y;/*线段光栅化的成员变量*protected Image image;/Java图像类的对象protected MemoryImageSource mis;/内存图像数据源protected int pixelWidth;/图像点阵的宽度(像素数)protected int pixelHeight;/图像点阵的高度(像素数)protected int pixel;/存放图像点的颜色(行优先一维存放)protected int xoffset;/像素数据窗口内X坐标的偏移protected int yoffset;/像素数据窗口内Y坐标的偏移/直线(光栅化)实数型Bresenham算法public void rasterizeDrawLine(double x1,double y1,double x2,double y2) double leftTopx,leftTopy;/从用户坐标到Java AWT坐标int ix1=getX(x1);int iy1=windowHeight-getY(y1);/到窗口下方的像素数int ix2=getX(x2);int iy2=windowHeight-getY(y2);/到窗口下方的像素数if(x1x2)leftTopx=x1;/左上角的X坐标值设为x1(用户坐标)xoffset=ix1;/窗口中的偏移量是Java AWT坐标elseleftTopx=x2;/左上角的X坐标值设为x2(用户坐标)xoffset=ix2;/窗口中的偏移量是Java AWT坐标if(y1y2)/用户坐标原点在左下,Java AWT在左上leftTopy=y2;/左上角的y坐标值设为y2yoffset=iy1;/窗口中的偏移量是Java AWT坐标else/用户坐标原点在左下,Java AWT在左上leftTopy=y1;/左上角的y坐标值设为y1(用户坐标)yoffset=iy2;/窗口中的偏移量是Java AWT坐标int dx=ix2-ix1;/取得X向的间距int dy=iy2-iy1;/取得y向的间距int adx=Math.abs(dx);/X向的间距的绝对值int ady=Math.abs(dy);/Y向的间距的绝对值pixelWidth=adx+1;/图像点阵的宽度(像素数)pixelHeight=ady+1;/图像点阵的高度(像素数)/一维数组存放图像点的颜色(行优先)pixel=new intpixelWidth*pixelHeight;for(int k=0;k0)?1:-1;/取正负号,1或者-1int sy=(dy0)?1:-1;int x=ix1;/x从ix1开始循环int y=iy1;/y从iy1开始循环if(adx=0) /说明这是平行于Y轴的直线for(int j=1;j=ady;j+) myPutPixel(x,y);/调用同类成员函数,设当前定像素颜色y+=sy;/y坐标的改变量为1或者-1个像素else if(ady=0) /说明这是平行于x轴的直线for(int i=1;iady) /直线走向贴近x轴方向double d=(double)dy/(double)dx;/直线斜率double ty=(double)y;for(int i=1;iMath.abs(ty-y-sy)y+=sy;/沿y向前进了一个像素else /直线走向贴近Y
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 开心一刻 筷子与舞板教学设计-2025-2026学年初中音乐七年级下册沪教版
- 上海市人民医院微针治疗专项技能考核
- 重庆市人民医院超声学术交流考核
- 保定市中医院特殊人群用药安全考核
- 邯郸市中医院抗衰老综合治疗考核
- 重庆市中医院早产防治规范化诊疗考核
- 忻州市中医院压力治疗技术考核
- 晋城市中医院科研诚信建设考核
- 赤峰市人民医院护理教学团队建设考核
- 邯郸市人民医院护理数据收集考核
- 安全培训仓库管理员课件
- 国家局、省局信息化数据填报管理规定
- 2025-2026学年高一上学期《学习榜样精神+做新时代好少年》主题班会课件
- 沪粤版2024九年级物理上册新教材解读课件
- 无人机培训学校管理制度建设方案
- 耗材紧急配送方案(3篇)
- 【格物致胜】2025年中国离散自动化(FA)市场白皮书
- (新版)汽车维修检验工(高级)技能鉴定考试题库(含答案)
- 建设工程工程量清单计价标准(2024版)
- 鼠疫霍乱防治指南课件
- 手外伤康复护理课件
评论
0/150
提交评论